Google Cloudデータエンジニアのはんざわです。
これまではBigQueryでARRAY型とSTRUCT型のデータにはOFFSET
やORDINAL
を使って配列にアクセスする必要がありました。
ですが、2023年9月12日のアップデートでこれらを使わなくてもARRAY型やSTRUCT型にアクセスできるようになったので紹介したいと思います。
新旧のアクセス方法
従来のアクセス方法
以下のようにARRAYやSTRUCTに対し、[OFFSET(0)]
や[ORDINAL(1)]
でアクセスする必要がありました。
# 従来のARRAY型のアクセス方法
item_array[OFFSET(0)]
item_array[ORDINAL(1)]
# 従来のSTRUCT型のアクセス方法
item_struct[OFFSET(0)]
item_struct[ORDINAL(1)]
新しいアクセス方法
今回のアップデートで配列の要素の番号を[]
で直接指定することが可能になりました。
# 新しいARRAY型のアクセス方法
item_array[0]
# 新しいSTRUCT型のアクセス方法
item_struct[0]
自分はPythonが一番使い慣れており、Pythonと同じ書き方ができるようになったので地味ですが嬉しいアップデート内容でした。
実際に試してみる
試しにARRAY型のデータを作成し、アクセスしてみました。
WITH array_table AS (
SELECT
["apple", "banana", "remon"] AS fruits_array
)
SELECT
fruits_array[0],
fruits_array[1],
fruits_array[2]
FROM
array_table
+-------+--------+-------+
| f0_ | f1_ | f2_ |
+-------+--------+-------+
| apple | banana | remon |
+-------+--------+-------+
最後に
今回はOFFSET
を使わずにARRAY型にアクセスする方法を紹介しました。
前述した通り、Pythonライクな書き方ができるようになったので嬉しいアップデートでした。是非活用してみて下さい。