2015-08-15 11 views
12

proszę sprawdzić moje rozumienie dziedzinie powtórzony w poniższych przykładach:Co oznacza pole REPEATED w Google Bigquery?

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

Ten JSON ma schematu:

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

ale następujący JSON

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

ma schematu:

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

Czy to prawda?

nb: Próbowałem przejść przez documentation, ale nie mogę znaleźć żadnych wyjaśnień na ten temat.

Odpowiedz

14

Zamknij. W pierwszym przykładzie, author jest tablicą obiektów, która odpowiada powtarzającemu się rekordowi w BQ. Więc schemat będzie:

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

Twoja druga para danych/schematu wygląda dobrze (ale należy pamiętać, że ogólny schemat jest tablicą, a nie przedmiot, a to wymaga przecinki między elementami).

Istnieje pewna dyskusja pól zagnieżdżonych i powtarzanych tutaj: https://cloud.google.com/bigquery/docs/data?hl=en#nested

Istnieją również próbka danych JSON obiektów tutaj: https://cloud.google.com/bigquery/preparing-data-for-bigquery#dataformats

Ale zgadzam się, że nie robią dobrą robotę wyjaśniając jak te obiekty są mapowane na schematy BQ. Przepraszam za to!

+0

Dzięki za wzmianka, że ​​schemat jest tablicą. –

+0

Dobrze wyjaśnione! – Harinder