Lakehouse テーブルのDDL を確認したい
RDBでは、SHOW CREATE TABLE や DBMS_METADATA.GET_DDL のように DDL を取得可能。
しかし、Fabric のLakehouse では、テーブル作成時のDDL をRDB のように再取得する手段が現状存在しない。
そのため「このテーブル定義、どうだっけ?」という際、地味に困る。
Lakehouse テーブルはDDL を取れない(現状)
Lakehouse のテーブルはDelta Lake テーブルなので、もともとRDB とは実装が異なる。
SQL 分析エンドポイントはデータ自体に対するクエリ(問い合わせ)をSQL でラップする形でインタフェース提供しているが、そこにT-SQL におけるDDL要求は未実装。
ではどうする?
Spark Notebook(SQL) でDESCRIBE EXTENDED を叩く
代替手段としてSpark Notebook(SQL)にてDESCRIBE EXTEND を実行するという手段がある。
DESCRIBE EXTENDED <スキーマ名>.<テーブル名>;
これにより下記が確認可能。
- col_name(カラム名)
- data_type(データ型)
- comment(コメント)
- Deltaテーブル情報各種
DDL ではないですが、構造確認には十分使える情報が得られる。
注意点
SSMS ではできない
このDESCRIBE EXTENDED はDelta Lake の機能でT-SQL には存在しない。
故に、SSMS(SQL Server Management Studio)やPower BI のSQL Endpoint 接続等、T-SQL 近似実装のインタフェースでは実行不能。
現状はDelta Lake 機能を呼び出せるSpark Notebook(SQL) での実行となる。
Lakehouse テーブル作成時にCOMMENT を埋め込むのは無駄ではない
Lakehouse テーブル作成時、COMMENT を埋め込んでも、現状のFabric UI 上で確認手段がない。
しかし、この記事にあるようにDESCRIBE EXTENDED で確認することは可能なので、論理名やメタ情報に相当するメモなどをCOMMENT として埋め込んでおくのは決して無駄ではない。
脚注
Microsoft Fabric Lakehouse 概要
https://learn.microsoft.com/fabric/data-engineering/lakehouse-overview
databricks/AWS/SQL language reference/Auxiliary statements/Describe statements
https://docs.databricks.com/aws/en/sql/language-manual/sql-ref-syntax-aux-describe-table#syntax
おまけ(本題)
Lakehouse テーブルの DDL を取得できないという現状については、
Microsoft Fabric 公式コミュニティでも改善要望として議論されています。
以下の Idea は、Lakehouse オブジェクトを Git 管理したいという提案ですが、
スキーマ定義の管理やガバナンスという観点で、本記事の問題意識と重なります。
同様の課題を感じている方は、ぜひ Vote という形で意思表示していただけるとよいと思います。