BigQuery の使いやすい SQL 機能で明るい未来を
Google Cloud Japan Team
※この投稿は米国時間 2021 年 6 月 30 日に、Google Cloud blog に投稿されたものの抄訳です。
6 月は夏至の月であり、(少なくとも北半球では)1 年のうちで最も日照時間が長くなります。太陽が空の長旅を楽しんでいるこの時期に、BigQuery チームはユーザー フレンドリーな SQL の新機能を発表できることをとても嬉しく思います。
これらの新機能には「強力な分析機能」、「柔軟な列」、「SQL による安全性」という 3 つのテーマがあります。
強力な分析機能(継続)
先月、QUALIFY による分析関数の高度なフィルタリングや、PIVOT と UNPIVOT を使用した集計による列のピボットといった強力な分析機能を発表しました。これからも価値ある分析機能を引き続き提供してまいりますが、今月は、テーブル関数を使用してビジネス ロジックをユーザー定義関数でエンコードできるようになります。
テーブル関数(プレビュー)
BigQuery ユーザーは、多くの場合、ユーザー定義関数(UDF)を使用してビジネス ロジックを永続化および共有し、BigQuery の SQL 機能を拡張しています。UDF は、入力としてスカラー引数を受け取り、出力としてスカラー値を計算します。ただ、多くのお客様に求められているのは、テーブルを出力できる関数をサポートする機能です。
この度、ついに BigQuery がテーブル値関数(TVF)として知られるテーブル関数をサポートするようになったことをお知らせいたします。これらの関数は、単一のスカラー値ではなくテーブル全体を出力するため、アナリストの SQL ツールキットとして非常に汎用性の高いツールとなっています。
ここでは、bigquery-public-data.usa_names.usa_1910_current を使用して、考えられるユースケースをご紹介します。
柔軟な列
刻々と変化するビジネスニーズに対応するため、BigQuery では、列のデータ型、説明、エイリアスをより詳細かつ柔軟に管理するための機能を提供します。
パラメータ化されたデータ型(プレビュー)
ビジネスデータでは、ビジネスルールを適用するために、データ型にさらなる精度が求められる場合が多々あります。これを受けて、BigQuery の標準データ型では、これらのデータ型に対する追加のパラメータ指定がサポートされており、より的を絞ったビジネスデータのルール適用が可能です。
たとえば、BigQuery を使用して ISO 国コードを 2 桁の文字として保存するとします。このユースケースでは、この列のレコードが最大 2 文字であることを確認するというビジネス要件があります。このようなビジネスケースに対応するために、BigQuery ではパラメータ化されたデータ型がサポートされるようになりました。これにより、この文字列の列と以下のデータ型に、最大長のパラメータを設定できます。
以下では、credit_card_number のフィールドを STRING として格納したテーブルを作成する事例をご紹介します。パラメータ化されたデータ型では、フィールドの長さを 16 文字に制限して、クレジット カード番号の入力に余分な文字が含まれないようにすることができます。
柔軟なデータ型のキャスティングとフォーマット(一般提供)
時間データは、データ分析のワークフローで常に使用されます。これらの時間データを必要な型や形式にラングリングすることは、BigQuery のお客様にとって重要なユースケースです。
たとえば、アナリストは、特定のフォーマット(YYYY/MM/DD)を適用しながら、時間データ型(DATE)を STRING データ型に変換する必要がある場合があります。このユースケースでは、データ型の変換とフォーマットの変更の両方が必要です。CAST のような既存の BigQuery 機能は、日付関数や日時関数とともに、現在このようなユースケースで使用されています。これらに加えて、柔軟なデータ型のキャスティングとフォーマットをサポートするために、BigQuery チームは ANSI 標準に沿った新機能を発表します。
まず、CAST 関数内に FORMAT を含め、STRING を NUMERIC / BIGNUMERIC に変換する機能が追加されます。
CAST の FORMAT 句は、次のデータ型で利用できます。
文字列型
日付型
日時型
時刻型
タイムスタンプ型
数値型
バイト型
PARSE_NUMERIC(STRING から NUMERIC に変換)
PARSE_BIGNUMERIC(STRING から BIGNUMERIC に変換)
次に、数値データ型 INT64 で、さまざまな新しい INT64 エイリアス型がサポートされるようになります。これにより、SQL アナリストは、BYTEINT、TINYINT、SMALLINT、BIGINT、INT、INTEGER を BigQuery の INT64 数値データ型のエイリアスとして使用できます。
さらに、ST_GEOGFROM を使用して STRING / BYTES データ型を GEOGRAPHY データ型に変換する新しい関数が追加されます。 ST_GEOGFROMWKB や ST_GEOGFROMTEXT のように、ユーザーが入力形式を指定する必要がある既存の関数とは異なり、ST_GEOGFROM は入力形式を自動的に検出できます。
列の説明の変更(一般提供)
BigQuery はこれまで UI、CLI、API で利用できる多くのツールを提供してきましたが、多くの管理者が SQL を使用したインターフェースを好んでいることは周知の事実です。先月、ALTER COLUMN DROP NOT NULL 制約をリリースしました。これにより、管理者は BigQuery の列から NOT NULL 制約を削除できます。今月は、ALTER COLUMN DDL の機能を追加します。
ALTER COLUMN SET OPTIONS を使用することで、指定した列に説明を追加できます。
以下の例では、1 つのユースケースで 2 つの ALTER COLUMN 機能を組み合わせて使用しています。
SQL による安全性の確保
多くの管理者は、UI、CLI、API を使用してテーブル、データセット、ビューへのアクセスをプロビジョニングするよりも、使い慣れた SQL インターフェースを好みます。それを受けて今回、BigQuery で SQL を使用して、テーブル、データセット、ビューのアクセス権限をプロビジョニングおよびレビューできるようになりました。
テーブル、データセット、ビューへのアクセス権の付与と取り消し(一般提供)
今回、BigQuery の標準 SQL に GRANT と REVOKE の 2 つの SQL 機能が追加されました。これらの機能により、管理者はテーブル、データセット、ビューに対するユーザーのアクセス権限を追加および削除できます。
INFORMATION_SCHEMA によるオブジェクト権限の確認(プレビュー)
INFORMATION_SCHEMA.OBJECT_PRIVILEGES は、テーブル、データセット、ビューに設定されている明示的なオブジェクト権限を示します(これらは BQ CLI で返される権限セットと同じです)。この使い慣れた SQL インターフェースにより、管理者は適切なユーザーが適切なオブジェクトにアクセスできるか確認できます。
以下の例では、これらの 3 つの SQL 機能を組み合わせて、データセットへのアクセスをプロビジョニングし、特定のデータセットに対する権限が正しいかどうかを確認しています。
夏至は、さまざまな文化や伝統において、世界各地で祝われています。BigQuery チームもまた、この夏至の輝きのように、お客様のデータ分析のワークフローをまばゆいものにできるよう今後も支援していきたいと思っております。BigQuery について詳しくは Google のウェブサイトをご確認ください。BigQuery サンドボックスを無料ですぐにお試しいただけます。
-Google Cloud プロダクト マネージャー Dan Peng
-Google Cloud プロダクト マネージャー Jagan R. Athreya