Azure Databricksには、具体化されたビューとストリーミング テーブルを構築する 2 つの方法 (スタンドアロン パイプラインまたは Lakeflow パイプライン) が用意されています。 どちらも同じ宣言型エンジンで実行され、Unity カタログのマネージド テーブルが生成されます。 違いは、作成して操作するパイプラインの量です。
-
スタンドアロンの具体化されたビューまたはストリーミング テーブルは、SQL 構文で定義された単一のデータセットです。 Azure Databricks、バックグラウンドでパイプラインを作成および管理して更新します。 スタンドアロン データセットは、Databricks SQL ウェアハウスから作成して更新するか、
spark.sql()を使用してサーバーレス汎用コンピューティング上のノートブックから作成および更新します。 スタンドアロン パイプラインを参照してください。 - Lakeflow パイプラインは、ユニットとして作成して操作するパイプラインです。 依存関係オーケストレーション、系列、パイプライン全体の運用機能を使用して、SQL とPythonに多数のデータセットを含めることができます。 「パイプラインとは」を参照してください。
スタンドアロンの具体化されたビューまたはストリーミング テーブルを作成すると、パイプラインの種類がの [MV/ST ページにマネージド パイプラインが表示されます。 Lakeflow パイプラインで定義されているデータセットには、 ETLのパイプラインの種類があります。
スタンドアロン パイプラインを使用する場合
スタンドアロンの具体化されたビューとストリーミング テーブルは、次の場合に使用します。
- 単一の具体化されたビューまたはストリーミング テーブルを使用して、クエリを高速化したり、データを変換したりできます。
- Databricks SQL ウェアハウス、SQL エディター、またはサーバーレス汎用コンピューティング上のノートブックから作業し、ジョブ内の
SCHEDULE、TRIGGER ON UPDATE、または SQL タスクを使用して更新をスケジュールします。 - シンク、マルチステージ オーケストレーション、またはその他のパイプライン専用機能は必要ありません。
Lakeflow パイプラインを使用するタイミング
次の場合に Lakeflow パイプラインを使用します。
- 中間データセットを含むマルチステージ パイプラインを構築し、Azure Databricks がデータセット間の依存関係とデータ リネージを管理します。 中間データセットは、カタログに発行することも、パイプラインに対してプライベートに保持することもできます。
- Pythonでテーブルとフローを作成します。
- シンク (
create_sink()またはforeach_batch_sink()) を使用して、外部 Delta テーブルまたはイベント ストリーミング先に書き込みます。 -
create_auto_cdc_from_snapshot_flow()を使用して、データベース スナップショットから変更データ キャプチャを適用します。 - パイプライン全体でトリガー実行または継続実行が必要です。
Comparison
| プロパティ | スタンドアロン ストリーミング テーブルまたは具体化されたビュー | パイプラインストリーミングテーブルまたはマテリアライズドビュー |
|---|---|---|
| オーサリング インターフェイス | Databricks SQL ウェアハウスから、またはサーバーレス汎用コンピューティング上のノートブック内の spark.sql() を使用した SQL 構文 |
SQL とPython |
| Scope | Azure Databricksが管理するパイプライン内の 1 つのデータセット | 依存関係オーケストレーションと系列を含む、1 つのパイプライン内の多くのデータセット |
| 実行 |
SCHEDULE、TRIGGER ON UPDATE、または SQL タスクを使用してトリガーされる |
トリガーまたは連続 |
| パイプラインのみの機能 | シンク、create_auto_cdc_from_snapshot_flow()、プライベートデータセット |
|
| パイプラインの種類のラベル | MV/ST |
ETL |
| パイプライン間の移動 | サポートされていません。ターゲット パイプラインでテーブルを再作成する | サポートされている |