このページでは、SQL を使用してメトリック ビューを作成および管理する方法について説明します。
[前提条件]
- ソース データ オブジェクトに対する
SELECT権限が必要です。 - メトリック ビューを作成するスキーマには、
CREATE TABLE権限 とUSE SCHEMA権限 が必要です。 - また、スキーマの親カタログに対する
USE CATALOG権限 も必要です。 - Databricks Runtime 17.2 以降を実行している SQL ウェアハウスまたはその他のコンピューティング リソースに対するアクセス許可を使用できます。
メタストア管理者またはカタログ所有者は、これらすべての権限を許可できます。
MANAGE 権限を持つスキーマ所有者またはユーザーは、スキーマに対する USE SCHEMA 権限と CREATE TABLE 権限を付与できます。
メトリック ビューを作成する
CREATE VIEW句でWITH METRICSを使用してメトリック ビューを作成します。 メトリック ビューは、本文で有効な YAML 仕様で定義する必要があります。 メトリック ビューのソース データには、テーブル、ビュー、または SQL クエリを指定できます。
次のメトリック ビューのソース データは、ほとんどの Azure Databricks デプロイのサンプル カタログで使用できる samples.tpch.orders テーブルです。 次の SQL DDL では、現在のカタログとスキーマに orders_metric_view という名前のメトリック ビューが作成されます。 別のカタログとスキーマを指定するには、Unity カタログの 3 レベルの名前空間を使用します。
テーブル レベルおよび列レベルのコメントをメトリック ビュー定義に追加できます。
CREATE OR REPLACE VIEW orders_metric_view
WITH METRICS
LANGUAGE YAML
AS $$
version: 1.1
comment: "Orders KPIs for sales and financial analysis"
source: samples.tpch.orders
filter: o_orderdate > '1990-01-01'
dimensions:
- name: Order Month
expr: DATE_TRUNC('MONTH', o_orderdate)
- name: Order Status
expr: CASE
WHEN o_orderstatus = 'O' then 'Open'
WHEN o_orderstatus = 'P' then 'Processing'
WHEN o_orderstatus = 'F' then 'Fulfilled'
END
- name: Order Priority
expr: SPLIT(o_orderpriority, '-')[1]
measures:
- name: Order Count
expr: COUNT(1)
- name: Total Revenue
expr: SUM(o_totalprice)
- name: Total Revenue per Customer
expr: SUM(o_totalprice) / COUNT(DISTINCT o_custkey)
- name: Total Revenue for Open Orders
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus='O')
$$
メトリック ビューを変更する
メトリック ビューに関連付けられている定義を変更するには、 ALTER VIEWを使用します。 次の例では、orders_metric_view メトリック ビューのディメンションと測定にコメントを追加します。
ALTER VIEW orders_metric_view
AS $$
version: 1.1
comment: "Orders KPIs for sales and financial analysis"
source: samples.tpch.orders
filter: o_orderdate > '1990-01-01'
dimensions:
- name: Order Month
expr: DATE_TRUNC('MONTH', o_orderdate)
comment: "Month of order"
- name: Order Status
expr: CASE
WHEN o_orderstatus = 'O' then 'Open'
WHEN o_orderstatus = 'P' then 'Processing'
WHEN o_orderstatus = 'F' then 'Fulfilled'
END
comment: "Status of order: open, processing, or fulfilled"
- name: Order Priority
expr: SPLIT(o_orderpriority, '-')[1]
comment: "Numeric priority 1 through 5; 1 is highest"
measures:
- name: Order Count
expr: COUNT(1)
- name: Total Revenue
expr: SUM(o_totalprice)
comment: "Sum of total price"
- name: Total Revenue per Customer
expr: SUM(o_totalprice) / COUNT(DISTINCT o_custkey)
comment: "Sum of total price by customer"
- name: Total Revenue for Open Orders
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus='O')
comment: "Potential revenue from open orders"
$$
メトリック ビューに対する権限を付与する
メトリック ビューは Unity カタログのセキュリティ保護可能なオブジェクトであり、他のビューと同じアクセス許可モデルに従います。 権限は階層構造であるため、メタストア、カタログ、またはスキーマに対する特権は、その中に含まれるオブジェクトに連鎖します。 次の例では、 data_consumers グループ内のユーザーがメトリック ビューのクエリを実行するために必要な最小限の特権を付与します。
GRANT SELECT ON orders_metric_view to `data-consumers`;
Unity カタログの権限の詳細については、「 Unity カタログでの権限の管理」を参照してください。 グループの作成と管理の詳細については、「 グループ」を参照してください。
メトリック ビューの定義を取得する
オプションの DESCRIBE TABLE EXTENDED パラメーターと共にAS JSONを使用して、メトリック ビューの定義を表示します。
AS JSON パラメーターは省略可能です。 これを省略すると、人間の読者にとってより優れた出力が提供されますが、含める方がマシン コンシューマーにとって適しています。 次の例では、メトリック ビューとそのコンポーネントを記述する JSON 文字列を返します。
DESCRIBE TABLE EXTENDED orders_metric_view AS JSON
メトリック ビューを削除する
DROP VIEW構文を使用してメトリック ビューを削除します。
DROP VIEW orders_metric_view;
次のステップ
SQL を使用してメトリック ビューを作成したので、次の関連トピックを確認します。
メトリック ビューのクエリと使用
- メトリック ビューのクエリを実行します。
- AI/BI ダッシュボードでメトリック ビューを使用する。
- AI/BI Genie でメトリック ビューを使用する。
- メトリック ビューにアラートを設定します。