다음을 통해 공유


SQL을 사용하여 메트릭 뷰 만들기 및 관리

이 페이지에서는 SQL을 사용하여 메트릭 뷰를 만들고 관리하는 방법을 설명합니다.

필수 조건

  • 원본 데이터 개체에 대한 권한이 있어야 합니다 SELECT .
  • 메트릭 뷰를 CREATE TABLE 만들려는 스키마의 권한과 USE SCHEMA 권한이 있어야 합니다.
  • 스키마의 부모 카탈로그에 대한 권한도 있어야 USE CATALOG 합니다.
  • SQL 웨어하우스 또는 Databricks Runtime 17.2 이상을 실행하는 다른 컴퓨팅 리소스에 대한 사용 권한을 사용할 수 있습니다.

metastore 관리자 또는 카탈로그 소유자는 이러한 모든 권한을 부여할 수 있습니다. MANAGE 권한이 있는 스키마 소유자 또는 사용자는 스키마에 대한 USE SCHEMACREATE TABLE 권한을 부여할 수 있습니다.

메트릭 뷰 만들기

CREATE VIEWWITH METRICS 절을 사용하여 메트릭 뷰를 만듭니다. 메트릭 뷰는 본문에 유효한 YAML 사양으로 정의되어야 합니다. 메트릭 뷰의 원본 데이터는 테이블, 뷰 또는 SQL 쿼리일 수 있습니다.

다음 메트릭 뷰 samples.tpch.orders 의 원본 데이터는 대부분의 Azure Databricks 배포에 대해 샘플 카탈로그에서 사용할 수 있는 테이블입니다. 다음 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을 사용하여 메트릭 보기를 만들었으므로 다음 관련 항목을 살펴보세요.

메트릭 뷰 쿼리 및 사용

고급 메트릭 보기 기능

대체 생성 방법

거버넌스 및 보안