의미 체계 뷰 쿼리

의미 체계 뷰를 쿼리하는 데 필요한 권한

의미 체계 뷰를 소유하지 않은 역할을 사용하는 경우에는 해당 의미 체계 뷰에 대해 SELECT 권한이 부여되어야 해당 의미 체계 뷰를 쿼리할 수 있습니다.

참고

의미 체계 뷰를 쿼리하려는 경우 의미 체계 뷰에서 사용되는 테이블에 대해서는 SELECT 권한이 필요하지 않으며 의미 체계 뷰 자체에 대해서만 SELECT 권한이 필요합니다.

이 동작은 표준 뷰를 쿼리하는 데 필요한 권한 과 일치합니다.

의미 체계 뷰에 대한 권한 부여에 대한 자세한 내용은 의미 체계 뷰에 권한 부여하기 섹션을 참조하십시오.

의미 체계 뷰 쿼리하기

의미 체계 뷰를 쿼리하려면 FROM 절에서 SEMANTIC_VIEW 절 을 사용합니다. 다음 예제에서는 이전에 정의한 tpch_analysis 의미 체계 뷰에서 customer_market_segment 차원 및 order_average_value 메트릭을 선택합니다.

SELECT * FROM SEMANTIC_VIEW(
    tpch_analysis
    DIMENSIONS customer.customer_market_segment
    METRICS orders.order_average_value
  );
Copy
+-------------------------+---------------------+
| CUSTOMER_MARKET_SEGMENT | ORDER_AVERAGE_VALUE |
+-------------------------+---------------------+
| AUTOMOBILE              |     142570.25947219 |
| FURNITURE               |     142563.63314267 |
| MACHINERY               |     142655.91550608 |
| HOUSEHOLD               |     141659.94753445 |
| BUILDING                |     142425.37987558 |
+-------------------------+---------------------+

다음 예제에서는 tpch_analysis 의미 체계 뷰에서 customer_name 차원 및 c_customer_order_count 팩트를 선택합니다.

SELECT * FROM SEMANTIC_VIEW(
    tpch_analysis
    DIMENSIONS customer.customer_name
    FACTS customer.c_customer_order_count
  )
  ORDER BY customer_name
  LIMIT 5;
Copy
+--------------------+------------------------+
| CUSTOMER_NAME      | C_CUSTOMER_ORDER_COUNT |
|--------------------+------------------------|
| Customer#000000001 |                      9 |
| Customer#000000002 |                     11 |
| Customer#000000003 |                      0 |
| Customer#000000004 |                     20 |
| Customer#000000005 |                     10 |
+--------------------+------------------------+

다음 사항을 참고하십시오.

  • SEMANTIC_VIEW 절에서 다음 절 중 하나 이상을 지정해야 합니다.

    • METRICS

    • DIMENSIONS

    • FACTS

    SEMANTIC_VIEW 절에서 이러한 모든 절을 생략할 수는 없습니다.

  • 이러한 절의 조합을 지정할 때 다음 사항에 유의합니다.

    • 동일한 SEMANTIC_VIEW 절에 FACTS 및 METRICS를 지정할 수 없습니다.

    • 쿼리에서 FACTS 및 DIMENSIONS를 둘 다 지정할 수 있지만 차원이 팩트를 고유하게 결정할 수 있는 경우에만 그렇게 해야 합니다.

      쿼리는 결과를 차원별로 그룹화합니다. 팩트가 차원에 의존하지 않는 경우, 결과는 비결정적일 수 있습니다.

    • FACTS 및 DIMENSIONS를 둘 다 지정하는 경우 쿼리에 사용된 모든 팩트 및 차원(WHERE 절에 지정된 항목 포함)은 동일한 논리 테이블에 정의되어야 합니다.

    • 차원과 메트릭을 지정하는 경우 차원의 논리 테이블은 메트릭의 논리 테이블과 관련되어야 합니다.

      또한 차원의 논리 테이블 세분성은 메트릭의 논리 테이블과 같거나 더 낮아야 합니다.

      이 기준을 충족하는 차원을 확인하려면 SHOW SEMANTIC DIMENSIONS FOR METRIC 명령을 실행할 수 있습니다.

      자세한 내용은 지정된 메트릭에 대해 반환할 수 있는 차원 선택 섹션을 참조하십시오.

  • DIMENSIONS 절에서 팩트를 참조하는 식을 지정할 수 있습니다. 마찬가지로, FACTS 절에서 차원을 참조하는 식을 지정할 수 있습니다. 예:

    -- Dimension expression that refers to a fact
    DIMENSIONS my_table.my_fact
    
    -- Fact expression that refers to a dimension
    FACTS my_table.my_dimension
    
    Copy

    DIMENSIONS 및 FACTS를 사용할 때의 주요 차이점 중 하나는 쿼리가 DIMENSIONS 절에 지정된 차원과 식을 기준으로 결과를 그룹화한다는 것입니다.

  • 결과에 표시하려는 순서대로 METRICS, DIMENSIONS 및 FACTS 절을 지정합니다.

    결과에서 차원을 먼저 표시하려면 METRICS 앞에 DIMENSIONS 을 지정합니다. 그렇지 않으면 METRICS 을 먼저 지정하십시오.

    예를 들어, METRICS 절을 먼저 지정한다고 가정해 보겠습니다.

    SELECT * FROM SEMANTIC_VIEW(
        tpch_analysis
        METRICS customer.customer_order_count
        DIMENSIONS customer.customer_name
      )
      ORDER BY customer_name
      LIMIT 5;
    
    Copy

    출력에서 첫 번째 열은 메트릭 열(customer_order_count)이고 두 번째 열은 차원 열(customer_name)입니다.

    +----------------------+--------------------+
    | CUSTOMER_ORDER_COUNT | CUSTOMER_NAME      |
    |----------------------+--------------------|
    |                    6 | Customer#000000001 |
    |                    7 | Customer#000000002 |
    |                    0 | Customer#000000003 |
    |                   20 | Customer#000000004 |
    |                    4 | Customer#000000005 |
    +----------------------+--------------------+
    

    대신 DIMENSIONS 절을 먼저 지정하는 경우:

    SELECT * FROM SEMANTIC_VIEW(
        tpch_analysis
        DIMENSIONS customer.customer_name
        METRICS customer.customer_order_count
      )
      ORDER BY customer_name
      LIMIT 5;
    
    Copy

    출력에서 첫 번째 열은 차원 열(customer_name)이고 두 번째 열은 메트릭 열(customer_order_count)입니다.

    +--------------------+----------------------+
    | CUSTOMER_NAME      | CUSTOMER_ORDER_COUNT |
    |--------------------+----------------------|
    | Customer#000000001 |                    6 |
    | Customer#000000002 |                    7 |
    | Customer#000000003 |                    0 |
    | Customer#000000004 |                   20 |
    | Customer#000000005 |                    4 |
    +--------------------+----------------------+
    
  • SEMANTIC_VIEW 절로 정의된 관계를 JOIN, PIVOT, UNPIVOT, GROUP BY, 공통 테이블 식(CTEs) 등 다른 SQL 구조에서 사용할 수 있습니다.

  • 출력 열 헤더는 메트릭 및 차원의 정규화되지 않은 이름을 사용합니다.

    이름이 같은 메트릭 및 차원이 여러 개 있는 경우 테이블 별칭을 사용하여 열 헤더에 다른 이름을 할당합니다. 출력에서 중복된 열 이름 처리하기 섹션을 참조하십시오.

지정된 논리 테이블의 모든 메트릭 또는 차원을 반환하려면 별표를 논리 테이블의 이름으로 정규화된 와일드카드로 사용합니다. 예를 들어, customer 논리 테이블에 정의된 모든 메트릭과 차원을 반환하려면 다음을 수행합니다.

SELECT * FROM SEMANTIC_VIEW(
  tpch_analysis
  DIMENSIONS customer.*
  METRICS customer.*
);
Copy
+-----------------------+-------------------------+--------------------+----------------------+----------------------+----------------+----------------------+
| CUSTOMER_COUNTRY_CODE | CUSTOMER_MARKET_SEGMENT | CUSTOMER_NAME      | CUSTOMER_NATION_NAME | CUSTOMER_REGION_NAME | CUSTOMER_COUNT | CUSTOMER_ORDER_COUNT |
|-----------------------+-------------------------+--------------------+----------------------+----------------------+----------------+----------------------|
| 18                    | BUILDING                | Customer#000034857 | INDIA                | ASIA                 |              1 |                    0 |
| 14                    | AUTOMOBILE              | Customer#000145116 | EGYPT                | MIDDLE EAST          |              1 |                    0 |
...

지정된 메트릭에 대해 반환할 수 있는 차원 선택

반환할 차원과 메트릭을 지정할 때 차원의 기본 테이블은 메트릭의 기본 테이블과 관련되어야 합니다. 또한 차원의 기본 테이블 세분성은 메트릭의 기본 테이블과 같거나 더 낮아야 합니다.

예를 들어 SQL 을 사용하여 의미 체계 뷰를 생성하는 예제 에서 만든 tpch_analysis 의미 체계 뷰를 쿼리한다고 가정해 보겠습니다. 그리고 customer.customer_count 차원 및 orders.order_date 메트릭을 반환하고 싶다고 가정해 보겠습니다.

SELECT * FROM SEMANTIC_VIEW (
  tpch_analysis
  DIMENSIONS orders.order_date
  METRICS customer.customer_order_count
);
Copy

order_date 차원의 orders 테이블이 customer_order_count 메트릭의 customer 테이블보다 세분성이 높으므로, 이 쿼리는 실패합니다.

010234 (42601): SQL compilation error:
Invalid dimension specified: The dimension entity 'ORDERS' must be related to and
  have an equal or lower level of granularity compared to the base metric or dimension entity 'CUSTOMER'.

특정 메트릭과 함께 반환할 수 있는 차원을 나열하려면 SHOW SEMANTIC DIMENSIONS FOR METRIC 명령을 실행합니다. 예:

SHOW SEMANTIC DIMENSIONS IN tpch_analysis FOR METRIC customer_order_count;
Copy
+------------+-------------------------+-------------+----------+----------+---------+
| table_name | name                    | data_type   | required | synonyms | comment |
|------------+-------------------------+-------------+----------+----------+---------|
| CUSTOMER   | CUSTOMER_COUNTRY_CODE   | VARCHAR(15) | false    | NULL     | NULL    |
| CUSTOMER   | CUSTOMER_MARKET_SEGMENT | VARCHAR(10) | false    | NULL     | NULL    |
| CUSTOMER   | CUSTOMER_NAME           | VARCHAR(25) | false    | NULL     | NULL    |
| CUSTOMER   | CUSTOMER_NATION_NAME    | VARCHAR(25) | false    | NULL     | NULL    |
| CUSTOMER   | CUSTOMER_REGION_NAME    | VARCHAR(25) | false    | NULL     | NULL    |
| NATION     | NATION_NAME             | VARCHAR(25) | false    | NULL     | NULL    |
+------------+-------------------------+-------------+----------+----------+---------+

기본 예제

다음 예제에서는 SQL 을 사용하여 의미 체계 뷰를 생성하는 예제 에 정의된 tpch_analysis 뷰를 사용합니다.

메트릭 검색

다음 문은 메트릭을 쿼리하여 총 고객 수를 검색합니다.

SELECT * FROM SEMANTIC_VIEW(
    tpch_analysis
    METRICS customer.customer_count
  );
Copy
+----------------+
| CUSTOMER_COUNT |
+----------------+
|          15000 |
+----------------+

차원별로 메트릭 데이터 그룹화하기

다음 문은 메트릭 데이터(order_average_value)를 차원(customer_market_segment)으로 그룹화합니다.

SELECT * FROM SEMANTIC_VIEW(
    tpch_analysis
    DIMENSIONS customer.customer_market_segment
    METRICS orders.order_average_value
  );
Copy
+-------------------------+---------------------+
| CUSTOMER_MARKET_SEGMENT | ORDER_AVERAGE_VALUE |
+-------------------------+---------------------+
| AUTOMOBILE              |     142570.25947219 |
| FURNITURE               |     142563.63314267 |
| MACHINERY               |     142655.91550608 |
| HOUSEHOLD               |     141659.94753445 |
| BUILDING                |     142425.37987558 |
+-------------------------+---------------------+

SEMANTIC_VIEW 하위 절을 다른 구문과 함께 사용

다음 예제에서는 SEMANTIC_VIEW 하위 절의 차원 및 메트릭을 다른 SQL 구문과 함께 사용하여 결과를 필터링, 정렬 및 제한하는 방법을 보여 줍니다.

SELECT * FROM SEMANTIC_VIEW(
    tpch_analysis
    DIMENSIONS customer.customer_name
    METRICS orders.average_line_items_per_order,
            orders.order_average_value
  )
  WHERE average_line_items_per_order > 4
  ORDER BY average_line_items_per_order DESC
  LIMIT 5;
Copy
+--------------------+------------------------------+---------------------+
| CUSTOMER_NAME      | AVERAGE_LINE_ITEMS_PER_ORDER | ORDER_AVERAGE_VALUE |
+--------------------+------------------------------+---------------------+
| Customer#000045678 |                         6.87 |           175432.21 |
| Customer#000067890 |                         6.42 |           182376.58 |
| Customer#000012345 |                         5.93 |           169847.42 |
| Customer#000034567 |                         5.76 |           178952.36 |
| Customer#000056789 |                         5.64 |           171248.75 |
+--------------------+------------------------------+---------------------+

차원을 사용하는 스칼라 식 지정하기

다음 예제에서는 DIMENSIONS 절에서 차원을 참조하는 스칼라 식을 사용합니다.

SELECT * FROM SEMANTIC_VIEW(
    tpch_analysis
    DIMENSIONS DATE_PART('year', orders.order_date)
  );
Copy
+--------------------------------------+
| DATE_PART('YEAR', ORDERS.ORDER_DATE) |
|--------------------------------------|
|                                 1992 |
|                                 1997 |
|                                 1998 |
|                                 1993 |
|                                 1996 |
|                                 1994 |
|                                 1995 |
+--------------------------------------+

WHERE 절 지정하기

다음 예제에서는 DIMENSIONS 절에서 차원을 참조하는 WHERE 절을 지정합니다.

SELECT * FROM SEMANTIC_VIEW(
    tpch_analysis
    DIMENSIONS orders.order_date
    METRICS orders.average_line_items_per_order,
            orders.order_average_value
    WHERE orders.order_date > '1995-01-01'
  )
  ORDER BY order_date ASC
  LIMIT 5;
Copy
+------------+------------------------------+---------------------+
| ORDER_DATE | AVERAGE_LINE_ITEMS_PER_ORDER | ORDER_AVERAGE_VALUE |
|------------+------------------------------+---------------------|
| 1995-01-02 |                     3.884547 |     151237.54900533 |
| 1995-01-03 |                     3.894819 |     145751.84384615 |
| 1995-01-04 |                     3.838863 |     145331.39167457 |
| 1995-01-05 |                     4.040689 |     150723.67353678 |
| 1995-01-06 |                     3.990755 |     152786.54109399 |
+------------+------------------------------+---------------------+

WHERE 절에서 팩트 지정

다음 예제에서는 WHERE 절에 조건이 있는 region.r_name 팩트를 사용합니다.

SELECT * FROM SEMANTIC_VIEW(
    tpch_analysis
    FACTS customer.c_customer_order_count
    WHERE orders.order_date < '2021-01-01' AND region.r_name = 'AMERICA'
  );
Copy

출력에서 중복된 열 이름 처리하기

출력 열은 메트릭 및 차원의 정규화되지 않은 이름을 사용합니다. 이름이 같은 메트릭과 차원이 여러 개 있는 경우 여러 열이 같은 이름을 사용합니다.

이 문제를 해결하려면 테이블 별칭을 사용하여 열에 다른 이름을 지정하십시오.

예를 들어 region.namenation.name 차원을 정의하는 다음과 같은 의미 체계 뷰를 정의한다고 가정해 보겠습니다.

CREATE OR REPLACE SEMANTIC VIEW duplicate_names

  TABLES (
    nation AS SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.NATION PRIMARY KEY (n_nationkey),
    region AS SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.REGION PRIMARY KEY (r_regionkey)
  )

  RELATIONSHIPS (
    nation (n_regionkey) REFERENCES region
  )

  DIMENSIONS (
    nation.name AS nation.n_name,
    region.name AS region.r_name
  );
Copy

이 뷰를 쿼리하고 이 두 차원을 선택하면 출력에 한정자 없이 name 이라는 이름의 열 2개가 포함됩니다.

SELECT * FROM SEMANTIC_VIEW(
    duplicate_names
    DIMENSIONS nation.name, region.name
  );
Copy
+----------------+-------------+
| NAME           | NAME        |
+----------------+-------------+
| BRAZIL         | AMERICA     |
| MOROCCO        | AFRICA      |
| UNITED KINGDOM | EUROPE      |
| IRAN           | MIDDLE EAST |
| FRANCE         | EUROPE      |
| ...            | ...         |
+----------------+-------------+

열을 명확하게 구분하려면 테이블 별칭을 사용하여 서로 다른 열 이름을 지정합니다(예: nation_nameregion_name):

SELECT * FROM SEMANTIC_VIEW(
    duplicate_names
    DIMENSIONS nation.name, region.name
  ) AS table_alias(nation_name, region_name);
Copy
+----------------+-------------+
| NATION_NAME    | REGION_NAME |
+----------------+-------------+
| BRAZIL         | AMERICA     |
| MOROCCO        | AFRICA      |
| UNITED KINGDOM | EUROPE      |
| IRAN           | MIDDLE EAST |
| FRANCE         | EUROPE      |
| ...            | ...         |
+----------------+-------------+

윈도우 함수 메트릭 정의 및 쿼리

윈도우 함수 를 호출하고 집계된 값을 전달하는 메트릭을 정의할 수 있습니다. 이러한 메트릭을 *윈도우 함수 메트릭*이라고 합니다.

다음 예제에서는 윈도우 함수 메트릭과 행 수준 표현식을 윈도우 함수에 전달하는 메트릭 간의 차이점을 보여줍니다.

  • 다음 메트릭은 윈도우 함수 메트릭입니다.

    METRICS (
      table_1.metric_1 AS SUM(table_1.metric_3) OVER( ... )
    )
    
    Copy

    이 예제에서 SUM 윈도우 함수는 다른 메트릭(table_1.metric_3)을 인자로 사용합니다.

    다음 메트릭은 윈도우 함수 메트릭이기도 합니다.

    METRICS (
      table_1.metric_2 AS SUM(
        SUM(table_1.column_1)
      ) OVER( ... )
    )
    
    Copy

    이 예제에서 SUM 윈도우 함수는 유효한 메트릭 식(SUM(table_1.column_1))을 인자로 사용합니다.

  • 다음 메트릭은 윈도우 함수 메트릭이 아닙니다.

    METRICS (
      table_1.metric_1 AS SUM(
        SUM(table_1.column_1) OVER( ... )
      )
    )
    
    Copy

    이 예제에서 SUM 윈도우 함수는 열(table_1.column_1)을 인자로 사용하고, 해당 윈도우 함수 호출의 결과는 별도의 SUM 집계 함수 호출에 전달됩니다.

다음 섹션에서는 윈도우 함수 메트릭을 정의하고 쿼리하는 방법을 설명합니다.

윈도우 함수 메트릭 정의

윈도우 함수 호출을 지정할 때 윈도우 함수 메트릭에 대한 매개 변수 에 설명된 이 구문 을 사용합니다.

다음 예제에서는 여러 윈도우 함수 메트릭의 정의를 포함하는 의미 체계 뷰를 만듭니다. 이 예제에서는 TPC-DS 샘플 데이터베이스의 테이블을 사용합니다. 이 데이터베이스에 액세스하넌 방법에 대한 내용은 TPC-DS 데이터 세트를 내 계정에 추가하려면 어떻게 하나요? 섹션을 참조하세요.

CREATE OR REPLACE SEMANTIC VIEW sv_window_function_example
  TABLES (
    store_sales AS SNOWFLAKE_SAMPLE_DATA.TPCDS_SF10TCL.store_sales,
    date AS SNOWFLAKE_SAMPLE_DATA.TPCDS_SF10TCL.date_dim PRIMARY KEY (d_date_sk)
  )
  RELATIONSHIPS (
    sales_to_date AS store_sales(ss_sold_date_sk) REFERENCES date(d_date_sk)
  )
  DIMENSIONS (
    date.date AS d_date,
    date.d_date_sk AS d_date_sk,
    date.year AS d_year
  )
  METRICS (
    store_sales.total_sales_quantity AS SUM(ss_quantity)
      WITH SYNONYMS = ('Total sales quantity'),

    store_sales.avg_7_days_sales_quantity as AVG(total_sales_quantity)
      OVER (PARTITION BY EXCLUDING date.date, date.year ORDER BY date.date
        RANGE BETWEEN INTERVAL '6 days' PRECEDING AND CURRENT ROW)
      WITH SYNONYMS = ('Running 7-day average of total sales quantity'),

    store_sales.total_sales_quantity_30_days_ago AS LAG(total_sales_quantity, 30)
      OVER (PARTITION BY EXCLUDING date.date, date.year ORDER BY date.date)
      WITH SYNONYMS = ('Sales quantity 30 days ago'),

    store_sales.avg_7_days_sales_quantity_30_days_ago AS AVG(total_sales_quantity)
      OVER (PARTITION BY EXCLUDING date.date, date.year ORDER BY date.date
        RANGE BETWEEN INTERVAL '36 days' PRECEDING AND INTERVAL '30 days' PRECEDING)
      WITH SYNONYMS = ('Running 7-day average of total sales quantity 30 days ago')

  );
Copy

메트릭 정의에 있는 동일한 논리 테이블의 다른 메트릭을 사용할 수도 있습니다. 예:

METRICS (
  orders.m3 AS SUM(m2) OVER (PARTITION BY m1 ORDER BY m2),
  orders.m4 AS ((SUM(m2) OVER (..)) / m1) + 1
)
Copy

참고

행 수준 계산(팩트 및 차원) 또는 다른 메트릭의 정의에서 윈도우 함수 메트릭을 사용할 수 없습니다.

윈도우 함수 메트릭 쿼리

의미 체계 뷰를 쿼리하여 쿼리가 윈도우 함수 메트릭을 반환하는 경우, 의미 체계 뷰의 CREATE SEMANTIC VIEW 문에 있는 PARTITION BY dimension, PARTITION BY EXCLUDING dimension 및 ORDER BY dimension 에 지정된 차원도 반환해야 합니다.

예를 들어 store_sales.avg_7_days_sales_quantity 메트릭 정의의 PARTITION BY EXCLUDING 및 ORDER BY 절에 date.datedate.year 차원을 지정한다고 가정해 보겠습니다.

CREATE OR REPLACE SEMANTIC VIEW sv_window_function_example
  ...
  DIMENSIONS (
    ...
    date.date AS d_date,
    ...
    date.year AS d_year
    ...
  )
  METRICS (
    ...
    store_sales.avg_7_days_sales_quantity as AVG(total_sales_quantity)
      OVER (PARTITION BY EXCLUDING date.date, date.year ORDER BY date.date
        RANGE BETWEEN INTERVAL '6 days' PRECEDING AND CURRENT ROW)
      WITH SYNONYMS = ('Running 7-day average of total sales quantity'),
    ...
  );
Copy

쿼리에서 store_sales.avg_7_days_sales_quantity 메트릭을 반환하는 경우 date.datedate.year 차원도 반환해야 합니다.

SELECT * FROM SEMANTIC_VIEW (
  sv_window_function_example
  DIMENSIONS date.date, date.year
  METRICS store_sales.avg_7_days_sales_quantity
);
Copy

date.datedate.year 차원을 생략하면 오류가 발생합니다.

010260 (42601): SQL compilation error:
Invalid semantic view query: Dimension 'DATE.DATE' used in a
   window function metric must be requested in the query.

쿼리에서 지정해야 하는 차원을 결정하려면 SHOW SEMANTIC DIMENSIONS FOR METRIC 명령을 실행합니다. 예를 들어, store_sales.avg_7_days_sales_quantity 메트릭을 검색할 때 지정해야 하는 차원을 결정하려면 다음 명령을 실행합니다.

SHOW SEMANTIC DIMENSIONS IN sv_window_function_example FOR METRIC avg_7_days_sales_quantity;
Copy

명령 출력의 required 열에는 쿼리에서 지정해야 하는 차원에 대해 true 가 포함되어 있습니다.

+------------+-----------+--------------+----------+----------+---------+
| table_name | name      | data_type    | required | synonyms | comment |
|------------+-----------+--------------+----------+----------+---------|
| DATE       | DATE      | DATE         | true     | NULL     | NULL    |
| DATE       | D_DATE_SK | NUMBER(38,0) | false    | NULL     | NULL    |
| DATE       | YEAR      | NUMBER(38,0) | true     | NULL     | NULL    |
+------------+-----------+--------------+----------+----------+---------+

다음 추가 예제에서는 윈도우 함수 메트릭 정의 에 정의된 윈도우 함수 메트릭을 쿼리합니다. DIMENSIONS 절에는 메트릭 정의의 PARTITIONBYEXCLUDING 및 ORDERBY 절에 지정된 차원이 포함됩니다.

다음 예제에서는 30일 전의 판매 수량을 반환합니다.

SELECT * FROM SEMANTIC_VIEW (
  sv_window_function_example
  DIMENSIONS date.date, date.year
  METRICS store_sales.total_sales_quantity_30_days_ago
);
Copy

다음 예제에서는 30일 전 총 판매 수량의 7일 평균을 반환합니다.

SELECT * FROM SEMANTIC_VIEW (
  sv_window_function_example
  DIMENSIONS date.date, date.year
  METRICS store_sales.avg_7_days_sales_quantity_30_days_ago
);
Copy