Bigquery

【Bigquery】ビュー(View)の使い方やメリットとは?現役エンジニアが解説!

ぐぅ

ぐぅ

京大工学部▶︎京大大学院情報学研究科▶︎日系企業のITエンジニア。研究室ではAI×通信の研究も行いAIにも知見あり。友人とプログラミング初学者向けブログ「はやぶさエンジニア」を運営。ノーコードで起業し、サブスク型サービスを運営。26歳大阪在住

★本記事は5分で読み終えることができます。

【本記事の信頼性】
Bigqueryを仕事で活用している現役エンジニアである筆者が「ビュー」の使い方について解説しています。

こんな方におすすめ

  • Bigqueryのビューってどうやって使うの?
  • Bigqueryの計算量を抑えたい・処理時間を短くしたい
未経験くん
ビューはどうやって使うの?
Bigqueryの計算量を減らす方法は何かないかな?
未経験ちゃん

このような悩みを解説するための記事になります。
Bigqueryのビューと言う機能を使うと時間やコストを削減することができます。

本記事ではビューとは何かから、メリット・デメリット、使い方までを解説しているので是非参考にしてみてください!!

ビュー(View)とは

「そもそもビューって何?」から解説していきます。

Bigqueryには2種類のビュー(一般的なビュー、マテリアライズドビュー)が提供されています。
クエリを記述することで元となるテーブルから必要なデータだけを取り出した「テーブルのようなもの=ビュー」を作ることができます。

定期的に実行するクエリで、仮のテーブルを作るイメージです。
繰り返し使うクエリがある時に活躍するのがビューと言うことですね^ ^

ビュー(View)とは

テーブルのように実体を持たず、仮想的なテーブル形式のデータを作り出せる機能。
ビューに対するクエリは実際にはビューを構成するテーブルに対するクエリに分解され、実行され、結果が返されます。

マテリアライズドビュー(Materialized View)とは

テーブルのように実体を持つビュー。
実体を持つため、マテリアライズドビューに対するクエリは実際にマテリアライズドビューの実体に対して実行され、結果を返すため、非常に高速に結果が得られます

実態を持つか持たないかの違いで基本的なメリットやデメリットは似ています。

料金体系や特徴が少し異なるので注意が必要です。

ビュー(View)のメリット・デメリット

ビューと使うことによるメリット・デメリットについて解説していきます。

ビューを使うメリット

  • ブラウザのコンソール上からクエリを保存できる
  • 保存したビューはテーブルと同様に扱うことが可能で、都度クエリを書く手間が省ける
  • ビューに実体はないため、ストレージ保管料の課金がない
  • クエリを書き換えるだけでビューのデータを変更できる(データを直接書き換える必要がない)

毎日、毎月定期実行するようなクエリをビューとして保存して使うのが一般的です。

BIツールに描画するためのデータ加工クエリなどがまさにビューの出番ですね^ ^

ビューを使うデメリット

  • ビューを利用する度に、ビューを作成した元のクエリが実行されるため、計算量が多いクエリのビューは処理に時間がかかる。
  • 同様に、都度クエリが走るためオンデマンドのクエリ料金がかかる。

ビューを利用する度に「時間」と「お金」がかかってくると覚えておきましょう!

ビューの作成方法(Webブラウザ経由)

では、ビューの作成手順を見ていきましょう。

今回は一般公開されているコロナのデータ「covid19_vaccination_search_insights」を利用します。

以下のクエリをWebコンソールに記述したとします。

SELECT
  date,
  country_region
FROM
  `bigquery-public-data.covid19_vaccination_search_insights.covid19_vaccination_search_insights`
WHERE
  DATE(_PARTITIONTIME) = "2021-08-28"
LIMIT
  1000

以下の画像のように、「保存」から「ビューを保存」で、クエリをビューとして保存します。

保存画面に、自分が命名したい任意のデータセット名と、テーブル名を入力して保存を選択します。

そうすると、入力したテーブル名でビューが作成されます。(今回はtestデータセットにtestというテーブルを作成しました)

ビューのフィールド名は実行したクエリで出力したカラムが並んでいます。

ビューの作成方法(クエリで直接)

クエリ内に以下を記述することでビューを作成することができます。
ボタンを押して、名前を付ける手間がなくなるので非常に便利です。

create viewを書くだけですね^ ^

CREATE (MATERIALIZED) VIEW `project-id.dataset.table` AS # マテリアライズドの場合はMATERIALIZEDを追加するだけ
SELECT
  date,
  country_region
FROM
  `bigquery-public-data.covid19_vaccination_search_insights.covid19_vaccination_search_insights`
WHERE
  DATE(_PARTITIONTIME) = "2021-08-28"
LIMIT
  1000

viewの更新方法

作成したビューは「詳細タブ」の「クエリを編集」からクエリを変更することができます。

viewの料金

viewの料金は、viewを作成した際のもととなるクエリの料金分、実行のたびに料金がかかります。

単価の高いクエリをviewとして登録すると想定以上に料金がかかることがあるので注意が必要です。

クエリに必要な計算量は、以下のように右上に表示されます。
1TBで600円程度と考えて概算するようにしましょう。

Materialized Viewとは

Materialized View(マテリアライズド ビュー)とは、キャッシュを備えたviewで、2020年4月にベータリリースされました。

利点は公式ドキュメントを参照すると以下になります。

・集計関数を含むクエリの実行時間の短縮とコストの低減。最大のメリットが得られるのは、クエリの計算コストが高く、返されるデータセットが小さい場合です。

・BigQuery による自動的かつ透過的な最適化。オプティマイザーは、可能であればマテリアライズド ビューを使用してクエリ実行プランを改善します。この最適化のおかげで、クエリを変更する必要はありません。

・BigQuery テーブルと同じ復元力と高可用性。

参照:マテリアライズドビューの概要

まとめ

本記事ではBigQueryのビューについて、

  • viewの概要
  • viewの作成方法、更新方法

について解説しました。

ビューは使いこなすとクエリの作成の手間が大幅に削減できます。是非活用してみてください!

  • この記事を書いた人
ぐぅ

ぐぅ

京大工学部▶︎京大大学院情報学研究科▶︎日系企業のITエンジニア。研究室ではAI×通信の研究も行いAIにも知見あり。友人とプログラミング初学者向けブログ「はやぶさエンジニア」を運営。ノーコードで起業し、サブスク型サービスを運営。26歳大阪在住

-Bigquery

© 2021 はやぶさエンジニア Powered by AFFINGER5