LIVEスキーマ(レガシー)
この記事では、 LIVE仮想スキーマの従来の構文と動作の概要について説明します。
LIVE仮想スキーマはLakeflow Spark宣言型パイプラインのレガシー機能であり、非推奨とみなされます。 このモードで作成されたパイプラインでは、従来の公開モードとLIVE仮想スキーマを引き続き使用できます。
Databricks では、すべてのパイプラインを新しい公開モードに移行することをお勧めします。移行には 2 つの選択肢があります。
- テーブル (マテリアライズドビューとストリーミング テーブルを含む) を従来のパイプラインから、当然公開モードを使用するパイプラインに移動します。 パイプライン間でテーブルを移動する方法の詳細については、 「パイプライン間でのテーブルの移動」を参照してください。
- 現在従来の公開モードを使用しているパイプラインでデフォルトの公開モードを有効にします。「パイプラインでデフォルトの公開モードを有効にする」を参照してください。
どちらの方法も一方向の移行です。テーブルをレガシー モードに戻すことはできません。
従来のLIVE仮想スキーマと従来の公開モードのサポートは、Databricks の将来のバージョンでは削除されます。
レガシー公開モードのパイプラインは、 Lakeflow Spark宣言型パイプライン設定 UI の [概要] フィールドに示されます。 パイプラインの JSON 仕様でtargetフィールドが設定されている場合は、パイプラインが従来の公開モードを使用していることを確認することもできます。
パイプライン構成 UI を使用して、レガシー公開モードで新しいパイプラインを作成することはできません。 従来のLIVE構文を使用して新しいパイプラインをデプロイする必要がある場合は、Databricks アカウント担当者にお問い合わせください。
LIVE 仮想スキーマとは何ですか?
Lakeflow Spark宣言型パイプラインの仮想公開モードでデータセットの依存関係を分析するために、 LIVE仮想スキーマは必要なくなりました。
LIVEスキーマは、パイプライン内で作成または更新されるすべてのデータセットの仮想境界を定義する、 Lakeflow Spark宣言型パイプラインのプログラミング概念です。 設計上、 LIVEスキーマは公開されたスキーマ内のデータセットに直接関連付けられません。代わりに、 LIVEスキーマを使用すると、ユーザーがスキーマにデータセットを公開したくない場合でも、パイプライン内のロジックを計画して実行できます。
レガシー公開モードのパイプラインでは、 LIVEキーワードを使用して、現在のパイプライン内の読み取り用の他のデータセット (例: SELECT * FROM LIVE.bronze_table ) を参照できます。 新しいLakeflow Spark宣言型パイプラインの安心公開モードでは、この構文は黙って無視されます。つまり、修飾されていない識別子は現在のスキーマを使用します。 「ターゲット カタログとスキーマを設定する」を参照してください。
パイプラインの従来の公開モード
LIVE仮想スキーマは、 Lakeflow Spark宣言型パイプラインのレガシー公開モードで使用されます。 2025 年 2 月 5 日より前に作成されたすべてのテーブルでは、デフォルトで従来の公開モードが使用されます。
次の表は、レガシー公開モードのパイプラインで作成または更新されたすべてのマテリアライズドビューとストリーミング テーブルの動作を説明しています。
ストレージオプション | 保管場所またはカタログ | ターゲットスキーマ | 挙動 |
|---|---|---|---|
Hiveメタストア | 指定なし | 指定なし | データセットのメタデータとデータはDBFSルートに保存されます。 Hive metastoreにデータベース オブジェクトが登録されていません。 |
Hiveメタストア | クラウド オブジェクト ストレージへの URI またはファイル パス。 | 指定なし | データセットのメタデータとデータは、指定されたストレージの場所に保存されます。Hive metastoreにデータベース オブジェクトが登録されていません。 |
Hiveメタストア | 指定なし | Hive metastore内の既存または新しいスキーマ。 | データセットのメタデータとデータはDBFSルートに保存されます。 パイプライン内のすべてのマテリアライズドビューとストリーミング テーブルは、 Hive metastore内の指定されたスキーマに公開されます。 |
Hiveメタストア | クラウド オブジェクト ストレージへの 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 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ウェアハウスを使用する必要があります。 たとえば、 SQLウェアハウスに接続されたSQLエディターを使用できます。
パイプラインのイベントのクエリを簡素化するために、パイプラインの所有者はevent_log TVF 上にビューを作成できます。次の例では、パイプラインのイベント ログのビューを作成します。このビューは、この記事に含まれるイベント ログ クエリの例で使用されます。
event_logTVF はパイプライン所有者のみが呼び出すことができます。- パイプラインまたはクエリで
event_logテーブル値関数を使用して、複数のパイプラインのイベント ログにアクセスすることはできません。 event_logテーブル値関数で作成されたビューを他のユーザーと共有することはできません。
CREATE VIEW event_log_raw AS SELECT * FROM event_log("<pipeline-ID>");
<pipeline-ID>パイプラインの一意の識別子に置き換えます。ID は、 Lakeflow Spark宣言型パイプライン 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;