2015-08-15 17 views
12

Vui lòng kiểm tra sự hiểu biết của tôi về trường lặp lại trong các ví dụ sau:Trường REPEATED trong Google Bigquery có nghĩa là gì?

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

JSON này có schema:

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

Nhưng JSON sau

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

có schema:

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

Điều này có đúng không?

nb: Tôi đã cố gắng xem qua số documentation, nhưng không thể tìm thấy bất kỳ giải thích nào về điều này.

Trả lời

14

Đóng. Trong ví dụ đầu tiên của bạn, author là một mảng các đối tượng, tương ứng với một bản ghi lặp lại trong BQ. Vì vậy, lược đồ sẽ là:

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

Cặp dữ liệu/lược đồ thứ hai của bạn có vẻ tốt (nhưng không phải là đối tượng và cần dấu phẩy giữa các phần tử).

Có một số cuộc thảo luận về các trường lồng nhau và lặp đi lặp lại ở đây: https://cloud.google.com/bigquery/docs/data?hl=en#nested

Ngoài ra còn có một số dữ liệu JSON mẫu vật ở đây: https://cloud.google.com/bigquery/preparing-data-for-bigquery#dataformats

Nhưng tôi đồng ý chúng ta không làm một công việc tốt trong việc giải thích cách các đối tượng đó ánh xạ tới các lược đồ BQ. Xin lỗi vì điều đó!

+0

Cảm ơn bạn đã đề cập rằng lược đồ là một mảng. –

+0

Được giải thích rõ! – Harinder