メインコンテンツまでスキップ

Unity Catalog を使用したデータリネージのキャプチャと表示

この記事では、Catalog Explorer を使用してデータリネージをキャプチャして視覚化する方法について説明します。

Unity Catalog を使用して、SAP Databricksで実行されるクエリ間でランタイム データリネージをキャプチャできます。リネージはすべての言語でサポートされており、列レベルまでキャプチャされます。 リネージデータには、クエリに関連するノートブックが含まれます。 リネージは、Catalog Explorerでほぼリアルタイムで視覚化できます。

リネージは、 Unity Catalog メタストアにアタッチされているすべてのワークスペース全体で集計されます。 つまり、1つのワークスペースでキャプチャされたリネージは、そのメタストアを共有する他のワークスペースで見ることができます。 具体的には、メタストアに登録されているテーブルやその他のデータ オブジェクトは、メタストアに接続されているすべてのワークスペースで、それらのオブジェクトに対して少なくとも BROWSE のアクセス許可を持つユーザーに表示されます。ただし、他のワークスペースのノートブックなど、ワークスペースレベルのオブジェクトに関する詳細な情報はマスクされます。

リネージデータは 1 年間保持されます。

必要条件

Unity Catalogを使用してデータリネージをキャプチャするには、次のものが必要です。

  • ワークスペースで Unity Catalog が有効になっている必要があります。
  • テーブルは Unity Catalog メタストアに登録する必要があります。
  • クエリでは、Spark データフレーム (データフレーム を返す Spark SQL 関数など) または Databricks SQL インターフェイスを使用する必要があります。
  • テーブルまたはビューのリネージを表示するには、ユーザーは少なくともテーブルまたはビューの親カタログに対する BROWSE 権限を持っている必要があります。 親カタログは、ワークスペースからもアクセスできる必要があります。
  • ノートブックのリネージ情報を表示するには、ワークスペースのアクセス制御設定で定義されたこれらのオブジェクトに対する権限が必要です。

注記
  • 次の例では、カタログ名 lineage_data とスキーマ名 lineagedemoを使用しています。別のカタログとスキーマを使用するには、例で使用されている名前を変更します。

  • この例を完了するには、スキーマに対する CREATE 権限と USE SCHEMA 権限が必要です。メタストア管理者、カタログ所有者、スキーマ所有者、またはスキーマに対する MANAGE 権限を持つユーザーは、これらの権限を付与できます。たとえば、グループ 'data_engineers' 内のすべてのユーザーに、lineage_data カタログの lineagedemo スキーマにテーブルを作成する権限を付与するには、上記のいずれかの権限またはロールを持つユーザーが次のクエリを実行できます。

    SQL
    CREATE SCHEMA lineage_data.lineagedemo;
    GRANT USE SCHEMA, CREATE on SCHEMA lineage_data.lineagedemo to `data_engineers`;

リネージのキャプチャと探索

リネージデータをキャプチャーするには:

  1. SAPDatabricks ランディングページに移動し、サイドバーで [新しいアイコン 新規] をクリックして、メニューから[ノートブック] を選択します。

  2. ノートブックの名前を入力し、 デフォルト言語SQL を選択します。

  3. 作成 をクリックします。

  4. 最初のノートブックセルに、次のクエリを入力します。

    SQL
    CREATE TABLE IF NOT EXISTS
    lineage_data.lineagedemo.menu (
    recipe_id INT,
    app string,
    main string,
    dessert string
    );

    INSERT INTO lineage_data.lineagedemo.menu
    (recipe_id, app, main, dessert)
    VALUES
    (1,"Ceviche", "Tacos", "Flan"),
    (2,"Tomato Soup", "Souffle", "Creme Brulee"),
    (3,"Chips","Grilled Cheese","Cheesecake");

    CREATE TABLE
    lineage_data.lineagedemo.dinner
    AS SELECT
    recipe_id, concat(app," + ", main," + ",dessert)
    AS
    full_menu
    FROM
    lineage_data.lineagedemo.menu
  5. クエリを実行するには、セルをクリックして Shift+Enter キーを押すか、 実行メニュー をクリックして セルの実行 を選択します。

Catalog Explorer を使用して、これらのクエリによって生成されたリネージを表示するには:

  1. SAP Databricks ワークスペースの上部バーにある [検索 ] ボックスで、 lineage_data.lineagedemo.dinner テーブルを検索して選択します。

  2. 「リネージュ 」タブを選択します。リネージパネルが表示され、関連テーブルが表示されます(この例では、 menu テーブルです)。

  3. データリネージのインタラクティブグラフを表示するには、 リネージグラフを見る をクリックします。 デフォルトでは、グラフには 1 つのレベルが表示されます。 ノード上の プラス記号アイコン アイコンをクリックすると、使用可能な接続がある場合は、さらに多くの接続が表示されます。

  4. リネージグラフ内のノードを接続する矢印をクリックして、 リネージ接続 パネルを開きます。 リネージ接続 パネルには、ソース・テーブルとターゲット・テーブル、ノートブック、ジョブなど、接続に関する詳細が表示されます。

    リネージグラフ。

  5. dinnerテーブルに関連付けられたノートブックを表示するには、 リネージ接続 パネルでノートブックを選択するか、リネージグラフを閉じ てノートブックをクリックします 。ノートブックを新しいタブで開くには、ノートブック名をクリックします。

  6. 列レベルのリネージを表示するには、グラフ内の列をクリックして、関連する列へのリンクを表示します。 たとえば、[full_menu] 列をクリックすると、列の派生元であるアップストリーム列が表示されます。

    フルメニューコラムリネージ。

リネージを別の言語(例 Python)で表示するには:

  1. 前に作成したノートブックを開き、新しいセルを作成して、次の Python コードを入力します。

    Python
    %python
    from pyspark.sql.functions import rand, round
    df = spark.range(3).withColumn("price", round(10*rand(seed=42),2)).withColumnRenamed("id","recipe_id")

    df.write.mode("overwrite").saveAsTable("lineage_data.lineagedemo.price")

    dinner = spark.read.table("lineage_data.lineagedemo.dinner")
    price = spark.read.table("lineage_data.lineagedemo.price")

    dinner_price = dinner.join(price, on="recipe_id")
    dinner_price.write.mode("overwrite").saveAsTable("lineage_data.lineagedemo.dinner_price")
  2. セル内をクリックして Shift+Enter キーを押すか、実行メニュー をクリックして [セルの実行] を選択して、セルを実行します。

  3. SAP Databricks ワークスペースの上部バーにある [検索 ] ボックスで、 lineage_data.lineagedemo.price テーブルを検索して選択します。

  4. 依存関係 タブに移動し、 リネージグラフを表示 をクリックします。プラス記号アイコンアイコンをクリックして、クエリによって生成されたデータリネージを探索します。

    リネージグラフを拡張しました。

  5. リネージグラフ内のノードを接続する矢印をクリックして、 リネージ接続 パネルを開きます。 リネージ接続 パネルには、ソース・テーブルとターゲット・テーブル、ノートブック、ジョブなど、接続に関する詳細が表示されます。

リネージの権限

リネージグラフは、 Unity Catalogと同じ権限モデルを共有しています。 Unity Catalog メタストアに登録されているテーブルやその他のデータ オブジェクトは、それらのオブジェクトに対して少なくとも BROWSE のアクセス許可を持つユーザーにのみ表示されます。ユーザーがテーブルに対する BROWSE 権限または SELECT 権限を持っていない場合、そのリネージを探索できません。リネージ グラフには、ユーザーが適切なオブジェクト アクセス許可を持っている限り、メタストアに接続されているすべてのワークスペースの Unity Catalog オブジェクトが表示されます。

たとえば、次のコマンドを実行します userA:

SQL
GRANT USE SCHEMA on lineage_data.lineagedemo to `userA@company.com`;
GRANT SELECT on lineage_data.lineagedemo.menu to `userA@company.com`;

userA``lineage_data.lineagedemo.menuテーブルのリネージグラフを表示すると、menuテーブルが表示されます。ダウンストリーム lineage_data.lineagedemo.dinner テーブルなど、関連付けられたテーブルに関する情報は表示できません。dinner テーブルは、userAへの表示でmaskedノードとして表示されuserAアクセス権限のないテーブルからグラフを展開してダウンストリームテーブルを表示することはできません。

次のコマンドを実行して、 BROWSE にパーミッションを userBに付与すると、そのユーザーは lineage_data スキーマ内の任意のテーブルのリネージグラフを表示できます。

SQL
GRANT BROWSE on lineage_data to `userB@company.com`;

同様に、リネージユーザーは、ノートブックのようなワークスペースオブジェクトを表示するための特定の権限を持っている必要があります。 また、ワークスペースオブジェクトに関する詳細情報を表示できるのは、そのオブジェクトが作成されたワークスペースにログインしている場合のみです。他のワークスペース内のワークスペースレベルのオブジェクトに関する詳細な情報は、リネージグラフではマスクされます。

リネージデータの削除

警告

次の手順では、Unity Catalog に格納されているすべてのオブジェクトを削除します。これらの手順は、必要な場合にのみ使用してください。たとえば、コンプライアンス要件を満たすためなどです。

リネージデータを削除するには、 Unity Catalog オブジェクトを管理しているメタストアを削除する必要があります。 データは 90 日以内に削除されます。

Databricks Assistantを使用してテーブルリネージを取得する

Databricks Assistant では、テーブルリネージと知見に関する詳細な情報を提供しています。

アシスタントを使用してリネージ情報を取得するには:

  1. SAPDatabricks ランディングページに移動し、サイドバーの[カタログ] をクリックしてカタログエクスプローラーデータアイコン。開きます。
  2. カタログ名をクリックし、右上隅にある 製品内ヘルプアシスタントアイコン - 色 アシスタント アイコンをクリックします。
  3. アシスタントのプロンプトで、次のように入力します。
    • /getTableLineages を使用して、アップストリームとダウンストリームの依存関係を表示します。
    • /getTableInsights を使用して、ユーザー アクティビティやクエリ パターンなどのメタデータ駆動型の知見にアクセスできます。

これらのクエリにより、Assistant は "ダウンストリーム リネージを表示する" や "このテーブルに対して最も頻繁にクエリを実行するユーザー" などの質問に答えることができます。

Databricks Assistant テーブルリネージと知見を提供しています。