LIVEスキーマ(レガシー)
この記事では、 LIVE
仮想スキーマの従来の構文と動作の概要について説明します。
LIVE
仮想スキーマは DLT パイプラインのレガシ機能であり、非推奨と見なされます。従来の発行モードと、このモードで作成されたパイプラインの LIVE
仮想スキーマを引き続き使用できます。
従来の LIVE
仮想スキーマと従来の公開モードのサポートは、Databricks の将来のバージョンで削除される予定です。
従来の公開モード パイプラインは、DLT パイプライン設定 UI の [概要 ] フィールドに示されます。 また、パイプラインの JSON 仕様で target
フィールドが設定されている場合は、パイプラインが従来の公開モードを使用していることを確認することもできます。
パイプライン設定 UI を使用して、従来の公開モードで新しいパイプラインを作成することはできません。 従来の LIVE
構文を使用して新しいパイプラインをデプロイする必要がある場合は、Databricks のアカウント担当者にお問い合わせください。
LIVE 仮想スキーマとは
DLT のデフォルトの公開モードでデータセットの依存関係を分析するために、 LIVE
仮想スキーマは不要になりました。
LIVE
スキーマは、パイプラインで作成または更新されるすべてのデータセットの仮想境界を定義する DLT のプログラミング概念です。設計上、 LIVE
スキーマは公開されたスキーマのデータセットに直接関連付けられていません。 代わりに、 LIVE
スキーマを使用すると、ユーザーがデータセットをスキーマに発行したくない場合でも、パイプライン内のロジックを計画して実行できます。
従来のパブリッシング モード パイプラインでは、 LIVE
キーワードを使用して、現在のパイプライン内の他のデータセット ( SELECT * FROM LIVE.bronze_table
など) を読み取りで参照できます。 新しい DLT パイプラインのデフォルト パブリッシング モードでは、この構文はサイレントに無視され、修飾されていない識別子は現在のスキーマを使用します。 ターゲット・カタログとスキーマの設定を参照してください。
パイプラインのレガシ発行モード
LIVE
仮想スキーマは、DLT パイプラインの従来の公開モードで使用されます。2025 年 2 月 5 日より前に作成されたすべてのテーブルは、デフォルトで従来の公開モードを使用します。
次の表では、従来のパブリッシング モードのパイプラインで作成または更新されたすべてのマテリアライズドビュー とストリーミング テーブルの動作について説明します。
ストレージオプション | 保存場所またはカタログ | ターゲットスキーマ | 挙動 |
---|---|---|---|
Hive metastore | 指定なし | 指定なし | データセットのメタデータとデータは、 DBFSルートに格納されます。 データベース・オブジェクトは Hive metastoreに登録されていません。 |
Hive metastore | クラウド・オブジェクト・ストレージへの URI またはファイル・パス。 | 指定なし | データセットのメタデータとデータは、指定した保存場所に保存されます。 データベース・オブジェクトは Hive metastoreに登録されていません。 |
Hive metastore | 指定なし | Hive metastore内の既存または新しいスキーマ。 | データセットのメタデータとデータは、 DBFSルートに格納されます。 パイプライン内のすべてのマテリアライズドビュー とストリーミングテーブルは、 Hive metastoreで指定されたスキーマにパブリッシュされます。 |
Hive metastore | クラウド・オブジェクト・ストレージへの URI またはファイル・パス。 | Hive metastore内の既存または新しいスキーマ。 | データセットのメタデータとデータは、指定した保存場所に保存されます。 パイプライン内のすべてのマテリアライズドビュー とストリーミングテーブルは、 Hive metastoreで指定されたスキーマにパブリッシュされます。 |
Unity Catalog | 既存の Unity Catalog カタログ。 | 指定なし | データセットのメタデータとデータは、ターゲット カタログに関連付けられたデフォルトのストレージ場所に格納されます。 データベース・オブジェクトは Unity Catalogに登録されていません。 |
Unity Catalog | 既存の Unity Catalog カタログ。 | Unity Catalog の既存または新しいスキーマ。 | データセットのメタデータとデータは、ターゲットスキーマまたはカタログに関連付けられたデフォルトのストレージ場所に保存されます。 パイプライン内のすべてのマテリアライズドビュー とストリーミングテーブルは、 Unity Catalogで指定されたスキーマにパブリッシュされます。 |
LIVEスキーマからのソースコードの更新
新しいデフォルト パブリッシング モードで実行するように構成されたパイプラインは、 LIVE
スキーマ構文をサイレントに無視します。 デフォルトでは、すべてのテーブル読み取りは、パイプライン設定で指定されたカタログとスキーマを使用します。
既存のほとんどのパイプラインでは、従来のスキーマ LIVE
仮想スキーマの動作もパイプライン構成で指定されたカタログとスキーマに読み取りを送信するため、この動作の変更は影響しません。
ワークスペースのデフォルト カタログとスキーマを利用する読み取りを含むレガシ コードには、コードの更新が必要です。 次のマテリアライズドビューの定義について考えてみます。
CREATE MATERIALIZED VIEW silver_table
AS SELECT * FROM raw_data
従来のパブリッシング モードでは、 raw_data
テーブルからの非修飾読み取りでは、ワークスペースのデフォルトのカタログとスキーマ ( main.default.raw_data
など) が使用されます。 新しいデフォルトのパイプラインモードでは、デフォルトで使用されるカタログとスキーマは、パイプライン設定で設定されたカタログとスキーマです。 このコードが引き続き期待どおりに動作するようにするには、次の例のように、テーブルの完全修飾識別子を使用するように参照を更新します。
CREATE MATERIALIZED VIEW silver_table
AS SELECT * FROM main.default.raw_data
Unity Catalog の従来の発行モード パイプラインのイベント ログを操作する
event_log
TVF は、テーブルを Unity Catalog に発行する従来の発行モード パイプラインで使用できます。新しいパイプラインのデフォルト動作は、パイプライン用に構成されたターゲット カタログとスキーマにイベント ログを発行します。 「イベント ログのクエリ」を参照してください。
Hive metastore で設定されたテーブルには、異なるイベントログのサポートと動作もあります。「Hive metastore パイプラインのイベント ログの操作」を参照してください。
パイプラインが従来の公開モードで Unity Catalog にテーブルを発行する場合は、 event_log
テーブル値関数 (TVF) を使用してパイプラインのイベント ログをフェッチする必要があります。 パイプラインのイベント ログを取得するには、パイプライン ID またはテーブル名を TVF に渡します。 たとえば、ID が ID 04c78631-3dd7-4856-b2a6-7d84e9b2638b
のパイプラインのイベント ログ レコードを取得するには、次のようにします。
SELECT * FROM event_log("04c78631-3dd7-4856-b2a6-7d84e9b2638b")
テーブルを作成または所有するパイプラインのイベント ログ レコードを取得するには、次のようにしますmy_catalog.my_schema.table1
SELECT * FROM event_log(TABLE(my_catalog.my_schema.table1))
TVF を呼び出すには、共有クラスターまたは SQLウェアハウスを使用する必要があります。 たとえば、共有クラスターにアタッチされたノートブックを使用したり、SQLSQLウェアハウスに接続された エディター を使用したりできます。
パイプラインのイベントのクエリを簡略化するために、パイプラインの所有者は event_log
TVF に対してビューを作成できます。 次の例では、パイプラインのイベント ログに対するビューを作成します。 このビューは、この記事に含まれるイベント ログ クエリの例で使用されます。
event_log
TVF は、パイプラインの所有者のみが呼び出すことができます。- パイプラインまたはクエリで
event_log
table valued 関数を使用して、複数のパイプラインのイベント・ログにアクセスすることはできません。 event_log
テーブル値関数で作成したビューを他のユーザーと共有することはできません。
CREATE VIEW event_log_raw AS SELECT * FROM event_log("<pipeline-ID>");
<pipeline-ID>
を DLT パイプラインの一意の識別子に置き換えます。ID は、DLT UI の [パイプラインの詳細 ] パネルで確認できます。
パイプライン実行の各インスタンスは 、更新 と呼ばれます。 多くの場合、最新の更新プログラムの情報を抽出したい場合があります。 次のクエリを実行して、最新の更新プログラムの識別子を検索し、 latest_update_id
一時ビューに保存します。 このビューは、この記事に含まれるイベント ログ クエリの例で使用されます。
CREATE OR REPLACE TEMP VIEW latest_update AS SELECT origin.update_id AS id FROM event_log_raw WHERE event_type = 'create_update' ORDER BY timestamp DESC LIMIT 1;