2016年9月末のリリーズでBigQueryにいろいろ機能が追加されました
個人的に便利そうだな、と思ったものを紹介します
標準SQL (Standard SQL)
BigQueryでは独自のSQLを使っていたのですが、標準のSQLに対応しました(6月にベータリリースされていたのがベータでなくなりました)
ずっと古い方のSQLを使っていたので、移行して慣れるのが大変ですが、移行用のドキュメントがあります
WITH句
標準SQLではサブクエリに名前を付けて参照できるようになるので、何段もネストしてわけがわからなくなるのから開放されます
WITH サブクエリの名前 AS ( サブクエリ ) SELECT * FROM サブクエリの名前 WHERE MOD(`id`, 2) = 0
UDF(User-Defined Functions)
前からJavaScriptでユーザー定義関数を書くことができて、記法がわかりづらかったのですが、標準SQLではだいぶ書きやすくなりました
CREATE TEMPORARY FUNCTION timesTwo(x FLOAT64) RETURNS FLOAT64 LANGUAGE js AS """ return x*2; """;User-Defined Functions | BigQuery Documentation | Google Cloud Platform
これでJavaScriptの強力な機能をBigQuery内から使うことができるようになります
たとえば、Legacy SQLの方にはJSONから値を取り出すJSON_EXTRACT_SCALAR()という関数があったのですが、今の標準SQLにはなくなっていて代わりにUDFを使うことができます
INSERT, UPDATE, DELETE
今までBigQueryでは基本的にデータの追加だけで、UPDATEやDELETEなどのテーブル内の更新操作は許されていなかったのですが、こういった操作ができるようになります(標準SQLのみ。ベータリリース)
UPDATE table1 SET col1 = 1 WHERE col1 in (SELECT field1 from table2)Data Manipulation Language | BigQuery Documentation | Google Cloud Platform
ただしUPDATE/DELETEできるのは1日に付き、テーブルごとに48回、プロジェクトごとに500回とかなり制限されているので、頻繁に更新するような用途では使えそうにありません
クエリの共有
クエリをURLで共有できるようになりました
公開範囲はパブリックかプロジェクト内かを選べます
「Save Query」クエリで保存すればシェア用のURLを発行できるようになります