下記のような形式のオブジェクトをBigQueryに入れたい。(オブジェクトの配列を含んでいる)
{
"id": "1",
"params": [
{
"key": "key1",
"values": [
"val1",
"val2"
]
},
{
"key": "key2",
"values": [
"val1",
"val2"
]
}
]
}
フィールドの定義はどのようにすればよいか。
フィールド定義
GCPのWebコンソール上での設定を想定している。
Name | Type | Mode |
---|---|---|
id | STRING | REQUIRED |
params | RECORD | REPEATED |
params.key | STRING | REQUIRED |
params.values | STRING | REPEATED |
params.*
をWebコンソールから定義する際は、params
を定義した箇所のRECORD
の右側の+
から追加する。
RECORD型
「1つ以上の他のフィールドのコレクション」(https://cloud.google.com/bigquery/data-types?hl=ja)
標準SQLでは、「構造体型」になっている。
https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types?hl=ja#struct-type
REPEATED
繰り返しフィールド。(https://cloud.google.com/bigquery/docs/legacy-nested-repeated?hl=ja)
標準SQLでは、「配列型(Array)」になっている。
https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types?hl=ja#array-type
繰り返しフィールドを二つ以上もつ場合、そのままSELECT * FROM table_name
などとすることはできず、フラット化などを行う必要がある。
下記のエラーが発生する。
Error: Cannot output multiple independently repeated fields at the same time.