次の方法で共有


SQL を使用してメトリック ビューを作成および管理する

このページでは、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 を使用してメトリック ビューを作成したので、次の関連トピックを確認します。

メトリック ビューのクエリと使用

高度なメトリック ビュー機能

代替の作成方法

ガバナンスとセキュリティ