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

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クエリにすることができます。

次のメトリクス ビューのソース データは、ほとんどのDatabricksデプロイメントのサンプル カタログで利用可能なsamples.tpch.ordersテーブルです。 次のSQL DDL は、現在のカタログとスキーマにorders_metric_viewという名前のメトリクス ビューを作成します。 別のカタログとスキーマを指定するには、 Unity Catalog 3 レベルの名前空間を使用します。

テーブルレベルおよび列レベルのコメントをメトリクスビュー定義に追加できます。

SQL
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メトリクス ビューのディメンションとメジャーにコメントを追加します。

SQL
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 Catalogセキュリティ保護可能なオブジェクトであり、他のビューと同じ権限モデルに従います。 権限は階層化されているため、メタストア、カタログ、またはスキーマに対する権限は、その中に含まれるオブジェクトにカスケードされます。次の例では、 data_consumersグループ内のユーザーがメトリクス ビューをクエリするために必要な最小限の権限を付与します。

SQL
GRANT SELECT ON orders_metric_view to `data-consumers`;

Unity Catalog の権限の詳細については、 「Unity Catalog での権限の管理」を参照してください。グループの作成と管理の詳細については、 「グループ」を参照してください。

メトリクスビュー定義の取得

メトリクス ビューの定義を表示するには、オプションのAS JSONを指定してDESCRIBE TABLE EXTENDED使用します。 AS JSON問題はオプションです。 これを省略すると、人間の読者にとってより良い出力が得られ、これを含めると、機械の消費者にとってより良い出力が得られます。次の例では、メトリクス ビューとそのコンポーネントを説明するJSON文字列を返します。

SQL
DESCRIBE TABLE EXTENDED orders_metric_view AS JSON

メトリクス ビューをドロップする

メトリクス ビューを削除するには、 DROP TABLE構文を使用します。

SQL
DROP TABLE orders_metric_view;

次のステップ

SQL使用してメトリクス ビューを作成したので、次の関連トピックを調べてください。

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

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

代替の作成方法

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