BigQuery で JSON データを操作する際に利用できる新しい SQL 関数のご紹介
Google Cloud Japan Team
※この投稿は米国時間 2023 年 8 月 9 日に、Google Cloud blog に投稿されたものの抄訳です。
企業で生成されるデータの量は急激に増えており、その種類は、従来の構造化トランザクション データ、JSON などの半構造化データ、画像や音声などの非構造化データと多岐にわたります。データを処理するにあたり、その規模への対処に加え、このように多岐にわたる種類があることで、種類ごとに個別の処理フローが必要な場合も生じ、デベロッパーに課題をもたらしています。BigQuery で半構造化 JSON をサポートする機能の初回リリースは、そのような複雑な前処理の必要性をなくし、スキーマの柔軟性、直感的なクエリ、スケーラビリティといった構造化データが持つメリットを得られるようにするものでした。
本日、BigQuery JSON 向けの新しい SQL 関数のリリースを発表いたします。これらの SQL 関数では、コアである JSON サポートの機能と柔軟性が拡張されており、JSON データの抽出と作成、そして複雑なデータ分析を実施することがさらに簡単になります。
新しいクエリ関数を使用すると、以下のことが可能になります。
新しい JSON LAX 関数により、JSON 値からプリミティブ型(INT64、FLOAT64、BOOL、STRING)への変換が、より簡単で柔軟性の高い方法で行えます。
新しい JSON ミューテータ関数により、BigQuery で既存の JSON 値を簡単に更新、変更できます。
新しい JSON コンストラクタ関数により、BigQuery で SQL を使用して JSON オブジェクトと JSON 配列を作成できます。
これらの機能とその使用例を見てみましょう。まず、デモ用にテーブルを作成します。
これで、たとえば 30 歳を超えるユーザー全員のリストを取得することにします。テーブルの user.age を見てみると、1 つ目のレコードには JSON 数値、2 つ目には JSON 文字列、3 つ目には JSON null が含まれています。高機能の新しい LAX 関数、LAX_INT64 を使用すると、すべての型が自動的に正しく推測、処理されます。
JSON 型とプリミティブ型が完全に一致する必要がある strict 変換関数とは異なり、lax 変換関数は、一致しないデータ型の間の変換も扱います。
たとえば、次の strict 変換関数からはエラーが返されます。
一方、以下の lax 変換関数は目的の結果を返します。
さらに、JSON_REMOVE 関数を使用すると、JSON データから迅速かつ容易にフィールドを削除できます。
JSON_STRIP_NULLS を使用すると、JSON null が削除されてデータが圧縮されます。BigQuery の null 値は、パフォーマンスやストレージ費用に直接影響を与えるわけではありませんが、エクスポート時にデータサイズを削減するために利用できます。
次に、JSON データのフィールドを変更または追加する場合について見てみましょう。
このような場合は、新しい JSON_SET 関数でデータを更新できるようになりました。また、目的の結果を得るために、複数の JSON 関数を組み合わせることもできます。
たとえば、次のクエリによって、テーブルに新しいフィールド region_code が追加されます。このフィールドの値は、country フィールドの値が USA の場合は America、USA でない場合は Other となります。
最後の例として、プロパティと値のペアが含まれるテーブルがあり、そのペアを JSON オブジェクトに変換する場合を見てみましょう。新しい JSON_OBJECT コンストラクタ関数を使用すると、JSON オブジェクトを簡単に新規作成できます。
関数の完全なリスト
LAX 変換関数:
JSON コンストラクタ関数:
JSON ミューテータ関数:
お試しください
Google BigQuery は、データの分析をさらに簡単で便利なものにするために、新機能の追加を続けています。こうした新機能をご確認いただき、ぜひフィードバックをお寄せください。お寄せいただいたご意見やご感想をもとに、今後 JSON をさらに迅速かつ容易にご利用いただくための追加機能の開発を続けてまいります。
- Google Cloud、カスタマー エンジニア Diksha Gulati