2020 年の BigQuery リリースまとめ

2020.12.24

こんにちは、データアナリティクス事業本部のみかみです。

本エントリは、クラスメソッド BigQuery Advent Calendar 2020 の 24 日目のエントリです。 いよいよ大詰め! 明日 25 日のアドベントカレンダー終了まで、弊社クラスメソッド データアナリティクス事業本部のメンバーで、Google BigQuery に関する記事を紡いでいこうと思います。

年の瀬も押し迫ってまいりましたがいかがお過ごしでしょうか? 弊社 クラスメソッドは本日から冬休みです(シガヤー獲りに行くぞ!w

BigQuery は今年も進化が止まりません! 2020 年にどんなリリースがあったのか、年末ゆっくりお酒の肴にでもご覧いただけるとうれしいです。

2020 年 BigQuery リリース一覧

BigQuery のリリースノートから、今年 2020 年のリリース項目をまとめました。 アルファ版、ベータ版、GA などのリリース段階の定義については、Product launch stages をご参照ください。

リリース日 内容 関連リンク
01/14 BigQuery Reservations がロンドン(europe-west2)リージョンでサポート開始 Reservations の概要
01/16 Magnitude Simba JDBC、ODBC ドライバの新バージョンリリース BigQuery の Magnitude Simba ドライバ
01/22 BigQuery Storage API が全リージョンでサポート開始 データセットのロケーション
01/24 BigQuery がソウル(asia-northeast3)リージョンでサービス開始 リージョンのロケーション
02/11 Magnitude Simba ODBC ドライバの新バージョンリリース BigQuery の Magnitude Simba ドライバ
02/13 BigQuery サンドボックス機能が GA BigQuery サンドボックスの使用
02/14 ジョブ関連の INFORMATION_SCHEMA がベータ版リリース INFORMATION_SCHEMA を使用したジョブ メタデータの取得
02/18 整数範囲パーティション分割テーブルのサポートが GA 整数範囲パーティション分割テーブルの作成と使用
パーティション分割テーブルの概要
02/24 BigQuery がソルトレイクシティ(us-west3)リージョンでサービス開始 リージョンのロケーション
02/26 Flex Slots がベータ版でサポート開始 Flex Slots: 短期間のコミットメント
Reservations の概要
DML の実行数制限廃止 BigQuery で DML が無制限で利用可能に
03/02 BigQuery Storage API が GA BigQuery Storage API overview
ORC、Parquetフォーマットの GCS データへのクエリのサポートが GA Cloud Storage データのクエリ
GCS ファイルの Hive パーティショニングレイアウトのサポートが GA 外部パーティション分割データの読み込み
外部でパーティションに分割されたデータのクエリ
監査ログでアクセス制限付きリソースへの読み取り成功時に発信者 ID とリソース名の表示をサポート Caller identities and resource names
監査ログの呼び出し元 ID
03/27 列レベルのアクセス制御がベータ版リリース BigQuery の列レベルのセキュリティの概要
03/30 BigQuery スクリプトとストアドプロシージャが GA 標準 SQL のスクリプト
CREATE PROCEDURE ステートメント
03/31 BigQuery Reservations 関連の INFORMATION_SCHEMA がアルファ版リリース INFORMATION_SCHEMA を使用した予約メタデータの取得
04/02 BigQuery Reservations が全リージョンでサポート開始 Reservations の概要
04/08 マテリアライズドビューがベータ版リリース マテリアライズド ビューの概要
04/09 スケジューリングクエリが bigquery.jobs.create 権限で設定可能に 必要な権限
04/16 BigQuery Reservations が GA Reservations の概要
2020/04 末頃からデータセット関連の INFORMATION_SCHEMA でリージョンごとの情報取得をサポート予定 INFORMATION_SCHEMA を使用したデータセットのメタデータの取得
04/27 BigQuery がラスベガス(us-west4)リージョンでサービス開始 サポートされるリージョン
04/30 BigQuery Data Transfer Service が台湾(asia-east1)リージョンでサービス開始 リージョンのロケーション
05/01 JSON_EXTRACT_ARRAY 関数のサポート開始 JSON_EXTRACT_ARRAY
ORDER BY 句で NULLS FIRST と NULLS LAST のサポートを開始 ORDER BY 句
05/08 BigQuery Streaming が GA ストリーミング挿入
05/12 Magnitude Simba ODBC ドライバの新バージョンリリース BigQuery の Magnitude Simba ドライバ
05/13 Magnitude Simba JDBC ドライバの新バージョンリリース BigQuery の Magnitude Simba ドライバ
05/20 BigQuery 10周年! データと歩んだ 10 年間を祝して: BigQuery 10 周年
Cloud SQL 連携クエリが GA Cloud SQL 連携クエリ
時間単位の列パーティション分割テーブルのサポートがベータ版リリース 時間単位の列パーティション分割テーブルの作成と使用
動的 SQL が全リージョンでベータ版リリース EXECUTE IMMEDIATE
Trial Slots が US と EU のマルチリージョンで利用可能に Trial Slots(プロモーション)
05/21 BigQuery Storage API がキャッシュテーブルの制限なし読み取りをサポート BigQuery Storage API overview
06/02 bq コマンドによる Slot の購入が可能に Reservations を使用したワークロード管理
bq mk --capacity_commitment
GIS 関数 ST_Simplify のサポート開始 ST_SIMPLIFY
標準 SQL のビュー定義でプロジェクト修飾子なしの参照が可能に Method: tables.insert
CREATE VIEW ステートメント
標準 SQL のユーザー定義関数でテーブルとビューの参照が可能に 標準 SQL ユーザー定義関数
06/04 テーブル ACL がベータ版リリース テーブルへのアクセス制御の概要
06/08 BigQuery がジャカルタ(asia-southeast2)リージョンでサービス開始 サポートされるリージョン
06/09 パーティション化されていないテーブルのクラスタリングがサポート開始 クラスタ化テーブルの概要
06/16 ジョブの INFORMATION_SCHEMA が GA INFORMATION_SCHEMA を使用したジョブ メタデータの取得
06/26 INFORMATION_SCHEMA のリージョン修飾子がベータ版リリース 構文
リージョン修飾子
8月中旬からリージョン修飾子なしのデータセット関連 INFORMATION_SCHEMA はデフォルトで米国のマルチリージョンの情報を返すようになる予定 リージョン修飾子
06/29 Flex Slots が GA コミットメント プラン
BigQuery の SLA が月間 99.99 %以上に更新 BigQuery Service Level Agreement (SLA)
07/06 Magnitude Simba ODBC ドライバの新バージョンリリース BigQuery の Magnitude Simba ドライバ
07/13 標準 SQL で ASSERT がサポート開始 標準 SQL のデバッグ ステートメント
07/16 GIS 関数 ST_CONVEXHULL と ST_DUMP のサポート開始 ST_CONVEXHULL
ST_DUMP
07/24 BigQuery Data Transfer Service がモントリオール(northamerica-northeast1)、フランクフルト(europe-west3)、ムンバイ(asia-south1)、ソウル(asia-northeast3)リージョンでサービス開始 リージョンのロケーション
07/27 INFORMATION_SCHEMA のストリーミングメタデータ参照がアルファ版リリース INFORMATION_SCHEMA を使用したストリーミング メタデータの取得
07/31 Magnitude Simba ODBC ドライバの新バージョンリリース BigQuery の Magnitude Simba ドライバ
08/06 BigQuery がオレゴン(us-west1)、ベルギー(europe-west1)、オランダ(europe-west4)リージョンでサービス開始 リージョンのロケーション
08/11 定額料金が100スロットから利用可能に 定額料金
08/13 エクスポートデータ量のデフォルト上限が 1 日あたり 10TB から 50TB に変更 エクスポート ジョブ
08/18 Reservations でプロジェクトにオンデマンド料金を割り当てることが可能に プロジェクトを None に割り当てる
08/18 ON/USING が連続する場合の括弧が省略可能に
08/24 スケジューリングクエリのサービスアカウント認証が GA サービス アカウントの使用
08/25 INFORMATION_SCHEMA でタイムスライスごとのジョブメタデータ参照が可能に INFORMATION_SCHEMA を使用したタイムスライスごとのジョブのメタデータの取得
08/26 BigQuery Reservations の INFORMATION_SCHEMA が GA INFORMATION_SCHEMA を使用した予約メタデータの取得
08/31 Magnitude Simba JDBC ドライバの新バージョンリリース BigQuery の Magnitude Simba ドライバ
09/11 BQ.JOBS.CANCEL システムプロシージャを使用したジョブキャンセルをサポート ジョブをキャンセルする
09/17 BigQuery Data Transfer Service がロサンゼルス(us-west2)、サンパウロ(southamerica-east1)、サウスカロライナ(us-east1)、香港(asia-east1)、大阪(asia-northeast2)リージョンでサービス開始 リージョンのロケーション
09/18 2020 年後半から全ての事前定義ロールで自身のジョブの情報取得やキャンセルが可能になる予定 BigQuery の事前定義された IAM のロール
09/21 時間単位の列パーティション分割テーブルで以下のサポートが GA

  • 時間単位、月単位、年単位の粒度変更
  • DATETIME 型カラムのパーティション列指定
時間単位の列パーティション分割テーブルの作成と使用
10/01 テーブルレベルのアクセス制御サポートが GA テーブルへのアクセス制御の概要
10/06 認可済み UDF が GA 認可済みの UDF
Cloud Console の Data Catalog の検索とオートコンプリートがベータ版リリース Cloud Console の概要
10/14 動的 SQL が GA EXECUTE IMMEDIATE
標準 SQL でサポート関数が追加 標準 SQL の文字列関数
サポートされる SQL 構文が追加 データ定義言語ステートメントの使用
標準 SQL のその他のステートメント
データ操作言語の構文
標準 SQL で日付算出演算子のサポートを開始 日付算術演算子
データセット、テーブル、ビュー、 ルーチンに関する INFORMATION_SCHEMA が GA BigQuery INFORMATION_SCHEMA の概要
テーブル名の Unicode サポートを開始 テーブルの命名
クエリで重複するエイリアスの利用が可能に 重複するエイリアス
10/19 監査ログでプロジェクト間アクセス時の発信者 ID とリソース名の表示条件を変更 Caller identities and resource names
10/22 GIS 関数 ST_GEOGFROMGEOJSON と ST_GEOGFROMTEXT で make_valid パラメーターのサポートを開始。ST_GEOGFROMTEXT 関数で planar のサポートも開始(ベータ版) ST_GEOGFROMGEOJSON
ST_GEOGFROMTEXT
Magnitude Simba ODBC ドライバの新バージョンリリース BigQuery の Magnitude Simba ドライバ
10/26 標準 SQL で SUBSTRING 関数のサポートが GA SUBSTRING
11/17 列レベルのアクセス制御が GA BigQuery の列レベルのセキュリティの概要
12/10 Magnitude Simba JDBC、ODBC ドライバの新バージョンリリース BigQuery の Magnitude Simba ドライバ
12/21 標準 SQL で BigNumeric 型のサポートをプレビュー開始 BIGNUMERIC

すごい数ですね。。 次のセクションから、気になるリリースについてピックアップしてみます!

BigQuey の SLA

2020/06/29 これまで 99.9% だった BigQuery の SLA が、99.99% に更新されました!

今年 7月~9月に開催された「Google Cloud Next ’20: OnAir」でも発表されていましたが、これ、すごいことですよね@@!

99.9% から 99.99% に、という字面だけ見るとあまりピンときませんが、時間換算してみるとそのすごさが分かります! SLA が 99.9% の場合、1か月のダウンタイムが 43 分以内であることが保証されるわけです。 これでも十分すごいと思いますが、99.99% だと何分になるでしょうか? 1/10 になるわけなので、答えは 4.3 分です! 1か月にたった 4.3 分(258 秒)のダウンタイムしか発生しないということで、可用性がおそろしく上がりました!

他にも「Google Cloud Next ’20: OnAir」では、BigQuery のパフォーマンス向上についても言及されていました。 1 ペタバイトのデータデータセットに対して SQL を実行するのにかかる時間が、2016 年には約 6 分だったそうです。これは、1 ペタバイトのデータセットのデータ全体をスキャンしていたからだとか。 それが、2 年後の 2018 年には、同じ SQL でもスキャンデータ量が約 400 メガバイトになり、実行時間も約 2 分に短縮されたそうです。 さらに、現在 2020 年には、同じ SQL で スキャンデータ量も 2018 年と同じ 400 MB ですが、結果が返ってくるまでに必要な時間はなんと約 4 秒! チューニング不要でこの高パフォーマンス、さすが BigQuery さまですなーv

「Google Cloud Next ’20: OnAir」のセッション動画は Youtube でも公開されているので、是非ご覧ください。

また、弊社ブログ Developers.IO でもセッションレポートを公開しておりますので、是非合わせてご覧ください!

DML 制限解除

BigQuery ではこれまで UPDATEDELETE などの DML を実行できる回数が、1 日あたり 1000 件までという制限がありました。

それが、今年 2020 年初旬に、無制限になりました!(キタ━━━━(゚∀゚)━━━━!!

個人やアドホックで使用する分にはこれまでの 1000 件でもそうそう上限には達しないかもしれませんが、システムで利用する場合、リカバリ作業などが発生する可能性も考慮すると、やはりこれまでの回数制限は不便ですよね。。 回数制限解除により、より使いやすくなったのではないかと思います!v

使える SQL 構文や標準関数の追加と INFORMATION_SCHEMA の GA

リリース当時はレガシー SQL しか利用できなかった BigQuery ですが、2016/06/02 に標準 SQL のサポートが開始され、同年 2016/09/29 には DML のサポートも発表されました。

その後も徐々に利用可能な SQL 構文や標準関数が追加され、今では他のデータベースとほぼ同等の使い心地で使えるようになった BigQuery ですが、 2020/10/14 にも、新しくサポートされる SQL 構文や標準関数が増え、各種メタデータを参照できる INFORMATION_SCHEMA も GA になりました。

新しくサポートされるようになった SQL 構文は以下です。

EXPORT DATA でテーブルデータをエクスポートできるようになったこと、ALTER TABLE ADD COLUMN で SQL からテーブルカラムの追加ができるようになったことなど、より使いやすく進化してます。 また、これまではテーブルの全データを削除する場合、新しく格納したいデータを全件洗替で INSERT したり、DELETE FROM ... 構文で WHERE True を指定する必要があったり、実現できないことはなくとも若干使いにくかった全件削除ですが、TRUNCATE TABLE 構文がサポートされるようになりました!

新しく追加された標準関数は以下の通りです。

REGEXP_XX 系の正規表現関数や LEFTRIGHT 関数が増えたことで、これまで以上に SQL によるデータ整形、分析作業が楽になるのではないかと思います。 また、LAST_DAY 関数と合わせて日付データの算術演算子サポートも開始され、日時データも SQL で扱いやすくなりました。

INFORMATION_SCHEMA では以下が GA になりました。

データセットやテーブルなどのメタデータを 参照することができる INFORMATION_SCHEMA システムビューですが、BigQuery では 2019/02/04 にベータ版リリースされました。

2020 年も続々と INFORMATION_SCHEMA に関するリリースが繰り返され、ほとんどの INFORMATION_SCHEMA が今年 GA になりました! ただし、ストリーミングメタデータ関連の INFORMATION_SCHEMA はまだ ベータ版とのことなのでご注意ください。 これで、INFORMATION_SCHEMA に対する SQL の実行にクエリ料金がかからなくなれば言うことなしですねー。。(期待してます!><v

笑顔になるユーザーが増える、うれしいリリースでしたv

BigQuery サポートリージョン

東京 (asia-northeast1) リージョンでは、2018/04/17 から BigQuery が使えるようになりました。

今年も以下のリージョンで、新しく BigQuery が使えるようになりました。

  • 2020/01/24:ソウル(asia-northeast3)
  • 2020/02/24:ソルトレイクシティ(us-west3)
  • 2020/04/27:ラスベガス(us-west4)
  • 2020/06/08:ジャカルタ(asia-southeast2)
  • 2020/08/06:オレゴン(us-west1)、ベルギー(europe-west1)、オランダ(europe-west4)

今後もサポートリージョンはどんどん増えてくるのではないかと思います!

サンドボックス機能

2020/02/13 から、BigQuery でサンドボックスが利用できるようになりました。 サンドボックスとは、BigQuery を無料で試せる機能です!

支払い情報の登録なしに、ひと月当たりストレージ料金 10GB、クエリ料金 1TB まで無料で利用できます。 東京 (asia-northeast1) リージョンで換算すると、アクティブストレージ料金で $0.23、オンデマンドのクエリ料金で $6.00 に相当する無料枠で、この容量の範囲であれば、課金設定後の本格利用時でも毎月無料で利用できます。

BigQuery といえば「お高い」「事故ったら破産」なコストに対するマイナスイメージが強かった印象ですが、このサンドボックス機能で安心して使いはじめられるようになったのではないかと思います。

定額料金の改良と BigQuery Reservations

BigQuery のコストに関する悪いイメージを払拭するリリースとして、もう一つ、定額料金最小スロット数の引き下げと Flex Slots の追加という定額料金の改良がありました。

2020/08/11 に、これまで最小 1000 スロット単位でしか契約できなかった定額料金が、100 スロットから利用できるようになりました!

スロットとは、BigQuery の処理能力の単位で、仮想 CPU と同じようなものと考えれば分かりやすいかと思います。 BigQuery で SQL を実行すると、裏側では複数のスロットで並列分散処理されます。 複雑な SQL 実行や SQL の同時実行数が多くなると並列処理の数が増えるので、スロット数が多いほどパフォーマンスが良くなります。

定額料金では、この使えるスロット数=並列処理の数に料金を支払うことで、SQL の実行にかかるクエリ料金が定額で利用できます。 これまでスロット数の契約は 1 ヶ月単位でしたが、2020/06/29 に 60 秒単位でスロット数を契約できる Flex Slots が GA になりました!

また、定額料金で契約したスロットは、2020/04/16 に GA になった BigQuery Reservations で、プロジェクトごとに必要なスロット数を割り当てたり、特定のプロジェクトは定額料金ではなくオンデマンド料金を利用するように設定できるようになりました。

ミッションクリティカルなデータ処理量の多いプロジェクトには定額料金で多くのスロットを割り当てて、 アドホック分析やスモールスタートのプロジェクトにはスロットを少なめに割り当てる、またはオンデマンド料金を利用するといった柔軟な対応ができるようになりましたv

パーティショニングとクラスタリング

SQL 実行時にスキャン量を抑えることで、パフォーマンス、コストともに向上することができます。 テーブルにパーティショニングやクラスタリングを定義しておくと、実行する SQL によってはスキャン量を削減することができます。 また、BigQuery のストレージ料金は、通常のアクティブストレージに対して 90 日以上使用していない長期保存ストレージだと約 1/2 の料金で済み、長期保存ストレージはパーティション単位で適用されます。 パフォーマンスおよびコスト管理を考えた場合、テーブルのパーティショニングやクラスタリングは非常に重要です。

2020 年、パーティショニングテーブル関連では以下のリリースがありました。

  • 2020/02/18:整数範囲パーティション分割テーブル GA
  • 2020/05/20:時間単位の列パーティション分割テーブルのベータ版リリース
  • 2020/06/09:パーティション化されていないテーブルのクラスタリングをサポート
  • 2020/09/21:時間単位の列パーティション分割テーブルをサポート

BigQuery ではこれまで、データ取込日時による分割しかサポートされていませんでした。 データ取り込み時にシステム側で _PARTITIONTIME というダミーカラムをテーブルに追加し、そのカラム値を元にテーブルデータをパーティショニングする方法です。

それが、パーティショニング単位にテーブルの整数カラムや日時カラムを指定できるようになったことにより、より要件に合ったテーブルパーティショニングを選択できるようになり、より便利になりました。

また、以前からパーティショニングと合わせてテーブルデータをさらに細かい粒度に分割し並べ替えるクラスタリングを利用することができましたが、2020/06/09 には、パーティション分割していないテーブルにもクラスタリングが指定できるようになりました。

パーティショニングは分割データ量が少ないとパフォーマンスが出なかったり、指定できるパーティション数に上限があるので、 パーティショニングなしでクラスタリングを利用できるようになったことにより、より柔軟なパフォーマンス&コスト管理ができるようになりました。

さらに 2020/03/02 から、GCS ファイルの Hive パーティション分割レイアウトがサポートされるようになりました。

Hive パーティションレイアウトで配置された GCS ファイルを外部パーティショニングテーブルとして定義しておけば、BigQuery テーブルのパーティショニング同様、必要なパーティションのデータのみスキャンすることができるので、パフォーマンスやコストが最適化できます。 また Hive パーティション分割は他の多くの DWH でもサポートされているので、他システムと連携する場合にはファイルを配置しなおすなどの手間が必要なくなり、より便利に使えるようになったのではないかと思います。

列レベルのアクセス制御とテーブル ACL

BigQuery では SQL の GRANT 構文によるデータへのアクセス制御設定ができません。 その代わり、プロジェクトやデータセット単位でアクセス制御を設定したり、データセットのアクセス制御を応用して承認済みビューを定義したりする必要がありましたが、2020/11/17 にテーブルカラム単位のアクセス制御が GA に、また 2020/06/04 にはベータ版ですがテーブル単位のアクセス制御も可能になりました!

データ分析の対象データには、個人情報などのシビアなデータが含まれることもあり、データに対するアクセス制御は非常に重要です。 場合によっては個人情報など特定のカラムをマスキングるなどの運用を行うこともあると思いますが、BigQuery の列レベルのアクセス制御を設定しておけば、日々追加されるテーブルデータでもマスキング処理なしにアクセス制御が実現できます。 また、これまでサポートされていなかったテーブル単位のアクセス制御がサポートされたことにより、特に他の DWH から移行する場合などのセキュリティ設計が楽になったのではないかと思います。

BigQuery スクリプトとストアドプロシージャ

2020/03/30 BigQuery スクリプトとストアドプロシージャが GA になりました。

BigQuery スクリプトは 2019/10/03 にベータ版リリースされた機能で、1 回の実行で複数の SQL を実行することができ、 SQL ステートメント内で IF による条件分岐や LOOPWHILE によるループ処理も実行することができます。

また、BigQuery スクリプト同様 2019/10/03 にベータ版リリースされたストアドプロシージャも同時に GA になりました。

BigQuery スクリプトやストアドプロシージャ の GA により、SQL ステートメント実行時に選択できる処理の幅が広がり、他のデータベースから BigQuery へ移行するケースにも対応しやすくなったのではないかと思います。

マテリアライズドビュー

2020/04/08、ベータ版ではありますが、BigQuery でもとうとうマテリアライズドビューが利用できるようになりました!(8888

ドキュメントを読んでると、気になる文章が。。

メンテナンス不要: ベーステーブルが変更されると、バックグラウンドでマテリアライズド ビューが再計算されます。ベーステーブルのすべての増分データが自動的にマテリアライズド ビューに追加されます。ユーザー入力は不要です。

常に最新: マテリアライズド ビューは、常にベーステーブル(BigQuery ストリーミング テーブルを含む)の内容と一致します。ベーステーブルが更新、マージ、パーティションの切り捨て、パーティションの有効期限切れによって変更されると、マテリアライズド ビューの影響を受ける部分が無効化され、ベーステーブルの対応する部分が完全に再読み込みされます。

参照するたびにソーステーブルに SELECT が実行される通常のビューと異なり、マテリアライズドビューはソーステーブルのデータを物理的に保持しておく、いわばテーブルのようなものです。 通常のビューのように毎回 SELECT を実行する必要がないので参照時のパフォーマンスが良い代わりに、 物理データを保持してしまっているのでソーステーブルのデータが更新されたら手動でマテリアライズドビューに反映する必要がある(のが当然)、と思っていたのですが、 昨今のマテリアライズドビューではソースデータの更新も自動で反映してくれるのですね@@?!

本当に更新が自動で反映されるのか、実際に試してみます。

価格.com の泡盛のランキングページからいただいてきた、商品名と製造元、価格情報を元に、 任意の商品コードと販売個数、販売日時項目をランダムで追加して、泡盛売上データを作成しました。

※実際の売上とは一切関係ありません。

作成したデータを BigQuery の awamori テーブルにロードしました。 テーブルデータはこんな感じです。

上記テーブルから、日本時間の何時何分にどの商品が何個売れたかを確認するためのマテリアライズドビューを作成してみます。

BigQuery 管理コンソールでクエリエディタに以下の SQL を入力して実行しました。

CREATE MATERIALIZED VIEW dataset_advent_calendar.v_awamori AS
SELECT
  prod_name,
  COUNT(*) AS pos_count,
  FORMAT_TIMESTAMP("%Y-%m-%d %H:%M:%S", pos_timestamp, "Asia/Tokyo") AS pos_timestamp
FROM
  dataset_advent_calendar.awamori
GROUP BY
  pos_timestamp, prod_name

マテリアライズドビューが作成できました。管理コンソールから、ビューデータの抽出クエリも確認できます。

作成したマテリアライズドビューに SQL を実行してみます。

販売日時でグルーピングされた 4 行のデータが確認できました。

さらに、ソーステーブルにデータを追加したらビューにも反映されるかどうか確認してみます。 12/23 の売上データを 8 行、ソーステーブルに追加しました。

ビューにも反映されていれば、販売日時でグルーピングされた 5 行のデータがマテリアライズドビューにも追加されているはずです。

追加データがマテリアライズドビューにも自動で反映されることが確認できました!

なお、この自動更新は有効/無効を切り替えることができるそうです。 状況によって使い分けることができて便利ですね!

ただ、ベータ版ということもあり、現在の BigQuery のマテリアライズドビューには制限事項もあります。

もともと集計結果を保持する用途で使われることが多いので、集計を含まないクエリでマテリアルビューを作成することはできません。

ソーステーブルから特定のカラムを抽出するだけの単純なクエリでマテリアライズドビューを作成しようとしてもエラーになります。

また、現在のところ、マテリアライズドビューで JOIN を使うことはできません。

JOIN が必要な場合は、あらかじめ必要なテーブルを結合した中間テーブルを作成しておくなどの対応が必要です。 今後、テーブル結合のサポート開始に期待です!

まとめ(所感)

2020 年もうれしいリリース盛りだくさんな BigQuery でした!ヽ(´ー`)ノ

とはいえ、年末の AWS re:Invent 2020 では、AWS の DWH サービス Redshift に関する胸熱なリリースもたくさん発表されています!

2021 年も各社クラウド DWH の進化から目が離せません! ユーザーにとって選択の幅が広がる、ほんと良い時代になりましたね><v


明日 25 日、最終日の BigQuery Advent Calendar 2020Mr.Mo からお送り予定です。 また、本アドベントカレンダーシリーズはこちらにも掲載しておりますので、これまでのエントリ含め明日のエントリまでもう少しお付き合いいただけますと幸いです!

参考