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
スキーマにテーブルを作成する権限を付与するには、上記のいずれかの権限またはロールを持つユーザーが次のクエリを実行できます。SQLCREATE SCHEMA lineage_data.lineagedemo;
GRANT USE SCHEMA, CREATE on SCHEMA lineage_data.lineagedemo to `data_engineers`;
リネージのキャプチャと探索
リネージデータをキャプチャーするには:
-
SAPDatabricks ランディングページに移動し、サイドバーで [
新規] をクリックして、メニューから[ノートブック] を選択します。
-
ノートブックの名前を入力し、 デフォルト言語 で SQL を選択します。
-
作成 をクリックします。
-
最初のノートブックセルに、次のクエリを入力します。
SQLCREATE 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 -
クエリを実行するには、セルをクリックして Shift+Enter キーを押すか、
をクリックして セルの実行 を選択します。
Catalog Explorer を使用して、これらのクエリによって生成されたリネージを表示するには:
-
SAP Databricks ワークスペースの上部バーにある [検索 ] ボックスで、
lineage_data.lineagedemo.dinner
テーブルを検索して選択します。 -
「リネージュ 」タブを選択します。リネージパネルが表示され、関連テーブルが表示されます(この例では、
menu
テーブルです)。 -
データリネージのインタラクティブグラフを表示するには、 リネージグラフを見る をクリックします。 デフォルトでは、グラフには 1 つのレベルが表示されます。 ノード上の
アイコンをクリックすると、使用可能な接続がある場合は、さらに多くの接続が表示されます。
-
リネージグラフ内のノードを接続する矢印をクリックして、 リネージ接続 パネルを開きます。 リネージ接続 パネルには、ソース・テーブルとターゲット・テーブル、ノートブック、ジョブなど、接続に関する詳細が表示されます。
-
dinner
テーブルに関連付けられたノートブックを表示するには、 リネージ接続 パネルでノートブックを選択するか、リネージグラフを閉じ てノートブックをクリックします 。ノートブックを新しいタブで開くには、ノートブック名をクリックします。 -
列レベルのリネージを表示するには、グラフ内の列をクリックして、関連する列へのリンクを表示します。 たとえば、[full_menu] 列をクリックすると、列の派生元であるアップストリーム列が表示されます。
リネージを別の言語(例 Python)で表示するには:
-
前に作成したノートブックを開き、新しいセルを作成して、次の 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") -
セル内をクリックして Shift+Enter キーを押すか、
をクリックして [セルの実行] を選択して、セルを実行します。
-
SAP Databricks ワークスペースの上部バーにある [検索 ] ボックスで、
lineage_data.lineagedemo.price
テーブルを検索して選択します。 -
依存関係 タブに移動し、 リネージグラフを表示 をクリックします。
アイコンをクリックして、クエリによって生成されたデータリネージを探索します。
-
リネージグラフ内のノードを接続する矢印をクリックして、 リネージ接続 パネルを開きます。 リネージ接続 パネルには、ソース・テーブルとターゲット・テーブル、ノートブック、ジョブなど、接続に関する詳細が表示されます。
リネージの権限
リネージグラフは、 Unity Catalogと同じ権限モデルを共有しています。 Unity Catalog メタストアに登録されているテーブルやその他のデータ オブジェクトは、それらのオブジェクトに対して少なくとも BROWSE
のアクセス許可を持つユーザーにのみ表示されます。ユーザーがテーブルに対する BROWSE
権限または SELECT
権限を持っていない場合、そのリネージを探索できません。リネージ グラフには、ユーザーが適切なオブジェクト アクセス許可を持っている限り、メタストアに接続されているすべてのワークスペースの Unity Catalog オブジェクトが表示されます。
たとえば、次のコマンドを実行します userA
:
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
スキーマ内の任意のテーブルのリネージグラフを表示できます。
GRANT BROWSE on lineage_data to `userB@company.com`;
同様に、リネージユーザーは、ノートブックのようなワークスペースオブジェクトを表示するための特定の権限を持っている必要があります。 また、ワークスペースオブジェクトに関する詳細情報を表示できるのは、そのオブジェクトが作成されたワークスペースにログインしている場合のみです。他のワークスペース内のワークスペースレベルのオブジェクトに関する詳細な情報は、リネージグラフではマスクされます。
リネージデータの削除
次の手順では、Unity Catalog に格納されているすべてのオブジェクトを削除します。これらの手順は、必要な場合にのみ使用してください。たとえば、コンプライアンス要件を満たすためなどです。
リネージデータを削除するには、 Unity Catalog オブジェクトを管理しているメタストアを削除する必要があります。 データは 90 日以内に削除されます。
Databricks Assistantを使用してテーブルリネージを取得する
Databricks Assistant では、テーブルリネージと知見に関する詳細な情報を提供しています。
アシスタントを使用してリネージ情報を取得するには:
- SAPDatabricks ランディングページに移動し、サイドバーの[カタログ] をクリックしてカタログエクスプローラー
開きます。
- カタログ名をクリックし、右上隅にある
アシスタント アイコンをクリックします。
- アシスタントのプロンプトで、次のように入力します。
- /getTableLineages を使用して、アップストリームとダウンストリームの依存関係を表示します。
- /getTableInsights を使用して、ユーザー アクティビティやクエリ パターンなどのメタデータ駆動型の知見にアクセスできます。
これらのクエリにより、Assistant は "ダウンストリーム リネージを表示する" や "このテーブルに対して最も頻繁にクエリを実行するユーザー" などの質問に答えることができます。