本頁說明如何使用 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 目錄三層命名空間。
您可以將表格層級和資料行層級註解新增至度量檢視定義。
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 Catalog 的可保護物件,並遵循與其他檢視相同的許可權模型。 權限是階層式的,因此中繼存放區、目錄或結構描述的權限會串聯至其中包含的物件。 下列範例會授與群組中 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 建立度量檢視,請探索下列相關主題: