次の方法で共有


Delta Live Tables 向けのパイプラインを開発する

パイプラインのコードの開発とテストは、他の Apache Spark ワークロードとは異なります。 この記事では、パイプラインのコードを開発するときのサポートされる機能、ベスト プラクティス、考慮事項の概要について説明します。 その他の推奨事項とベスト プラクティスについては、「ソフトウェア開発および DevOps のベスト プラクティスを Delta Live Table パイプラインに適用」を参照してください。

コードを検証したり、更新を実行したりするには、ソース コードをパイプライン構成に追加する必要があります。 「Delta Live Tables パイプラインの構成方法についてご覧ください。」

パイプラインのソース コードに対して有効なファイル

Delta Live Tables パイプラインのコードには、Python または SQL を使用できます。 Python と SQL 両方のソース コード ファイルを使って 1 つのパイプラインをサポートできますが、各ファイルに含めることができる言語は 1 つだけです。 「Python を使用してパイプライン コードを開発する」と「SQL を使用してパイプライン コードを開発する」をご覧ください。

ノートブックとワークスペース ファイルを使って、パイプラインのソース コードを指定できます。 ワークスペース ファイルは、任意の IDE または Databricks ファイル エディターで作成された Python または SQL スクリプトを表します。 「ワークスペース ファイルとは」を参照してください。

Python コードをモジュールまたはライブラリとして開発する場合は、コードをインストールしてインポートしてから、ソース コードとして構成された Python ノートブックまたはワークスペース ファイルから、メソッドを呼び出す必要があります。 「Delta Live Tables パイプラインの Python 依存関係を管理する」を参照してください。

Python ノートブックで任意の SQL コマンドを使う必要がある場合は、spark.sql("<QUERY>") という構文パターンを使って、SQL を Python コードとして実行できます。

Unity Catalog 関数を使うと、任意の Python ユーザー定義関数を登録して、SQL で使用できます。 「Unity Catalog のユーザー定義関数 (UDF)」をご覧ください。

Delta Live Tables の開発機能の概要

Delta Live Tables は、Azure Databricks の多くの機能を拡張して活用し、新しい機能と概念を導入するものです。 次の表は、パイプライン コードの開発をサポートする概念と機能の概要です。

機能 説明
開発モード 新しいパイプラインは、既定で開発モードで実行するように構成されます。 Databricks では、対話型の開発とテストには開発モードを使うことをお勧めします。 「開発モードと実稼働モード」をご覧ください。
検証 Validate の更新では、テーブルに対して更新を実行することなく、パイプライン ソース コードの正確性が検証されます。 「テーブルの更新を待たずにパイプラインにエラーがないかどうかを確認する」をご覧ください。
ノートブック Delta Live Tables パイプラインのソース コードとして構成されたノートブックでは、コードの検証と更新の実行のための対話型オプションが提供されます。 「ノートブックでの Delta Live Tables パイプラインの開発とデバッグ」をご覧ください。
パラメーター ソース コードとパイプライン構成でパラメーターを使って、テストと拡張性を簡素化します。 「Delta Live Tables パイプラインでパラメーターを使用する」をご覧ください。
Databricks アセット バンドル Databricks アセット バンドルを使うと、パイプラインの構成とソース コードをワークスペース間で移動できます。 「Delta Live Tables パイプラインを Databricks アセット バンドル プロジェクトに変換する」をご覧ください。

開発とテスト用のサンプル データセットを作成する

Databricks では、開発とテスト用のデータセットを作成し、予想されるデータと、形式の誤りや破損が含まれる可能性のあるレコードを使って、パイプラインのロジックをテストすることをお勧めします。 開発とテストに役立つデータセットを作成するには、次のような複数の方法があります。

  • 運用データセットからデータのサブセットを選択する。
  • PII を含むソースには、匿名化されたデータや人為的に生成されたデータを使用する。
  • ダウンストリーム変換ロジックに基づいて、適切に定義された結果を含むテスト データを作成する。
  • データ スキーマの想定から外れるレコードを作成し、潜在的なデータの破損、形式に誤りがあるレコード、アップストリーム データの変更を予測する。

たとえば、次のコードを使用してデータセットを定義するノートブックがあるとします。

CREATE OR REFRESH STREAMING TABLE input_data AS SELECT * FROM read_files("/production/data", "json")

次のようなクエリを使用して、特定のレコードを含むサンプル データセットを作成できます。

CREATE OR REFRESH MATERIALIZED VIEW input_data AS
SELECT "2021/09/04" AS date, 22.4 as sensor_reading UNION ALL
SELECT "2021/09/05" AS date, 21.5 as sensor_reading

次に示すのは、公開されたデータをフィルター処理して、開発またはテストのために運用データのサブセットを作成する方法の例です。

CREATE OR REFRESH MATERIALIZED VIEW input_data AS SELECT * FROM prod.input_data WHERE date > current_date() - INTERVAL 1 DAY

こうしたさまざまなデータセットを使用するには、変換ロジックを実装するノートブックを使用して複数のパイプラインを作成します。 各パイプラインは input_data データセットからデータを読み取ることができますが、環境に固有のデータセットを作成するノートブックを含むように構成されています。