LoginSignup
1
0

More than 3 years have passed since last update.

BigQueryサンドボックスでSQLの勉強を始める~CREATE VIEW~

Last updated at Posted at 2019-12-27

前回の記事

BigQueryサンドボックスでSQLの勉強を始める
前回は以下の点について調べたことをまとめました。

  1. そもそもBigQueryって何??
  2. BigQueryは個人が勉強用に使えるものなのか
  3. 買った参考書を活かせる(そのまま実装できる)のか

目的

参考書(SQL 第2版 ゼロからはじめるデータベース操作)の5-1のコードでは動かなかったので備忘録として、
PostgreSQL vs BigQuery で CREATE VIEW の違いについてまとめます。

BigQueryでのCREATE VIEW

既存のテーブル「Shohin」からフィールド「shohin_bunrui」別にレコード数を集計して、
新たにフィールド「shohin_bunrui, cnt_shohin」を持つビュー「ShohinSum」を作成するという問題です。

コード比較

最終的に動いたコードを載せておきます。

参考書5-1
CREATE VIEW ShohinSum (shohin_bunrui, cnt_shohin)
AS
SELECT shohin_bunrui, COUNT(*)
FROM Shohin
GROUP BY shohin_bunrui;
BigQuery
CREATE VIEW `training-262712.shop.ShohinSum`
AS
SELECT shohin_bunrui, COUNT(*) as cnt_shohin
FROM `training-262712.shop.Shohin`
GROUP BY shohin_bunrui;

何を変えたのか

参考書(PostgreSQL)ではビュー名の直後でフィールド名を指定します。

参考書5-1
CREATE VIEW ShohinSum (shohin_bunrui, cnt_shohin)

BigQueryで同様にフィールド名を指定するとエラーになりました。

BigQueryではエラーが出る
CREATE VIEW `training-262712.shop.ShohinSum` (shohin_bunrui, cnt_shohin)
AS
SELECT shohin_bunrui, COUNT(*)
FROM `training-262712.shop.Shohin`
GROUP BY shohin_bunrui;

>>> Syntax error: Expected keyword AS but got "(" at [1:46]

フィールド名をSELECT文の中に書くことで解決しました。

BigQuery修正後
CREATE VIEW `training-262712.shop.ShohinSum`
AS
SELECT shohin_bunrui, COUNT(*) as cnt_shohin

view_option_list(今後調べる予定)

調べる中で、BigQueryでは CREATE VIEW にオプションが付けられることが分かったので、次の記事でまとめたいと思います。

構文

{CREATE VIEW | CREATE VIEW IF NOT EXISTS | CREATE OR REPLACE VIEW}
view_name
[OPTIONS(view_option_list)]
AS query_expression

~中略~
view_option_listを使用すると、ラベルや有効期限などのビュー作成オプションを追加で指定できます。

参考にしたページなど

データ定義言語ステートメントの使用(公式)
How do I create a BigQuery View(stackoverflow)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0