Databricks Data Lineage: Spark SQLとDeltaの列レベルのデータリネージ

Databricksのデータリネージ これは、データが Spark SQL および Delta Lake コードを介してどのように流れるかを示す列レベルのマップです。ブロンズ、シルバー、ゴールドの各レイヤーで、どのソース列が各ターゲット テーブルにフィードするか、また、どの変換 (結合、集計、 マージ ロジックは途中で発生します。Unity Catalog は、それを通して実行されるワークロードの履歴を自動的にキャプチャします。 Gudu SQLFlow SQL自体を解析することで他のすべてをカバーできるため、Databricksへの移行、Unity Catalog以外で実行されるSQL、およびDatabricksと他のプラットフォームにまたがる環境のためのツールとなります。

30秒で試してみましょう: Databricksを貼り付ける マージする またはノートブッククエリを 無料のSQLFlow系統可視化ツールDatabricks方言を選択すると、列レベルの系統図がすぐに表示されます。クラスターやワークスペースへのアクセスは不要です。

Unityカタログの履歴情報以上のものが必要になるのはどのような場合ですか?

Unity Catalogは、その機能において非常に優れています。Databricksは、Unity Catalogを介して実行されるクエリやジョブについて、特別なツールを使わなくても自動的に履歴情報を取得します。もし、すべてのワークロードが1つのDatabricksアカウント内にあり、Unity Catalogを介して実行されているのであれば、まずはそこから始めてみてください。

このギャップは構造的なものであり、バグではありません。実行時にキャプチャされたコードリネージは、キャプチャを実行する環境で既に実行されたコードに対してのみ存在します。そのため、チームが代わりにSQL解析アプローチを採用する状況が4つあります。

  • Databricks上でコードを実行する前に。 Oracle、Teradata、またはSQL Serverから移行する場合、本番環境で実行を開始する前に、従来のSQLと書き換えられたDatabricks SQLの依存関係グラフが必要になります。
  • Unityカタログに一切アクセスしないSQL。 ノートブックからファイルにエクスポートされたSQL、Gitリポジトリ内のスクリプト、外部スケジューラまたはETLツールによって生成されたSQL、Unityカタログにまだアップグレードされていないワークスペース上のコード。
  • クロスプラットフォーム環境。 SQL Server で開始し、Databricks で変換され、Snowflake に格納されるパイプラインには、3 つのデータベースすべてにまたがる 1 つのリネージ グラフが必要です。SQLFlow は、Databricks と Snowflake の 39 のデータベース用の方言固有のパーサーを出荷しています。 Spark SQL それらを含めて、チェーン全体が1つのエンジンで分析されます。
  • 既に運用しているカタログ内の系統情報。 組織がDatabricksのUIではなく、DataHub、Microsoft Purview、またはOpenMetadataを標準として採用している場合は、それらのプラットフォームにエクスポートできるデータリネージが必要です。SQLFlowには、これら3つすべてに対応するエクスポートアダプタが含まれています。

この2つのアプローチは相互補完的です。Unity Catalogは実行された内容を教えてくれ、静的SQL分析はコードの動作(まだ実行されていないコードも含む)を教えてくれます。

SQLFlowがDatabricks SQLを解析する方法

Gudu SQLFlow is an automated SQLデータリネージツール built on the General SQL Parser, a commercial SQL compiler front-end developed since the mid-2000s and validated against roughly 13,600 per-dialect test fixtures. It ships a dedicated Databricks dialect parser in the Spark SQL family — not a generic ANSI grammar — so Databricks-specific constructs are parsed as first-class syntax rather than approximated.

分析は完全に静的です。SQLFlow は SQL テキストとオプションでスキーマ メタデータを読み取ります。Delta テーブルの行を読み取ることは決してありません。 オンプレミス版 SQL テキスト自体はネットワークから出ることはありません。Docker または Kubernetes にデプロイされ、エアギャップで実行されます。各ステートメントに対して、パーサーは完全な意味モデルを構築し、CTE、サブクエリ、ビュー、および を通じてすべての列参照を解決します。 選択 * 展開後、データフローアナライザーは、列単位でソースとターゲットの関係を抽出します。

貼り付けたステートメント、アップロードしたファイル、JDBC経由のデータベースメタデータ、またはDatabricksをターゲットとするdbtプロジェクト用のdbtマニフェストなど、システム環境に存在するあらゆる形式のSQLを入力として使用できます。出力は、インタラクティブでドリルダウン可能な図と、JSON、CSV、PNG、またはREST APIレスポンスとして構造化されたデータ系列データです。

例:デルタマージによる列レベルの系統

マージする Delta Lake パイプラインの主力であり、単一のマージで読み取り、マッチング、更新、挿入が一度に行われるため、テーブルレベルのリネージがほとんど役に立たないステートメントです。ゴールドレイヤーのアップサートを考えてみましょう。

MERGE INTO gold.customer_ltv AS t USING ( SELECT o.customer_id, SUM(o.amount) AS lifetime_value, MAX(o.order_ts) AS last_order_ts FROM silver.orders o WHERE o.status = 'completed' GROUP BY o.customer_id ) AS s ON t.customer_id = s.customer_id WHEN MATCHED THEN UPDATE SET t.lifetime_value = s.lifetime_value, t.last_order_ts = s.last_order_ts WHEN NOT MATCHED THEN INSERT (customer_id, lifetime_value, last_order_ts) VALUES (s.customer_id, s.lifetime_value, s.last_order_ts);

SQLFlowはこれを解決し、正確な列レベルの関係性を明らかにします。 ゴールド顧客生涯価値 由来する 銀の注文数 を通して 和()両方を通じて アップデート そして 入れる 支店。 last_order_ts 由来する silver.orders.order_ts を通して MAX()サブクエリエイリアス s 解決済み。系統は中間テーブルではなく、実際のソーステーブルを指し示す。

SQLFlowが分類するものも同様に重要です。 間接的な系統: 銀の注文状況 決して目標には着弾しないが、 どこ フィルターをかけることで、マージされたすべての値の形状が決まり、 顧客ID 両方を駆動する グループ分け そして一致条件。SQLFlow は直接データフローと間接影響を、別々に切り替え可能な関係タイプとしてモデル化します。競合するツールのほとんどはこの区別をしていませんが、誰かが「変更するとどうなるか」と尋ねたときにまさに必要なのはこれです。 状態 「顧客LTVの語彙が壊れる?」正直な答えはイエスであり、影響を意識した履歴のみがそれを示します。

Databricksへの移行(またはDatabricksからの移行)

移行は、チームがプラットフォーム外で Databricks SQL を分析する最も一般的な理由の 1 つはです。Unity Catalog は移行計画の策定には役立ちません。なぜなら、必要なリネージは Databricks 上で実行されたことのないコードを記述しているからです。パーサーベースのワークフローでは、次のことが可能です。

  1. 供給源となる土地を地図上に表示する。 レガシーSQL(Oracle、Teradata、SQL Serverなど、ストアドプロシージャとその中の動的SQLを含む)をSQLFlowで実行して、真の依存関係グラフを取得します。これにより、最初に移行すべきコードと、不要なコードがわかります。
  2. 書き換え内容を検証する。 書き換えられた Databricks SQL を Databricks 方言パーサーで解析し、リネージグラフを比較します。ターゲット列のソースが Teradata バージョンと Delta バージョンで変更されている場合、出荷前に書き換えバグを発見したことになります。
  3. 孤立したファイルが存在しないことを確認してください。 切り替え後、両方のデータベース環境をバッチスキャンします。SQLFlowは、100以上のデータベースと100万以上の列を持つ環境を、永続的なデータリネージリポジトリへの増分スキャンによって処理します。

同じクロスダイレクティブ機能は逆方向または横方向にも機能します。倉庫の一部が代わりに Snowflake に移行する場合、 Snowflakeの系統ワークフロー 両プラットフォームは同一のエンジンを使用しているため、結果として比較可能なグラフにまとめられる。

DatabricksのデータリネージをDataHub、Purview、またはOpenMetadataにエクスポートする

カタログファーストのプラットフォームはメタデータの記録システムとして優れており、多くの組織ではすべてのデータプラットフォームでカタログファーストのプラットフォームを義務付けています。SQLFlow は、その基盤となるリネージ エンジンとして機能します。SQL を解析し、列レベルおよび間接的なリネージを計算し、専用のエクスポート アダプタを通して結果をプッシュします。 DataHub、Microsoft Purview、およびOpenMetadataJSONおよびCSVエクスポート機能に加え、REST APIによりあらゆるカスタム要件に対応できます。

これは、マルチプラットフォーム問題に対する実際的な解決策でもあります。2つの異なるモデルを持つ2つの異なる抽出器によって生成された系統図を1つのグラフに統合するのは困難です。39のすべての方言に対して1つのグラフを生成し、既に実行しているカタログにエクスポートする1つのパーサーを使用すれば、この問題を回避できます。

それを運用する方法

オプション最適注記
SQLFlow クラウド今日は実際のDatabricks SQLで試してみますブラウザ版は無料、プレミアム版は月額$49.99
SQLFlow オンプレミス規制環境下。SQLは内部でのみ使用する必要がある。Docker/Kubernetes、エアギャップ対応。データベースタイプごとに月額$500または1回限りの$4,800。2台のサーバーにインストール可能。
REST API / CLI / JavaライブラリCIまたは独自のプラットフォームでのリネージの自動化同じエンジン、ヘッドレス。製品に図をレンダリングするための30以上のメソッドAPIを備えた埋め込み可能なJavaScriptウィジェット

よくある質問

SQLFlowはUnityカタログの系譜を置き換えるものですか?

いいえ、それはUnity Catalogを補完するものです。Unity Catalogは、それを通して実行されるワークロードの履歴を自動的に記録します。SQLFlowはSQLを静的に分析するため、実行前のコード(マイグレーション)、Unity Catalogの外部で実行されるSQL、Databricksと他のプラットフォームにまたがる環境を網羅し、その結果をDataHub、Purview、またはOpenMetadataにエクスポートします。

SQLFlowは私のDatabricksワークスペースやデータへのアクセスを必要としますか?

いいえ。SQLFlowはSQLコードの静的解析を実行し、必要に応じてスキーマメタデータを使用して参照を解決します。Deltaテーブルの行を読み取ることはありません。オンプレミス版では、SQLテキストもネットワーク内に留まります。

SQLFlowはMERGE INTO文を通して系譜を追跡できますか?

はい。デルタ航空の場合。 マージするSQLFlow は、 使用 サブクエリは、各ターゲット列を、 アップデート入れる 分岐し、一致条件とフィルターを間接的(影響)系統として分類します。

DatabricksはSQLFlowにおけるSpark SQLとは異なる方言なのでしょうか?

はい。SQLFlow の 39 のサポート対象方言には、Databricks と Spark SQL が別々に記載されており、それぞれ Spark SQL ファミリーに独自のパーサーがあります。Databricks に対して記述された SQL には Databricks を選択してください。専用の Spark SQLの系譜ページ オープンソースのSparkワークロード向け。

Databricks上のdbtプロジェクトでも動作しますか?

はい。dbtマニフェストをインポートすると、SQLFlowがDatabricks方言を使用してコンパイル済みSQLを解析し、モデル全体にわたる列レベルの系統情報を生成します。

SQLFlowの料金はいくらですか?

SQLFlow Cloudは無料からスタート。プレミアムプランは月額$49.99。オンプレミスプランは月額$500、または選択したデータベースタイプごとに1回限りの$4,800。詳細は以下をご覧ください。 価格ページ.

Databricksの系譜を今すぐ辿ってみよう

Spark SQLクエリまたはDelta MERGEを無料のビジュアライザーに貼り付けるか、移行環境全体のスキャンについてご相談ください。