BigQueryでテーブル・ビューの基本操作を解説!ビジネスパーソンのためのSQL入門講座

本記事では、BigQueryでよく使う操作である、テーブルの作成・削除、ビューの作成・削除の操作方法を中心に解説します。
熟練すれば複雑なクエリを書いて一発でデータを抽出することができますが、初心者の内は、単純なクエリを複数書いてテーブルやビューを活用することで回避できます。
複雑なクエリを書くことが無くても、よく使う操作ではあるので、ぜひ覚えておきましょう。

データセットの作成

まずはBigQueryにアクセスしましょう。

BigQueryコンソールへのリンク

アクセス権限を有していればアクセスできます。

該当プロジェクト配下にあるデータセットを確認するためには、プロジェクト名の隣にある三角形をクリックします。

今はデータセットが無いため、「外部接続」という項目だけが表示されている状態です。

データセットを作るには、プロジェクト名の右側にある点々をクリックしましょう。

「データセットを作成」という項目が出てくるので、それをクリックします。

どんなデータセットを作るかを指定する画面が出てきます。
「データセットID」は作成するデータセットの名前です。
分かりやすい名前にしましょう。

ロケーションやリージョンを指定できますが、職場で決まっている値があればそれを適用しましょう。
ちなみに「リージョン」とは、どの地域のデータセンターを利用するかを意味していて、「US」はアメリカのことです。
クエリを実行したりするには同じリージョンで操作することになるため、職場で共通のルールに従えば問題無いのです。

「test_dataset」という名前でデータセットを作成しました。

データセットをクリックすると、データセット情報を見ることができます。

データセットの削除

いらなくなったデータセットを削除する方法も確認しておきましょう。

データセットの右側の点々をクリックするとメニューが出てきて、その中から「削除」を選択できます。

もう一つ、「削除」を選択する方法を紹介します。

まずは削除したいデータセットをクリックし、データセット情報を確認しましょう。

右上に「削除」というボタンが表示されるので、これをクリックすると進めます。

すると、「データセットを削除しますか?」と表示され、確認用の入力フォームと「削除」ボタンが表示されるので、メッセージ内容含め、よく確認しましょう。

本当に削除するのであれば、メッセージに従い、入力フォームに「削除」と入力します。
その上で、「削除」ボタンをクリックします。

ちなみに、BigQueryでは過去何度かこの画面のデザインが変わっており、以前は「delete」と入力するなどの仕様でした。
もしかしたら今後も変更があるかもしれません。

削除すると、プロジェクトの下に表示されていたデータセットが無くなりました。

テーブルの作成

データセットが操作できるようになったら、次はテーブルを作成できるようになりましょう。

該当データセット配下に格納されているテーブルやビューを確認するには、データセット名の左側の三角形をクリックします。

データセットを作成したばかりなので、テーブルやビューが無く、三角形が消えただけに見えます。

テーブルの作り方ですが、先に、初心者の内はあまり使わない方法を紹介します。

データセットの右側の点々をクリックします。

「テーブルを作成」を選択します。

どんなテーブルを作成するかを指定する画面が出てきます。

しかしこの画面は、初心者の内に使うことは少ないでしょうから、紹介は一旦ここまでとします。

代わりに、初心者の内からよく使う方法を紹介します。
クエリを実行した結果を保存します。

まずはクエリを用意します。
エディタが表示されていなければ表示させましょう。

試しに簡単なクエリを入力してみます。

SELECT 1 AS test_value

「実行」ボタン、あるいは、Ctrl+Enterで、クエリを実行しましょう。

クエリの実行結果が表示されます。

「結果を保存」という項目があるので、それをクリックしましょう。

「BigQueryテーブル」という項目があるので、これを選択します。

テーブルとして保存するための情報を入力する画面が出てきます。

必要情報を入力したら「エクスポート」ボタンを押しましょう。

ちなみに、データセットを選択する際には、新しくデータセットを作ってそこに保存するような操作もできます。
実際はあまり使わないでしょう。

テーブルが作成されました。

テーブル名をクリックしてみましょう。

テーブルのスキーマが表示されます。
このテーブルにはどんなカラムがあるのか分かります。

「詳細」のタブをクリックすると、テーブルの詳細情報を見ることもできます。

テーブルの削除

テーブルを作成した後、使い終わったら削除することになります。
BigQueryではテーブルの容量次第で、保存し続けることでお金がかかりますし、いらないテーブルが沢山あると管理が難しくなります。

テーブルの詳細画面に「削除」のボタンがあるので、そこをクリックしましょう。

または、削除したいテーブルの右側に点々があるので、そこをクリックすると「削除」を選択できます。
どちらから選択してもOKです。

すると、「テーブルを削除しますか?」という確認画面が出てきます。
まずは、メッセージをよく読み、間違って別のテーブルを削除しようとしていないか確かめます。
特に、テーブルを削除しようとしてデータセットを削除してしまい、沢山の大事なテーブルやビューを喪失してしまうミスが起こりやすいので注意しましょう。

確認が済んだら、画面表示に従い、「削除」と入力し、「削除」ボタンを押下します。

削除が行われました。
元々配置されていたデータセットから、削除したテーブルが無くなっていることを確認しましょう。

テーブルの使い方

実際にテーブルを使ってみましょう。
先ほどの手順で、テーブルを作成しておきます。

テーブルの詳細タブを開き、「テーブルID」のテーブル名の右側にカーソルを合わせてみましょう。
「クリップボードにコピー」というボタンが登場するので、これをクリックすると、テーブル名をコピーできます。

コピーしたテーブル名を使って、クエリを書いて実行してみましょう。

SELECT * FROM `テーブル名`

このクエリでは、テーブルに格納されたデータをそのまま抽出できました。

この方法を使えば、クエリを書いてデータ抽出、結果をテーブルとして保存、保存したテーブル使って新しいクエリでデータ抽出、と繰り返すことができるので、1回のクエリで書くことが難しくても、複数回に分けてクエリを実行し、目的のデータを抽出することができるようになります。

ビューの作成

ビューを使うと、クエリをテーブルのように取り扱うことができます。
テーブルの作成の時と同じような操作になるので、見比べながら覚えましょう。

試しにクエリを入力し、実行します。

SELECT 1 AS test_value

思ったとおりの結果が返ってきていることを確認します。

クエリを実行する「実行」ボタンの隣に、「保存」ボタンがあります。
そこをクリックすると、「ビューを保存」を選択できます。

保存先のプロジェクト、データセット、テーブル名(ビュー名)を入力する画面が出てきます。
それぞれ入力し、「保存」をクリックしましょう。

ビューを作成できました。

作成されたビューをクリックして開いてみましょう。

このビューではどんなカラムが出力されるかを示すスキーマ情報が表示されます。

「詳細」タブをクリックすると、そのビューの詳細情報を表示できます。
元になったクエリも表示されます。

一度保存したビューの元のクエリを編集することもできます。

クエリの右側に「クエリを編集」と表示されているので、そこをクリックしてみましょう。

クエリの編集画面が開かれます。

ビューを作成した時と同様に、クエリを書き換えて、想定どおりの結果が返ってくるかを実行して確かめましょう。

SELECT 2 AS test_value

確認が終わったら、編集したクエリを保存します。

ビューを作った時と同じ場所には、「ビューを保存」と表示され、そこをクリックすると「ビューを保存」を選択できます。

ちなみに、「ビューに名前を付けて保存」を選択すると、編集中のビューとは別に新しいビューを作ることができます。

もう一度ビューを開いてみますが、先ほど開いたままのビューだったりすると、編集前のクエリが表示されていたりします。

画面右側に「更新」とあるので、そこをクリックしてみましょう。

編集後のクエリが表示されました。
最終更新も更新されています。

ビューの削除

不要になったテーブルを削除するように、不要になったビューも削除することがあります。

特にビューは、クエリが内包されているため、いかにも正しいビュー名で間違ったクエリや古いクエリを残してしまうと、偶然それを見かけたメンバーが参考にしてしまい、正しくない処理が蔓延してしまうリスクがあります。
それを防ぐためにも、いらなくなったビューはすぐに削除するようにしましょう。

テーブル同様、ビューの右側の点々から「削除」を選択できます。

ビューの詳細タブの中に「削除」ボタンがあるので、そこからでも操作できます。

「削除」と入力して「削除」ボタンを押下すると削除できるので、よく確認してから操作しましょう。

該当データセット配下から、ビューが削除されます。

ビューの使い方

ビューを作成した状態を使って、ビューを実際に使ってみましょう。
テーブルを使う時と同じ操作となります。

ビューの詳細タブで、ビューIDの右側のビュー名にカーソルを合わせると、「クリップボードにコピー」というボタンが表示されるので、それをコピーします。

コピーしたビュー名を使ってクエリを書きましょう。

SELECT * FROM `ビュー名`

ビューを使って、結果が得られました。

テーブルやビューを使って初心者が複雑なクエリを書く方法

実演をしながら確認した方が分かりやすいでしょうから、例題をベースに進めましょう。
2023年の日付の中から、13日の金曜日を抽出してみるケースを考えます。

最初にテストデータを用意します。

SELECT * FROM UNNEST(GENERATE_DATE_ARRAY(DATE("2023-01-01"), DATE("2023-12-31"), INTERVAL 1 DAY)) AS target_date

初心者の方にとっては未修得の領域になるでしょうから、クエリの詳細は一旦考えずに進めましょう。
このクエリを実行すると、2023/01/01~2023/12/31までの日付を取得できます。

このクエリを実行して、テーブルとして保存しましょう。

今回は「calendar」(カレンダー)というテーブル名にしました。

このカレンダーテーブルを基に、年月日と曜日を算出するビューを用意します。

SELECT
  target_date,
  EXTRACT(YEAR FROM target_date) AS y,
  EXTRACT(MONTH FROM target_date) AS m,
  EXTRACT(DAY FROM target_date) AS d,
  CASE EXTRACT(DAYOFWEEK FROM target_date)
  WHEN 1 THEN "日曜日"
  WHEN 2 THEN "月曜日"
  WHEN 3 THEN "火曜日"
  WHEN 4 THEN "水曜日"
  WHEN 5 THEN "木曜日"
  WHEN 6 THEN "金曜日"
  WHEN 7 THEN "土曜日"
  ELSE NULL
  END AS w
FROM カレンダーテーブル

このクエリを実行すると、年月日と曜日を抽出できます。

正しく実行できることを確認できてから、ビューとして保存します。

今回は「calendar_with_extract_info」という名前にしました。

試しに、ビューを正しく参照できるか試してみましょう。

SELECT * FROM カレンダーテーブルに抽出結果を加えたビュー

同じ結果が得られるはずです。

さて、例題のとおり、13日の金曜日を抽出してみましょう。

SELECT * FROM カレンダーテーブルに抽出結果を加えたビュー
WHERE d = 13
AND w = "金曜日"

2023/01/13と2023/10/13が抽出されました。

ちなみに、例題を1回のクエリで実行しようとすると、下記のようなクエリになります。

SELECT * FROM UNNEST(GENERATE_DATE_ARRAY(DATE("2023-01-01"), DATE("2023-12-31"), INTERVAL 1 DAY)) AS target_date
WHERE EXTRACT(DAY FROM target_date) = 13
AND EXTRACT(DAYOFWEEK FROM target_date) = 6

今回の例題ではそこまで複雑ではないのですが、初心者の内は、いきなり書くには難しいところもあるでしょう。
一段階ずつ、クエリを書いて抽出して、テーブルやビューとして保存して、を繰り返すことによって、着実に前進できます。

振り返り

テーブル、ビューに関する基本操作は以上です。
BigQueryをビジネス利用しているとよく使う操作ですから、繰り返し操作することで慣れていきましょう。