はじめに
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 = "購入された商品情報"
);
しかし、なぜかこれまではViewテーブルにはカラムに説明がつけられなかったのです......
するとどうでしょう?カラム名だけでは仕様を把握しきれなくなってしまうのです
そうなればクエリから参照元のテーブルを確認しなければなりません
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`
データ型は設定できない
上のクエリを見るとわかるとおり、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`
このように意図しないデータ型になってしまうことがあります。
仮にdatetime
のNULLは障害で、のちに復旧した場合、復旧前に作ったViewは型違いでエラーになってしまいます
カラム名や説明と同様に任意のデータ型を指定できればいいのですが、残念ながら対応していないようです