LoginSignup
3
0

【BigQuery】ViewテーブルにもカラムのDescriptionが設定できるようになっていた話

Posted at

はじめに

2023年10月9日、BigQueryを扱う全ての運用担当者にとって待望の機能が一般提供されました(個人の感想です)
リリースノート
ViewテーブルのカラムにDescriptionを付けられるようになったのです!

恥ずかしながらリリースから4ヶ月遅れでこの事実を知ったのですが、私と同じくこの機能に気づいていない人に知って欲しくてこの記事を書きました

今まではカラムの説明がつけられなかった

CREATE文の実行時、通常のテーブルならばこのようにカラムに説明をつけられます

CREATE TABLE `test.purchase_logs` (
  item_id STRING OPTIONS (description = "商品ID"),
  user_id STRING OPTIONS (description = "購入者ID"),
  price INT64 OPTIONS (description = "商品価格(税込)"),
  datetime DATETIME OPTIONS (description = "購入日時(JST)")
) OPTIONS (
    description = "購入された商品情報"
);

image.png

しかし、なぜかこれまではViewテーブルにはカラムに説明がつけられなかったのです......
するとどうでしょう?カラム名だけでは仕様を把握しきれなくなってしまうのです
そうなればクエリから参照元のテーブルを確認しなければなりません

image.png

Viewのカラムに説明を付ける方法

それがBigQueryのアップデートによって今はこのように説明をつけられるようになりました
CREATE TABLEの時とほとんど変わりません

CREATE VIEW `test.purchase_logs_view` (
  item_id OPTIONS (description = "商品ID"),
  user_id OPTIONS (description = "購入者ID"),
  price OPTIONS (description = "商品価格(税込)"),
  datetime OPTIONS (description = "購入日時(JST)")
) OPTIONS (
    description = "購入された商品情報"
) AS
SELECT
  item_id,
  user_id,
  price,
  datetime
FROM
  `test.purchase_logs`

image.png

データ型は設定できない

上のクエリを見るとわかるとおり、CREATE VIEWではカラムのデータ型を書いてはいけません(書くとエラーになります)
その代わりSELECTした値に応じてデータ型が自動で設定されます
便利でいいのですが、稀にこの機能が邪魔になります
例えば、何らかの理由でdatetimeがNULLになる状態でViewを作成した時

CREATE VIEW `test.purchase_logs_view` (
  item_id OPTIONS (description = "商品ID"),
  user_id OPTIONS (description = "購入者ID"),
  price OPTIONS (description = "商品価格(税込)"),
  datetime OPTIONS (description = "購入日時(JST)")
) OPTIONS (
    description = "購入された商品情報"
) AS
SELECT
  item_id,
  user_id,
  price,
  NULL AS datetime
FROM
  `test.purchase_logs`

image.png

このように意図しないデータ型になってしまうことがあります。
仮にdatetimeのNULLは障害で、のちに復旧した場合、復旧前に作ったViewは型違いでエラーになってしまいます

カラム名や説明と同様に任意のデータ型を指定できればいいのですが、残念ながら対応していないようです

3
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
3
0