メトリクスビュー間の関係
ベータ版
この機能はベータ版です。
Unity Catalogのメトリクスビュー間のリレーションシップには名前と方向があり、ソースメトリクスビューからターゲットメトリクスビューへ向かいます。カーディナリティ(MANY TO ONEなど)と、2つのメトリクスビューを結合する条件を記録します。リレーションシップはメタデータのみであり、結合を固定せずにメトリクスビュー同士の関係を表します。これにより、AIアシスタントやBIツールは、それぞれの分析に応じてこれらを組み合わせることができます。
リレーションシップを使用する理由
メトリクスビューは通常、単一の粒度で事実または次元を記述します。例えば、orders_mv メトリクスビューは各注文の収益を測定し、customers_mv メトリクスビューは各顧客をセグメントおよびリージョンで記述します。多くの分析では、顧客セグメント別の注文収益の分析のように、このようなメトリクスビューを組み合わせています。
リレーションシップは固定結合を規定しないため、同じメトリクスビューでさまざまな分析をサポートできます。AI アシスタントと BI ツールは Unity Catalog からリレーションシップを読み取るため、カラム名から結合を推論するのではなく、同じ方法でメトリクスビューを結合します。
外部キー制約とリレーションシップの比較
リレーションシップは 外部キー制約 に似ています。次の表はそれらの比較です。
観点 | 関係 | 外部キー制約 |
|---|---|---|
適用対象 | Unity Catalogメトリクス ビュー | テーブルとマテリアライズドビュー |
ターゲットに対する要件 | なし | 主キーまたは一意の制約 |
結合条件 | 任意の決定論的 | 外部キー列とターゲットのキー列との間の等価性 |
カーディナリティ |
| 宣言されていません |
適用 | 強制されません | 強制されません |
クエリー最適化 | 未使用 | 指定したときに使用されます |
リレーションシップと他の結合モデル化方法の比較
次の表は、関係と他の結合モデリング方法の比較を示しています:
アプローチ | どこで定義するか | 使用方法 |
|---|---|---|
メトリクスビュー間のリレーションシップ |
| メトリクスビューがメタデータとしてどのように組み合わされているかを記録します。AI アシスタントと BI ツールは、Unity Catalog からリレーションシップを読み取り、分析ごとに結合を自由に選択します。 |
メトリクスビュー YAML 定義の | メトリクスビューをクエリーするたびに実行される、テーブル間の結合のような固定結合を定義します。 | |
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 を実行します。
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人の顧客に一致すると宣言しています。
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 つずつあります:
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のエイリアスは、ターゲットをソースと区別します。
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 関係を宣言します。注文メトリクスビューではなく顧客メトリクスビューを管理できる場合は、この方向を使用します。
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 をランします。
DESCRIBE TABLE EXTENDED main.travel.flights_mv;
出力の # Constraints セクションには、各関係につき1つの行が含まれており、関係名とその定義が示されます。
# 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 制約タイプでフィルタリングします。
SELECT table_schema, table_name, constraint_name
FROM main.information_schema.table_constraints
WHERE constraint_type = 'RELATIONSHIP';
関係をドロップ
リレーションシップをドロップするには、リレーションシップ名を使用してソース メトリクス ビューで ALTER VIEW ... DROP CONSTRAINT をランします:
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を使用します。