Delta Live Tables とは

Delta Live Tables は、信頼性、保守性、テスト可能性に優れたデータ処理パイプラインを構築するための宣言型フレームワークです。 ユーザーは、お持ちのデータに対して実行するための変換を定義します。Delta Live Tables は、タスク オーケストレーション、クラスター、監視、データ品質、エラー処理についての管理を行います。

Note

Delta Live Tables には Premium プランが必要です。 詳細については、Databricks アカウント チームにお問い合わせください。

別個の Apache Spark タスクを並べてデータ パイプラインを定義するのではなく、ストリーミング テーブルと具体化されたビューを定義して、システムにそれらを作成させ、最新の状態を維持させることができます。 個々の処理ステップに対してユーザーが定義したクエリに基づき、Delta Live Tables がデータの変換方法を管理します。 また、Delta Live Table の期待定義機能を使用して一定のデータ品質を確保することもできます。これは、データ品質に関する期待内容を定め、期待を満たさないレコードの扱い方を指定できる機能です。

ETL パイプラインの構築と実行に Delta Live Tables を使用することのメリットの詳細については、Delta Live Tables の製品ページを参照してください。

Delta Live Tables データセットとは

Delta Live Tables データセットとは、ストリーミング テーブル、具体化されたビュー、および、宣言型クエリの結果として保持されるビューです。 個々のデータセットがどのように処理されるかを以下の表で説明します。

データセットの型 定義されたクエリによってレコードが処理される方法
ストリーミング テーブル 1 件のレコードは 1 回だけ処理されます。 この種類では追加専用のソースが想定されています。
具体化されたビュー その時点のデータ状態における正確な結果を返すために、必要なときにレコードが処理されます。 具体化されたビューは、変換、集計、低速クエリや頻繁に使用される計算の事前計算などのデータ処理タスクに使用する必要があります。
表示 ビューへのクエリが実行されるたびにレコードが処理されます。 ビューは、パブリック データセットに発行すべきでない中間変換やデータ品質チェックのために使用します。

それぞれの種類のデータセットについて、以下のセクションで詳しく説明します。 データ処理要件の実装に適したデータセットの種類を選ぶ方法の詳細については、「ビュー、具体化されたビュー、ストリーミング テーブルの目的に応じた選び方」を参照してください。

ストリーミング テーブル

ストリーミング テーブルは、ストリーミングまたは増分データ処理を追加でサポートする Delta テーブルです。 ストリーミング テーブルでは、増大するデータセットに、各行を 1 回限り処理する形で対応できます。 ほとんどのデータセットは時間が経過するにつれて増大し続けるため、ストリーミング テーブルは、大半のインジェスト ワークロードに適しています。 ストリーミング テーブルは、データの鮮度と待ち時間の短さが要求されるパイプラインに最適です。 また、非常に大規模な変換を行う用途にも適しています。これは、新しいデータが入ってくるのに応じて増分方式で結果を計算し続けて最新の状態に保つことができ、更新のたびにソース データ全体を再計算する必要がないためです。 ストリーミング テーブルは追加専用のデータ ソースを想定して設計されています。

Note

ストリーミング テーブルには既定では追加専用のデータ ソースが必要とされますが、更新や削除が発生するような別のストリーミング テーブルをストリーミング ソースにする場合は、その動作をskipChangeCommits フラグでオーバーライドできます

具体化されたビュー

具体化されたビュー は、結果が事前に計算されているビューです。 所属先パイプラインの更新スケジュールに従って更新されます。 具体化されたビューは、入力にどのような変更が加えられたときも対応できる強力なビューです。 アップストリームのデータセットに、コンプライアンス、修正、集計、または一般的な CDC などの理由で変更が加えられると、パイプラインが更新されるたびに、それらを反映してクエリ結果が再計算されます。 Delta Live Tables では、具体化されたビューは Delta テーブルとして実装されています。ただし、効率的な更新適用に関連する複雑さが見えないように抽象化されているため、ユーザーはクエリの作成に専念できます。

表示

Azure Databricks のすべてのビューでは、クエリが実行されたときにソース データセットから結果を計算します。その際、可能であればキャッシュの最適化を利用します。 Delta Live Tables のビューはカタログには発行されないため、そのビューを定義したパイプライン内でのみ参照できます。 ビューは、エンド ユーザーやシステムに公開されるべきではない内容の中間クエリに便利です。 Databricks では、データ品質の制約を適用する目的や、ダウンストリームのクエリを複数駆動するようなデータセットを変換または強化する目的にビューを使用することを推奨しています。

Delta Live Tables 内で最初のデータセットを宣言する

Delta Live Tables では、Python と SQL の新しい構文を使用します。 Delta Live Tables 構文の使用を開始するには、「チュートリアル: 最初の Delta Live Tables パイプラインを実行する」の Python と SQL の例を参照してください。

Note

Delta Live Tables では、データセット定義と更新処理は分離されています。また、Delta Live Tables ノートブックは対話型実行を想定した機能ではありません。 「Delta Live Tables パイプラインとは」を参照してください。

Delta Live Tables パイプラインとは

パイプラインは、Delta Live Tables でデータ処理ワークフローの構成と実行に使用されるメイン ユニットです。

パイプライン内には、Python または SQL のソース ファイル内で宣言される、具体化されたビューやストリーミング テーブルが含まれます。 Delta Live Tables には、それらのテーブル間の依存関係を推測し、正しい順序で更新処理が行われるようにする機能があります。 個々のデータセットについて、Delta Live Tables は現在の状態と望ましい状態を比較し、効率的な処理方法によってデータセットの作成または更新を進めます。

Delta Live Tables パイプラインの設定項目は、以下 2 つの大きなカテゴリに分類されます。

  1. Delta Live Tables 構文を使用してデータセットを宣言するノートブックまたはファイルのコレクション (ソース コードと呼ばれる) を定義する構成。
  2. パイプライン インフラストラクチャ、依存関係管理、更新プログラムの処理方法、テーブルをワークスペースに保存する方法を制御する構成。

大半の構成内容は必須ではありませんが、一部については注意が必要です (特に、運用パイプラインの構成時)。 コーディネートは次のとおりです。

  • データをパイプラインの外部へ提供できるようにするには、Hive メタストアに発行するためのターゲット スキーマを宣言するか、Unity カタログに発行するためのターゲット カタログターゲット スキーマを宣言する必要があります。
  • データ アクセス許可は実行用のクラスターを介して構成されます。 使用するクラスターに、データ ソースとターゲット ストレージの場所 (指定されている場合) に対する適切なアクセス許可が構成されていることを確認してください。

Python と SQL でパイプライン用のソース コードを記述する方法の詳細については、「Delta Live Tables の SQL 言語リファレンス」および「Delta Live Tables の Python 言語リファレンス」を参照してください。

パイプラインの設定と構成の詳細については、「Delta Live Tables パイプラインの構成」を参照してください

最初のパイプラインをデプロイし、更新をトリガーする

Delta Live Tables でデータを処理するには、その前にパイプラインを構成する必要があります。 パイプラインを構成すると、更新をトリガーしてパイプライン内で各データセットの結果を計算できるようになります。 Delta Live Tables パイプラインの使用を開始する方法については、「チュートリアル: 最初の Delta Live Tables パイプラインを実行する」を参照してください。

パイプラインの更新とは

パイプラインにはインフラストラクチャがデプロイされ、ユーザーが更新を開始すると、パイプラインでデータの状態が再計算されます。 更新では、以下の処理が実行されます。

  • 正しい構成でクラスターを起動します。
  • 定義されているすべてのテーブルとビューを検出して、無効な列名、依存関係の欠落、構文エラーなどの分析エラーがないかどうかを調べます。
  • 使用可能な最新のデータを含むテーブルおよびビューを作成または更新します。

パイプラインは、ユース ケースのコストと待ち時間に関する要件に応じて、継続的に実行させることも、スケジュールに従って実行させることもできます。 「Delta Live Tables パイプラインで更新を実行する」を参照してください。

Delta Live Tables でデータを取り込む

Delta Live Tables は、Azure Databricks で使用できるすべてのデータ ソースをサポートしています。

Databricks では、大半のユース ケースにストリーミング テーブルを使用することを推奨しています。 また、クラウド オブジェクト ストレージに送られてくるファイルの読み込み方法としては自動ローダーを推奨しています。 Delta Live Tables では、ほとんどのメッセージ バスから直接データを取り込むことができます。

クラウド ストレージへのアクセスの構成の詳細については、「クラウド ストレージの構成」を参照してください。

自動ローダーの対応していない形式については、Python または SQL を使用することで、Apache Spark でサポートされているすべての形式をクエリできます。 「Delta Live Tables を使用してデータを読み込む」を参照してください。

データ品質の監視と適用

データセットの内容にデータ品質の制限を適用するには、期待定義を使用します。 制約に違反したレコードの追加を防ぐ従来のデータベースでの CHECK 制約とは異なり、期待値では、データ品質の要件を満たさないデータを処理するときに柔軟性が得られます。 この柔軟性により、煩雑になると予想されるデータと、厳密な品質要件を満たす必要があるデータを処理し保存できます。 「Delta Live Tables を使用してデータ品質を管理する」を参照してください。

Delta Live Tables は、Delta Lake の機能を拡張した製品です。 Delta Live Tables によって作成および管理されるテーブルは、Delta テーブルであるため、Delta Lake における Delta テーブルと同じ保証内容や機能が提供されます。 「Delta Lake とは」を参照してください。

Delta Live Tables には、Delta Lake に設定できる多数のテーブル プロパティのほか、数種類のテーブル プロパティが追加されています。 Delta Live Tables プロパティのリファレンス、および Delta テーブル プロパティのリファレンスを参照してください。

Delta Live Tables によるテーブルの作成と管理の仕組み

Delta Live Tables で作成されるテーブルは Azure Databricks によって自動的に管理され、各テーブルの現在の状態を正しく計算するための更新処理の方法に関する決定や、さまざまなメンテナンス タスクと最適化タスクの実行は自動的に行われます。

ほとんどの操作に関するターゲット テーブルの更新、挿入、削除処理は、すべて Delta Live Tables に任せることをお勧めします。 詳細情報と制限事項については、「削除または更新を手動で実行する手段の確保」を参照してください。

Delta Live Tables によって実行されるメンテナンス タスク

Delta Live Tables では、テーブルが更新されてから 24 時間以内にメンテナンス タスクが実行されます。 メンテナンスによって古いバージョンのテーブルを削除することで、クエリのパフォーマンスを向上させ、コストを削減することができます。 既定では、システムは完全な OPTIMIZE 操作を実行してから VACUUM を実行します。 テーブルのプロパティpipelines.autoOptimize.managed = false を設定すると、テーブルに対する OPTIMIZE を無効化できます。 メンテナンス タスクは、メンテナンス タスクがスケジュールされる 24 時間以内にパイプライン更新が実行された場合にのみ実行されます。

制限事項

次の制限事項が適用されます。

  • Delta Live Tables で作成されるすべてのテーブルは Delta テーブルです。
  • Delta Live Tables のテーブルは 1 回だけ定義できます。つまり、あるテーブルをターゲットにできる操作は、すべての Delta Live Tables パイプラインに含まれる操作のうち 1 つだけです。
  • ID 列は、APPLY CHANGES INTO のターゲットとなるテーブルではサポートされておらず、具体化されたビューの更新時に再計算される可能性があります。 このため、Databricks では、Delta Live Tables の ID 列をストリーミング テーブルでのみ使用することをお勧めします。 「Delta Lake で ID 列を使用する」を参照してください。
  • 1 つの Azure Databricks ワークスペースで同時に実行できるパイプライン更新の数は 100 件までに制限されています。

Unity カタログでの Delta Live テーブルの使用に固有の要件と制限事項の一覧については、「Delta Live Tables パイプラインで Unity カタログを使用する」を参照してください

その他のリソース