【アップデート情報】BigQueryでOFFSETを使わずに配列にアクセスできるようになりました

2023.09.13

Google Cloudデータエンジニアのはんざわです。
これまではBigQueryでARRAY型とSTRUCT型のデータにはOFFSETORDINALを使って配列にアクセスする必要がありました。

ですが、2023年9月12日のアップデートでこれらを使わなくてもARRAY型やSTRUCT型にアクセスできるようになったので紹介したいと思います。

September 12, 2023

新旧のアクセス方法

従来のアクセス方法

以下のように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ライクな書き方ができるようになったので嬉しいアップデートでした。是非活用してみて下さい。