0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Tips] Fabric Lakehouse テーブルのDDL を確認したい!のだけれど...

Posted at

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 という形で意思表示していただけるとよいと思います。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?