Azure SQL データリネージ: Azure SQL および Synapse SQL の列リネージ

Azure SQL データリネージ これは、Azure SQL Database、Azure SQL Managed Instance、および Synapse SQL で実行される T-SQL コード内でデータがどのように流れるかを列ごとに示すマップです。どのソース列がどのターゲット列にデータを供給するのか、どのビュー、ストアドプロシージャ、結合、および関数を経由するのかがわかります。これを最も正確に作成するには、T-SQL 自体を解析するのが最善の方法です。 Gudu SQLFlow 専用のAzure SQL方言パーサーを使用してまさにそれを実行し、結果として得られる列レベルのリネージをMicrosoft Purviewにプッシュして、Azure環境の他の部分と並べて表示させることができます。

30秒で試してみましょう: Azure SQL クエリまたはストアドプロシージャを貼り付けます 無料のSQLFlow系統可視化ツールAzure SQL 方言を選択すると、対話型の列レベルの系統図が表示されます。クラウド版には無料利用枠があります。

Azure SQLのデータリネージが解析の問題である理由

Azure では、実際にデータを整形する変換ロジックは、パイプライン定義にはほとんど存在しません。それは T-SQL に存在します。ビューの上に重ねられたビュー、Azure Data Factory アクティビティから呼び出されるストアドプロシージャ、 マージ ステートメント、一時テーブル、および実行時に組み立てられる動的SQL。パイプラインのメタデータのみから構築された系統図は、ボックスは認識できるものの、その内部で何が起こっているかは認識できません。

それを知るために レポート.月次収益 は次のように計算されます SUM(orders.amount) フィルター 注文状況データベース エンジンが行うように SQL を読み取る何かが必要です。つまり、CTE、サブクエリ、ビュー、および 選択 * 展開後、ソース列からターゲット列へのデータフローを追跡します。これが静的SQL分析であり、SQLFlowはまさにこの目的のために設計されています。SQLFlowはSQLコードとスキーマメタデータのみを読み取り、テーブルの行には一切手を加えません。

Microsoft Purviewの範囲と、そのギャップを解析がどのように埋めるか

Microsoft Purview は、カタログファーストのプラットフォームとして当然果たすべき役割を真に果たしています。Azure 環境全体にわたるアセットのスキャンと分類、機密データのマッピング、そして Azure Data Factory や Synapse パイプラインなど、統合されたデータ移動ツールのリネージ表示などが可能です。Azure をどのような規模で運用している場合でも、Purview はリネージ管理を行う上で適切な選択肢と言えるでしょう。 表示.

ギャップは、系統がどのように伝わるかにある 計算されたPurview の自動 SQL 系統には、複雑な T-SQL に関するギャップがあります。制御フロー、一時テーブルのステージング、動的 SQL を含むストアドプロシージャなどです。 sp_executesql まさにそこは、自動化されたカバレッジが途切れ、データ系列の境界が失われる場所である。そして、最もリスクの高い変革が発生する場所でもある。

効果的な分業体制:SQLFlowはT-SQLを解析し、プロシージャや動的SQLを含む列レベルのデータ系列を計算し、Microsoft Purviewアダプタを介してエクスポートします。SQLFlowが計算を行い、Purviewがシステム全体の表示を担当します。カタログは1つにまとめられ、SQLを多用するカタログの隅々まで情報が埋まるようになります。

SQLFlowがAzure SQLコードから抽出するもの

SQLFlowは、汎用ANSI文法ではなく、39種類の異なる方言に対応したパーサーを搭載しており、Azure SQLもその一つで、SQL Serverと並んでT-SQLファミリーに属します。Synapse専用SQLプールもT-SQLを使用するため、Synapse SQLスクリプトにも同様の分析が適用されます。Azure SQLコードの場合、SQLFlowは以下を生成します。

  • 列レベルの系統: 各出力列について、その列の元となる正確なソース列、およびそれらの間の関数、型変換、サブクエリ、結合、集合演算子が示されます。参照は、CTE、ビュー、サブクエリ、およびスター展開によって解決されます。
  • 直接的な血統と間接的な血統: で使用される列 どこ 句、 参加する 状態、または グループ分け 出力には反映されないものの、出力に影響を与える。SQLFlowはこれを個別の切り替え可能な関係タイプとしてモデル化するため、影響分析では、ほとんどのデータリネージツールが無視するフィルタ列を検出できる。
  • ストアドプロシージャの系統: T-SQLファミリー専用のプロシージャパーサーは、プロシージャパラメータと一時テーブルを通じたデータフローを追跡し、どのプロシージャがどのプロシージャを呼び出しているかを示す対話型の呼び出しグラフを表示します。
  • 動的SQL解決: プロシージャ内で組み立てられ、実行されるSQL エグゼクティブ また sp_executesql スキップされるのではなく、解決され分析される。これは、自動化された系統追跡において最もよくある盲点である。
  • DDLからER図を作成する: テーブル定義から推測される主キーと外部キーの関係を、エンティティ関係図として図示します。

入力としては、貼り付けたSQL、アップロードしたスクリプトファイル、またはJDBC経由で取得したライブメタデータを使用できます。そのため、SQLFlowをAzure SQLデータベースに向け、ビューとプロシージャの定義を自動的に収集させることができます。

例:動的SQLを使用したT-SQLプロシージャ

これは、自動系統スキャナーを破綻させる手順の一例です。データを一時テーブルにステージングし、その後最終的な 入れる 文字列として扱い、それを実行します。

CREATE PROCEDURE dbo.usp_refresh_regional_sales @region NVARCHAR(50) AS BEGIN SELECT o.customer_id, SUM(o.amount) AS total_amount INTO #staged FROM dbo.orders AS o WHERE o.region = @region GROUP BY o.customer_id; DECLARE @sql NVARCHAR(MAX) = N' INSERT INTO dbo.regional_sales (customer_id, customer_name, total_amount) SELECT s.customer_id, c.customer_name, s.total_amount FROM #staged AS s JOIN dbo.customers AS c ON c.customer_id = s.customer_id;'; EXEC sp_executesql @sql; END

プロシージャ境界で停止するスキャナは、ここでは有用な情報を何も報告しません。ターゲットテーブルは文字列リテラルの中にしか現れないからです。SQLFlowはプロシージャ本体を解析し、動的SQLを解決し、一時テーブルを通るデータフローをたどって、次の結果を生成します。

  • 地域別売上合計金額SUM(orders.amount)、 経由 #staged.total_amount (直系の子孫)
  • 地域販売顧客名顧客.顧客名 (直系の子孫)
  • 注文地域 結合キー 顧客.顧客ID / 注文の顧客ID 間接的な系統としてフラグ付けされる:それらは結果には現れずに、結果をフィルタリングして接続します。

名前を変更する 注文地域 パイプラインメタデータの観点から見ると、何もそれに依存していないように見える。一方、解析された観点から見ると、このプロシージャは空のテーブルの更新を静かに開始する。これが列レベルの系統情報がもたらす違いである。

系統情報をMicrosoft Purviewに取り込む

エンタープライズ向け SQLFlow の展開には、Microsoft Purview、DataHub、および OpenMetadata 用のエクスポート アダプタが含まれています。Azure 環境におけるワークフローはシンプルです。SQLFlow はデータベースをバッチ スキャンし (100 を超えるデータベースと 100 万を超える列を持つ環境にも対応し、増分スキャンと永続的なリネージ リポジトリを備えています)、実際の T-SQL から列レベルのリネージを計算し、それを Purview に公開します。アナリストとスチュワードは、既に使用しているカタログで作業を続けることができ、その背後にあるリネージはベスト エフォートではなく、パーサー グレードの精度となります。

独自の統合を構築したい場合は、同じデータ系列をJSONまたはCSV形式でエクスポートしたり、REST API経由で利用したりできます。

Azure環境のデプロイオプション

最適動作方法
SQLFlow クラウド今日は実際のクエリで試してみます無料プランのあるSaaS。プレミアムプランは月額$49.99です。T-SQLを貼り付けるか、ブラウザでソースに接続してください。
SQLFlow オンプレミスSQLテキストがネットワーク内に留まる必要がある規制対象ワークロードお客様ご自身のAzureサブスクリプションまたはデータセンターにDocker/Kubernetesをインストールできます。必要に応じてエアギャップ環境を構築することも可能です。料金は、選択したデータベースタイプごとに月額$500または1回限りの$4,800で、最大2台のサーバーにインストールできます。
REST API / Javaライブラリ / CLICIまたはデータプラットフォーム内での系統情報の自動化パイプラインやJVMアプリケーションから呼び出し可能な、同一の分析エンジン。

どのエディションを使用しても、プライバシーに関する方針は同じです。SQLFlowはSQLコードの静的解析のみを実行し、テーブルの行データを読み取ることは決してありません。

Azure SQL、SQL Server、それとも他のもの?

Azure SQL とオンプレミスの SQL Server は T-SQL ファミリーを共有していますが、SQLFlow では別々の方言であり、それぞれ独自のパーサーを持っています。自社ホストの SQL Server を基盤としている場合は、 SQL Serverのデータリネージ このページではその側面を詳しく解説しています。ハイブリッド環境は、1 つのリポジトリで両方を分析できます。また、まだアプローチ (カタログネイティブの系統、ランタイムログベースの系統、オープンソースのパーサー) を比較している場合は、 最高のデータ系統ツール 各カテゴリがどこに当てはまるのか、そしてSQL解析が適切な解決策となるのはどのような場合なのかを明確に示します。

Under the hood, all of this runs on the General SQL Parser engine, developed commercially since the mid-2000s and validated against roughly 13,600 per-dialect SQL test fixtures. Depth on hard SQL is the product.

よくある質問

SQLFlowはAzure Synapse SQLをサポートしていますか?

はい。Synapse専用SQLプールはT-SQLを使用しており、SQLFlowのAzure SQL方言パーサーはT-SQLファミリーに対応しています。SynapseのSQLスクリプト、ビュー、ストアドプロシージャは、Azure SQL Databaseのコードと同様の方法で分析できます。

SQLFlowは、ストアドプロシージャ内の動的SQLを通じてデータの流れを追跡できますか?

はい。プロシージャ内で組み立てられ、実行されるSQL エグゼクティブ また sp_executesql 処理はスキップされることなく解決および分析され、プロシージャパラメータと一時テーブルを通じて履歴が追跡されます。SQLFlow は、プロシージャ間の呼び出しの呼び出しグラフも描画します。

SQLFlowの系統情報はどのようにしてMicrosoftの管轄下に入るのでしょうか?

エンタープライズ展開で利用可能な組み込みのエクスポートアダプタを介して、SQLFlowはT-SQLを解析して列レベルのデータリネージを計算し、それをPurviewに公開して、Purview独自のスキャン結果とともにカタログに表示します。カスタム統合のために、JSON、CSV、およびREST API出力が利用可能です。

SQLFlowは、私のAzure SQLテーブル内のデータにアクセスする必要がありますか?

いいえ。SQLFlowはSQLコードの静的解析を実行し、必要に応じてJDBC経由でスキーマメタデータ(テーブル、ビュー、プロシージャの定義)を読み取ります。行を読み取ることはありません。オンプレミス版では、SQLテキストもネットワーク内に保持されます。

Purviewの資産レベルビューと比較して、列レベルの系統情報はどのような利点がありますか?

精度。資産レベルのデータ系列は、あるテーブルがレポートにどのようにデータを提供しているかを示しますが、列レベルのデータ系列は、どの列がどの列にどの変換を介してデータを提供しているかを示し、さらにフィルターや結合によってのみ結果に影響を与える列を特定します。これこそが、影響分析や監査において実際に必要とされる粒度です。

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

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

Azure SQL の系統を今すぐ確認しましょう

最も複雑なT-SQLプロシージャを無料のビジュアライザーに貼り付けるか、Azure環境のスキャンとPurviewへのエクスポートについてご相談ください。