2015-08-15 3 views
12

Si prega di verificare la mia comprensione di campo RIPETUTA nei seguenti esempi:Cosa significa campo RIPETUTO in Google Bigquery?

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

Questo JSON ha lo schema:

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

Ma il seguente JSON

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

ha schema:

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

È corretto?

nb: Ho provato a passare attraverso il documentation, ma non riesco a trovare alcuna spiegazione al riguardo.

risposta

14

Chiudi. Nel tuo primo esempio, author è una matrice di oggetti, che corrisponde a un record ripetuto in BQ. Così lo schema potrebbe essere:

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

La seconda coppia di dati/schema sembra buono (ma nota che lo schema generale è un array, non un oggetto, e ha bisogno di virgole tra gli elementi).

V'è una certa discussione di campi nidificati e ripetute qui: https://cloud.google.com/bigquery/docs/data?hl=en#nested

Ci sono anche alcuni oggetti di dati JSON campione qui: https://cloud.google.com/bigquery/preparing-data-for-bigquery#dataformats

ma sono d'accordo che non facciamo un buon lavoro di spiegare come quegli oggetti si associano agli schemi BQ. Mi dispiace per quello!

+0

Grazie per aver menzionato che uno schema è un array. –

+0

Ben spiegato! – Harinder