2015-08-15 2 views
12

Пожалуйста, проверьте мое понимание повторяющееся поле в следующих примерах:Что означает ПОВТОРНОЕ поле в Google Bigquery?

{ 
    "title": "History of Alphabet", 
    "author": [ 
     { 
      "name": "Larry" 
     }, 
    ] 
} 

Это JSON имеет схему:

[ 
    { 
     "name": "title", 
     "type": "STRING" 
    }, 
    { 
     "name": "author", 
     "type": "RECORD", 
     "fields": [ 
      { 
       "name": "name", 
       "type": "STRING" 
      } 
     ] 
    } 
] 

Но следующий JSON

{ 
    "title": "History of Alphabet", 
    "author": ["Larry", "Steve", "Eric"] 
} 

имеет схему:

[ 
    { 
     "name": "title", 
     "type": "STRING" 
    }, 
    { 
     "name": "author", 
     "type": "STRING", 
     "mode": "REPEATED" 
    } 
] 

Это правильно?

nb: Я попытался пройти через documentation, но не могу найти объяснения по этому поводу.

ответ

14

Закрыть. В вашем первом примере author представляет собой массив объектов, что соответствует повторной записи в BQ. Таким образом, схема будет выглядеть так:

[ 
    { 
     "name": "title", 
     "type": "STRING" 
    }, 
    { 
     "name": "author", 
     "type": "RECORD", 
     "mode": "REPEATED", <--- NOTE! 
     "fields": [ 
      { 
       "name": "name", 
       "type": "STRING" 
      } 
     ] 
    } 
] 

Ваша вторая пара данных/схема выглядит хорошо (но обратите внимание, что общая схема представляет собой массив, не является объектом, и она нуждается запятые между элементами).

Существует некоторая дискуссия гнездовых и неоднократных полей здесь: https://cloud.google.com/bigquery/docs/data?hl=en#nested

Есть также объекты некоторые примеры JSON данные здесь: https://cloud.google.com/bigquery/preparing-data-for-bigquery#dataformats

Но я согласен, мы не делаем хорошую работу, объясняя как эти объекты сопоставляются с схемами BQ. Извини за это!

+0

Благодарим за внимание, что схема представляет собой массив. –

+0

Хорошо объяснил! – Harinder

Смежные вопросы