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

メトリクスビュー間の関係

備考

ベータ版

この機能はベータ版です。

Unity Catalogのメトリクスビュー間のリレーションシップには名前と方向があり、ソースメトリクスビューからターゲットメトリクスビューへ向かいます。カーディナリティ(MANY TO ONEなど)と、2つのメトリクスビューを結合する条件を記録します。リレーションシップはメタデータのみであり、結合を固定せずにメトリクスビュー同士の関係を表します。これにより、AIアシスタントやBIツールは、それぞれの分析に応じてこれらを組み合わせることができます。

リレーションシップを使用する理由​

メトリクスビューは通常、単一の粒度で事実または次元を記述します。例えば、orders_mv メトリクスビューは各注文の収益を測定し、customers_mv メトリクスビューは各顧客をセグメントおよびリージョンで記述します。多くの分析では、顧客セグメント別の注文収益の分析のように、このようなメトリクスビューを組み合わせています。

リレーションシップは固定結合を規定しないため、同じメトリクスビューでさまざまな分析をサポートできます。AI アシスタントと BI ツールは Unity Catalog からリレーションシップを読み取るため、カラム名から結合を推論するのではなく、同じ方法でメトリクスビューを結合します。

外部キー制約とリレーションシップの比較​

リレーションシップは 外部キー制約 に似ています。次の表はそれらの比較です。

観点

関係

外部キー制約

適用対象

Unity Catalogメトリクス ビュー

テーブルとマテリアライズドビュー

ターゲットに対する要件

なし

主キーまたは一意の制約

結合条件

任意の決定論的 BOOLEAN 条件 (ON)、または両方のメトリクスビューで同じ名前を持つ列 (USING)

外部キー列とターゲットのキー列との間の等価性

カーディナリティ

MANY TO ONE、 ONE TO MANY、 ONE TO ONE または、として宣言 MANY TO MANY

宣言されていません

適用

強制されません

強制されません

クエリー最適化

未使用

指定したときに使用されます RELY

観点

関係

外部キー制約

適用対象

Unity Catalogメトリクス ビュー

テーブルとマテリアライズドビュー

ターゲットに対する要件

なし

主キーまたは一意の制約

結合条件

任意の決定論的 BOOLEAN 条件 (ON)、または両方のメトリクスビューで同じ名前を持つ列 (USING)

外部キー列とターゲットのキー列との間の等価性

カーディナリティ

MANY TO ONE、 ONE TO MANY、 ONE TO ONE または、として宣言 MANY TO MANY

宣言されていません

適用

強制されません

強制されません

クエリー最適化

未使用

指定したときに使用されます RELY

リレーションシップと他の結合モデル化方法の比較​

次の表は、関係と他の結合モデリング方法の比較を示しています:

アプローチ

どこで定義するか

使用方法

メトリクスビュー間のリレーションシップ

ALTER VIEW ソースメトリクスビューで

メトリクスビューがメタデータとしてどのように組み合わされているかを記録します。AI アシスタントと BI ツールは、Unity Catalog からリレーションシップを読み取り、分析ごとに結合を自由に選択します。

メトリクスビュー内の結合

メトリクスビュー YAML 定義の joins セクション

メトリクスビューをクエリーするたびに実行される、テーブル間の結合のような固定結合を定義します。

ダッシュボードの関係

AI/BI dashboardの リレーションシップ ペイン

ダッシュボードのクエリーとフィルタリングのロジックをエンコードし、結合されたデータセット間で集計が正しく維持されるようにします。

アプローチ

どこで定義するか

使用方法

メトリクスビュー間のリレーションシップ

ALTER VIEW ソースメトリクスビューで

メトリクスビューがメタデータとしてどのように組み合わされているかを記録します。AI アシスタントと BI ツールは、Unity Catalog からリレーションシップを読み取り、分析ごとに結合を自由に選択します。

メトリクスビュー内の結合

メトリクスビュー YAML 定義の joins セクション

メトリクスビューをクエリーするたびに実行される、テーブル間の結合のような固定結合を定義します。

ダッシュボードの関係

AI/BI dashboardの リレーションシップ ペイン

ダッシュボードのクエリーとフィルタリングのロジックをエンコードし、結合されたデータセット間で集計が正しく維持されるようにします。

仕組み​

リレーションシップは、そのソースメトリクスビューに属します。追加すると、Databricks はそれをソースと共に保存し、ソースはそれを DESCRIBE TABLE EXTENDED および INFORMATION_SCHEMA.TABLE_CONSTRAINTS で返します。

リレーションシップを追加すると、Databricks は結合の ON 句を検証するのと同じ方法で条件を検証します。列が解決されない場合、または条件が有効な結合条件ではない場合、ステートメントは失敗します。

リレーションシップは、そのEndpointのライフサイクルに従います:

  • ソースメトリクスビューを削除すると、Databricks はそのリレーションシップを削除します。
  • ターゲットのメトリクスビューをドロップすると、それを指す関係は DESCRIBE TABLE EXTENDED や INFORMATION_SCHEMA.TABLE_CONSTRAINTS に表示されなくなります。

要件​

関係を操作するには、以下が必要です。

  • Databricks Runtime 19以降、またはSQL Warehouse。「メトリクスビュー機能の可用性」を参照してください。
  • 両方とも Unity Catalog メトリクスビューであるソースとターゲット。一時的なメトリクスビューはサポートされていません。
  • リレーションシップを追加するには、ソースメトリクスビューに対するMANAGE権限またはその所有権、ターゲットメトリクスビューに対するSELECT権限、および各メトリクスビューを含むカタログとスキーマに対するUSE CATALOGとUSE SCHEMAが必要です。権限の設定を参照してください。
  • リレーションシップを削除するには、ソースメトリクスビューに対するMANAGE権限またはその所有権と、そのカタログおよびスキーマに対するUSE CATALOGおよびUSE SCHEMAが必要です。ターゲットに対する権限は必要ありません。

関係を追加​

リレーションシップを追加するには、ソースメトリクスビューで ラン ALTER VIEW ... ADD CONSTRAINT を実行します。

SQL
ALTER VIEW source_metric_view ADD [ CONSTRAINT name ]
{ MANY | ONE } TO { MANY | ONE } RELATIONSHIP TO target_metric_view [ [ AS ] target_alias ]
{ ON condition | USING ( column [, ...] ) }

ステートメントを記述するときは、次のルールを使用します。

  • 名前 :名前は、スキーマ内のすべての制約間で一意である必要があります。CONSTRAINT nameを省略すると、Databricksは2つのメトリクスビューの非修飾名を使用して、リレーションシップに<source>_to_<target>という名前を付けます。たとえば、main.sales.orders_mvからmain.sales.customers_mvへの名前のないリレーションシップはorders_mv_to_customers_mvとなります。同じターゲットへの2つ目の名前のないリレーションシップは同じ名前を生成するため、失敗します。ソースから同じターゲットへのリレーションシップが複数ある場合は、各リレーションシップに名前を付けます。
  • カーディナリティ : MANY TO ONE、ONE TO MANY、ONE TO ONE、または MANY TO MANY を使用します。キーワードはアンダースコアではなくスペースで区切ってください。
  • ターゲット : ターゲットは、同じメタストアの任意のカタログまたはスキーマに配置できます。
  • ターゲットエイリアス :任意。エイリアスを使用して、ON 条件でターゲットを参照します。メトリクスビューからそれ自体への関係には、ソース名とは異なるエイリアスが必要です。
  • ON 条件 : 両方のメトリクスビューのカラムにわたる決定論的な BOOLEAN 式。各カラムにソース名、ターゲット名、またはターゲットエイリアスを修飾します。この条件はメジャーを参照できず、集計関数、ウィンドウ関数、またはジェネレーターを呼び出すことはできません。
  • USING カラム :両方のメトリクスビューで同じ名前で存在するカラム。

完全な構文と制限については、ALTER VIEWを参照してください。

例​

次の例では、両方のメトリクスビューに存在するカラムを使用して、各注文が1人の顧客に一致すると宣言しています。

SQL
ALTER VIEW main.sales.orders_mv ADD CONSTRAINT orders_customer
MANY TO ONE RELATIONSHIP TO main.sales.customers_mv
USING (customer_id);

次の例では、同じターゲットに対して 1 つずつ、同じソースから同じターゲットへの 2 つの関係を宣言しており、ターゲットが果たす役割ごとに 1 つずつあります:

SQL
ALTER VIEW main.travel.flights_mv ADD CONSTRAINT departure_city
MANY TO ONE RELATIONSHIP TO main.travel.cities_mv AS c
ON flights_mv.departure_city_id = c.city_id;

ALTER VIEW main.travel.flights_mv ADD CONSTRAINT arrival_city
MANY TO ONE RELATIONSHIP TO main.travel.cities_mv AS c
ON flights_mv.arrival_city_id = c.city_id;

次の例では、メトリクス ビューからそれ自体への関係を宣言します。mgrのエイリアスは、ターゲットをソースと区別します。

SQL
ALTER VIEW main.hr.employees_mv ADD CONSTRAINT manager
MANY TO ONE RELATIONSHIP TO main.hr.employees_mv AS mgr
ON employees_mv.manager_id = mgr.employee_id;

次の例では、顧客側からの ONE TO MANY 関係を宣言します。注文メトリクスビューではなく顧客メトリクスビューを管理できる場合は、この方向を使用します。

SQL
ALTER VIEW main.sales.customers_mv ADD CONSTRAINT customer_orders
ONE TO MANY RELATIONSHIP TO main.sales.orders_mv AS o
ON customers_mv.customer_id = o.customer_id;

ステートメントが成功すると、ソースメトリクスビューの DESCRIBE TABLE EXTENDED に新しい関係がリストされます。

関係を表示​

メトリクスビューの関係を表示するには、ソースメトリクスビューで DESCRIBE TABLE EXTENDED をランします。

SQL
DESCRIBE TABLE EXTENDED main.travel.flights_mv;

出力の # Constraints セクションには、各関係につき1つの行が含まれており、関係名とその定義が示されます。

Text
# Constraints
departure_city MANY TO ONE RELATIONSHIP TO `main`.`travel`.`cities_mv` AS `c` ON flights_mv.departure_city_id = c.city_id
arrival_city MANY TO ONE RELATIONSHIP TO `main`.`travel`.`cities_mv` AS `c` ON flights_mv.arrival_city_id = c.city_id

DESCRIBE TABLE EXTENDED ... AS JSON は、 table_constraints フィールドで同じリレーションシップを返します。

カタログ内のリレーションシップを一覧表示するには、INFORMATION_SCHEMA.TABLE_CONSTRAINTS に対してクエリーを実行し、RELATIONSHIP 制約タイプでフィルタリングします。

SQL
SELECT table_schema, table_name, constraint_name
FROM main.information_schema.table_constraints
WHERE constraint_type = 'RELATIONSHIP';

関係をドロップ​

リレーションシップをドロップするには、リレーションシップ名を使用してソース メトリクス ビューで ALTER VIEW ... DROP CONSTRAINT をランします:

SQL
ALTER VIEW main.travel.flights_mv DROP CONSTRAINT IF EXISTS arrival_city;

ソースメトリクスビューにその名前のリレーションシップがない場合、IF EXISTSがないとステートメントはNO_SUCH_CONSTRAINT_EXCEPTIONで失敗します。

ダッシュボードの作成にGenie Codeのリレーションシップを使用する​

Genie Code for dashboard authoring は、AI/BI dashboard を構築する際に Unity Catalog メトリクス ビューで宣言されたリレーションシップを使用します:

  • インポート : ダッシュボードでUnity Catalogメトリクスビューを使用する場合、エージェントはそこで宣言されている関係を読み取り、分析に必要な関係をダッシュボードの関係としてダッシュボードに追加します。
  • エクスポート : ダッシュボードのリレーションシップを Unity Catalog に保存するようエージェントに依頼すると、変更を承認した後、ソースメトリクスビューでリレーションシップが宣言されます。エクスポートには、両方のデータセットが Unity Catalog メトリクスビューである必要があり、エクスポートされたリレーションシップは常に ON 条件を使用します。要件に記載されている権限が必要です。

制限​

メトリクスビュー間のリレーションシップには、次の制限が適用されます。

  • 関係はALTER VIEWでのみ宣言できます。メトリクスビューYAML定義では関係を宣言できません。
  • Databricksはリレーションシップを強制したり、宣言されたカーディナリティに対してデータをチェックしたり、リレーションシップを使用してクエリーを最適化したりしません。RELYはサポートされていません。
  • ターゲットメトリクスビューは、そのインバウンドリレーションシップをリストしません。それらを見つけるには、各ソースメトリクスビューを確認してください。
  • ソースメトリクスビューには最大 50 の送信リレーションシップを、ターゲットメトリクスビューには最大 100 の受信リレーションシップを含めることができます。どちらかの制限を超えてリレーションシップを追加すると、UC_RESOURCE_QUOTA_EXCEEDEDで失敗します。
  • メトリクスビューの名前を変更しても、古いビューの名前を指定するON条件は更新されません。関係を削除し、新しい名前で再度追加します。
  • 関係は REST API や SDK では使用できません。それらを管理するにはSQLを使用します。

その他のリソース​