SQL 명령을 사용하여 의미 체계 뷰 생성하기 및 관리하기

이 항목에서는 다음 SQL 명령을 사용하여 의미 체계 뷰 를 만들고 관리하는 방법을 설명합니다.

이 항목에서는 다음 저장 프로시저와 함수를 호출하여 의미 체계 모델 사양 에서 의미 체계 뷰를 만들고 의미 체계 뷰에 대한 사양을 가져오는 방법을 설명합니다.

의미 체계 뷰를 만드는 데 필요한 권한

의미 체계 뷰를 만들려면 다음 권한이 있는 역할을 사용해야 합니다.

  • 의미 체계 뷰를 생성하는 스키마에 CREATE SEMANTIC VIEW 를 추가합니다.

  • 의미 체계 뷰를 생성하는 데이터베이스 및 스키마에 USAGE 를 추가합니다.

  • 의미 체계 뷰에 사용된 테이블과 뷰에 SELECT 를 추가할 수 있습니다.

의미 체계 뷰를 쿼리하는 데 필요한 권한에 대한 내용은 의미 체계 뷰를 쿼리하는 데 필요한 권한 섹션을 참조하세요.

의미 체계 뷰 생성하기

의미 체계 뷰를 만들려면 다음 중 하나를 수행할 수 있습니다.

의미 체계 뷰가 유효해야 합니다. Snowflake가 의미 체계 뷰를 검증하는 방법 섹션을 참조하십시오.

다음 섹션에서는 의미 체계 뷰를 만드는 방법을 설명합니다.

CREATE SEMANTIC VIEW 명령 사용

다음 예제에서는 CREATE SEMANTIC VIEW 명령을 사용하여 의미 체계 뷰를 만듭니다.

이 예제에서는 Snowflake에서 사용할 수 있는 TPC-H 샘플 데이터 를 사용합니다. 이 데이터 세트에는 고객, 주문 및 품목을 포함한 단순화된 비즈니스 시나리오를 보여주는 테이블이 있습니다.

TPC-H 샘플 데이터에 사용된 테이블의 데이터 모델링

이 예제에서는 TPC-H 데이터 세트의 테이블을 사용하여 tpch_rev_analysis 라는 이름의 의미 체계 뷰를 생성합니다. 의미 체계 뷰는 다음을 정의합니다.

  • 3개의 논리 테이블(orders, customers, line_items).

  • orderscustomers 테이블 간의 관계.

  • line_itemsorders 테이블 간의 관계.

  • 메트릭을 계산하는 데 사용되는 정보.

  • 고객 이름, 주문 날짜 및 주문이 이루어진 연도에 대한 차원.

  • 주문의 평균값 및 주문의 평균 품목 수에 대한 메트릭.

CREATE SEMANTIC VIEW tpch_rev_analysis

  TABLES (
    orders AS SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.ORDERS
      PRIMARY KEY (o_orderkey)
      WITH SYNONYMS ('sales orders')
      COMMENT = 'All orders table for the sales domain',
    customers AS SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER
      PRIMARY KEY (c_custkey)
      COMMENT = 'Main table for customer data',
    line_items AS SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.LINEITEM
      PRIMARY KEY (l_orderkey, l_linenumber)
      COMMENT = 'Line items in orders'
  )

  RELATIONSHIPS (
    orders_to_customers AS
      orders (o_custkey) REFERENCES customers,
    line_item_to_orders AS
      line_items (l_orderkey) REFERENCES orders
  )

  FACTS (
    line_items.line_item_id AS CONCAT(l_orderkey, '-', l_linenumber),
    orders.count_line_items AS COUNT(line_items.line_item_id),
    line_items.discounted_price AS l_extendedprice * (1 - l_discount)
      COMMENT = 'Extended price after discount'
  )

  DIMENSIONS (
    customers.customer_name AS customers.c_name
      WITH SYNONYMS = ('customer name')
      COMMENT = 'Name of the customer',
    orders.order_date AS o_orderdate
      COMMENT = 'Date when the order was placed',
    orders.order_year AS YEAR(o_orderdate)
      COMMENT = 'Year when the order was placed'
  )

  METRICS (
    customers.customer_count AS COUNT(c_custkey)
      COMMENT = 'Count of number of customers',
    orders.order_average_value AS AVG(orders.o_totalprice)
      COMMENT = 'Average order value across all orders',
    orders.average_line_items_per_order AS AVG(orders.count_line_items)
      COMMENT = 'Average number of line items per order'
  )

  COMMENT = 'Semantic view for revenue analysis';
Copy

다음 섹션에서는 이 예제에 대해 자세히 설명합니다.

참고

전체 예제는 SQL 을 사용하여 의미 체계 뷰를 생성하는 예제 섹션을 참조하십시오.

논리 테이블 정의하기

CREATE SEMANTIC VIEW 명령에서 TABLES 절을 사용하여 뷰의 논리적 테이블을 정의합니다. 이 절에서는 다음을 할 수 있습니다.

  • 실제 테이블 이름과 선택적 별칭을 지정합니다.

  • 논리 테이블에서 다음 열을 식별합니다.

    • 기본 키 역할을 하는 열입니다.

    • 고유한 값을 포함하는 열(기본 키 열 제외).

    이러한 열을 사용하여 이 의미 체계 뷰에서 관계를 정의할 수 있습니다.

  • 테이블의 동의어 추가(검색 가능성 개선).

  • 설명이 포함된 설명을 입력합니다.

참고

두 테이블을 조인할 수 있는 여러 방법이 있는 경우 각 방법에 대해 별도의 논리 테이블을 정의해야 합니다. 자세한 내용은 두 테이블을 조인하는 서로 다른 경로에 대해 서로 다른 논리 테이블 정의 섹션을 참조하십시오.

앞서 제공된 예제 에서 TABLES 절은 세 개의 논리 테이블을 정의합니다.

  • TPC-H orders 테이블의 주문 정보가 포함된 orders 테이블.

  • TPC-H customers 테이블의 고객 정보가 포함된 customers 테이블.

  • TPC-H lineitem 테이블의 주문 품목이 포함된 line_item 테이블.

이 예에서는 각 논리적 테이블의 기본 키로 사용할 열을 식별하여 테이블 간의 관계를 식별 할 수 있도록 합니다.

이 예제에서는 논리 테이블을 설명하고 데이터를 더 쉽게 검색할 수 있도록 동의어와 설명도 제공합니다.

TABLES (
  orders AS SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.ORDERS
    PRIMARY KEY (o_orderkey)
    WITH SYNONYMS ('sales orders')
    COMMENT = 'All orders table for the sales domain',
  customers AS SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER
    PRIMARY KEY (c_custkey)
    COMMENT = 'Main table for customer data',
  line_items AS SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.LINEITEM
    PRIMARY KEY (l_orderkey, l_linenumber)
    COMMENT = 'Line items in orders'
Copy

두 테이블을 조인하는 서로 다른 경로에 대해 서로 다른 논리 테이블 정의

두 개의 물리적 테이블을 조인하는 데 사용할 수 있는 경로가 여러 개 있는 경우 각 경로에 대해 별도의 논리 테이블과 관계를 정의해야 합니다.

예를 들어, Snowflake에서 사용할 수 있는 TPC-H 샘플 데이터 에는 regionlineitem 테이블을 조인하는 두 가지 방법이 있습니다.

  • region -> nation -> supplier -> partsupp -> lineitem

  • region -> nation -> customer -> orders -> lineitem

첫 번째 경로는 공급자의 리전을 나타내고, 두 번째 경로는 고객의 리전을 나타냅니다.

region 에 단일 논리 테이블을 사용하고 nation 에 단일 논리 테이블을 사용할 수 있지만, 공급자 리전, 고객 리전, 공급자 국가, 고객 국가에 대해 별도의 논리 테이블을 정의해야 합니다.

TABLES (
  supplier_region AS SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.REGION PRIMARY KEY (r_regionkey).
  customer_region AS SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.REGION PRIMARY KEY (r_regionkey),
  supplier_nation AS SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.NATION PRIMARY KEY (n_nationkey),
  customer_nation AS SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.NATION PRIMARY KEY (n_nationkey),
  ...
)
Copy

그런 다음, 다양한 경로를 나타내는 별도의 관계를 정의합니다.

RELATIONSHIPS (
  supplier_nation (n_regionkey) REFERENCES supplier_region,
  customer_nation (n_regionkey) REFERENCES customer_region,
  ...
)
Copy

논리 테이블 간의 관계 식별하기

CREATE SEMANTIC VIEW 명령에서 RELATIONSHIPS 절을 사용하여 뷰에 있는 테이블 간의 관계를 식별합니다. 각 관계에 대해 지정합니다.

  • 관계의 선택적 이름입니다.

  • 외래 키가 포함된 논리적 테이블의 이름입니다.

  • 해당 테이블에서 외래 키를 정의하는 열입니다.

  • 기본 키 또는 고유 값을 가진 열을 포함하는 논리 테이블의 이름입니다.

  • 해당 테이블에서 기본 키를 정의하거나 고유 값을 포함하는 열입니다.

    • TABLES 절에서 논리적 테이블에 PRIMARY KEY 를 이미 지정한 경우 관계에서 기본 키 열을 지정할 필요가 없습니다.

    • TABLES 절에 논리적 테이블에 대한 단일 UNIQUE 키워드가 있는 경우 관계에서 해당 열을 지정할 필요가 없습니다.

앞서 제공된 예제 에서 RELATIONSHIPS 절은 2개의 관계를 지정합니다.

  • orderscustomers 테이블 간의 관계. orders 테이블에서 o_custkeycustomers 테이블의 기본 키(c_custkey)를 참조하는 외래 키입니다.

  • line_itemsorders 테이블 간의 관계. line_items 테이블에서 l_orderkeyorders 테이블의 기본 키(o_orderkey)를 참조하는 외래 키입니다.

RELATIONSHIPS (
  orders_to_customers AS
    orders (o_custkey) REFERENCES customers (c_custkey),
  line_item_to_orders AS
    line_items (l_orderkey) REFERENCES orders (o_orderkey)
)
Copy

팩트, 차원 및 메트릭 정의하기

CREATE SEMANTIC VIEW 명령에서 FACTS, DIMENSIONS, METRICS 절을 사용하여 의미 체계 뷰에서 팩트, 차원 및 메트릭을 정의합니다.

의미 체계 뷰에서 1개 이상의 차원 또는 메트릭을 정의해야 합니다.

각 팩트, 차원 또는 메트릭에 대해 지정합니다.

  • 그것이 속한 논리 테이블입니다.

  • 팩트, 차원 또는 메트릭의 이름입니다.

  • SQL 식을 사용하여 이를 계산합니다.

  • 선택적 동의어 및 설명.

앞서 제공된 예제 는 몇 가지 정보, 차원 및 메트릭을 정의합니다.

FACTS (
  line_items.line_item_id AS CONCAT(l_orderkey, '-', l_linenumber),
  orders.count_line_items AS COUNT(line_items.line_item_id),
  line_items.discounted_price AS l_extendedprice * (1 - l_discount)
    COMMENT = 'Extended price after discount'
)

DIMENSIONS (
  customers.customer_name AS customers.c_name
    WITH SYNONYMS = ('customer name')
    COMMENT = 'Name of the customer',
  orders.order_date AS o_orderdate
    COMMENT = 'Date when the order was placed',
  orders.order_year AS YEAR(o_orderdate)
    COMMENT = 'Year when the order was placed'
)

METRICS (
  customers.customer_count AS COUNT(c_custkey)
    COMMENT = 'Count of number of customers',
  orders.order_average_value AS AVG(orders.o_totalprice)
    COMMENT = 'Average order value across all orders',
  orders.average_line_items_per_order AS AVG(orders.count_line_items)
    COMMENT = 'Average number of line items per order'
)
Copy

참고

윈도우 함수를 사용하는 메트릭을 정의하는 방법에 대한 추가 지침은 윈도우 함수 메트릭 정의 및 쿼리 섹션을 참조하세요.

팩트 또는 메트릭을 비공개로 표시

의미 체계 뷰의 계산에만 사용할 팩트 또는 메트릭을 정의하고 쿼리에서 팩트 또는 메트릭이 반환되지 않도록 하려면 PRIVATE 키워드를 지정하여 팩트 또는 메트릭을 비공개로 표시하면 됩니다. 예:

FACTS (
  PRIVATE my_private_fact AS ...
)

METRICS (
  PRIVATE my_private_metric AS ...
)
Copy

참고

차원은 비공개로 표시할 수 없습니다. 차원은 항상 공개입니다.

비공개 팩트 또는 메트릭이 있는 의미 체계 뷰를 쿼리할 때는 다음 절에 비공개 팩트 또는 메트릭을 지정할 수 없습니다.

일부 명령과 함수에는 다음과 같이 비공개 팩트와 메트릭이 포함됩니다.

일부 명령과 함수에는 특정 조건에서만 비공개 팩트와 메트릭이 포함됩니다.

다른 명령과 함수에는 비공개 팩트와 메트릭이 포함되지 않습니다.

YAML 사양에서 의미 체계 뷰 만들기

의미 체계 모델의 YAML 사양</user-guide/snowflake-cortex/cortex-analyst/semantic-model-spec>`에서 의미 체계 뷰를 만들려면 :doc:/sql-reference/stored-procedures/system_create_semantic_view_from_yaml` 저장 프로시저를 호출하면 됩니다.

먼저, TRUE를 세 번째 인자로 전달하여 YAML 사양에서 의미 체계 뷰를 만들 수 있는지 확인합니다.

다음 예제에서는 YAML에서 지정된 의미 체계 모델 사양을 사용하여 데이터베이스 my_db 및 스키마 my_schematpch_analysis 이름의 의미 체계를 만들 수 있는지 확인합니다.

CALL SYSTEM$CREATE_SEMANTIC_VIEW_FROM_YAML(
  'my_db.my_schema',
  $$
  name: TPCH_REV_ANALYSIS
  description: Semantic view for revenue analysis
  tables:
    - name: CUSTOMERS
      description: Main table for customer data
      base_table:
        database: SNOWFLAKE_SAMPLE_DATA
        schema: TPCH_SF1
        table: CUSTOMER
      primary_key:
        columns:
          - C_CUSTKEY
      dimensions:
        - name: CUSTOMER_NAME
          synonyms:
            - customer name
          description: Name of the customer
          expr: customers.c_name
          data_type: VARCHAR(25)
        - name: C_CUSTKEY
          expr: C_CUSTKEY
          data_type: VARCHAR(134217728)
      metrics:
        - name: CUSTOMER_COUNT
          description: Count of number of customers
          expr: COUNT(c_custkey)
    - name: LINE_ITEMS
      description: Line items in orders
      base_table:
        database: SNOWFLAKE_SAMPLE_DATA
        schema: TPCH_SF1
        table: LINEITEM
      primary_key:
        columns:
          - L_ORDERKEY
          - L_LINENUMBER
      dimensions:
        - name: L_ORDERKEY
          expr: L_ORDERKEY
          data_type: VARCHAR(134217728)
        - name: L_LINENUMBER
          expr: L_LINENUMBER
          data_type: VARCHAR(134217728)
      facts:
        - name: DISCOUNTED_PRICE
          description: Extended price after discount
          expr: l_extendedprice * (1 - l_discount)
          data_type: "NUMBER(25,4)"
        - name: LINE_ITEM_ID
          expr: "CONCAT(l_orderkey, '-', l_linenumber)"
          data_type: VARCHAR(134217728)
    - name: ORDERS
      synonyms:
        - sales orders
      description: All orders table for the sales domain
      base_table:
        database: SNOWFLAKE_SAMPLE_DATA
        schema: TPCH_SF1
        table: ORDERS
      primary_key:
        columns:
          - O_ORDERKEY
      dimensions:
        - name: ORDER_DATE
          description: Date when the order was placed
          expr: o_orderdate
          data_type: DATE
        - name: ORDER_YEAR
          description: Year when the order was placed
          expr: YEAR(o_orderdate)
          data_type: "NUMBER(4,0)"
        - name: O_ORDERKEY
          expr: O_ORDERKEY
          data_type: VARCHAR(134217728)
        - name: O_CUSTKEY
          expr: O_CUSTKEY
          data_type: VARCHAR(134217728)
      facts:
        - name: COUNT_LINE_ITEMS
          expr: COUNT(line_items.line_item_id)
          data_type: "NUMBER(18,0)"
      metrics:
        - name: AVERAGE_LINE_ITEMS_PER_ORDER
          description: Average number of line items per order
          expr: AVG(orders.count_line_items)
        - name: ORDER_AVERAGE_VALUE
          description: Average order value across all orders
          expr: AVG(orders.o_totalprice)
  relationships:
    - name: LINE_ITEM_TO_ORDERS
      left_table: LINE_ITEMS
      right_table: ORDERS
      relationship_columns:
        - left_column: L_ORDERKEY
          right_column: O_ORDERKEY
      relationship_type: many_to_one
    - name: ORDERS_TO_CUSTOMERS
      left_table: ORDERS
      right_table: CUSTOMERS
      relationship_columns:
        - left_column: O_CUSTKEY
          right_column: C_CUSTKEY
      relationship_type: many_to_one
  $$,
TRUE);
Copy

이 사양이 유효한 경우 해당 저장 프로시저는 다음 메시지를 반환합니다.

+----------------------------------------------------------------------------------+
| SYSTEM$CREATE_SEMANTIC_VIEW_FROM_YAML                                            |
|----------------------------------------------------------------------------------|
| YAML file is valid for creating a semantic view. No object has been created yet. |
+----------------------------------------------------------------------------------+

YAML 구문이 유효하지 않은 경우 해당 저장 프로시저는 예외를 발생시킵니다. 예를 들어, 콜론이 누락된 경우 다음 결과가 나타납니다.

relationships
  - name: LINE_ITEM_TO_ORDERS
Copy

저장 프로시저는 예외를 발생시켜 YAML 구문이 유효하지 않음을 나타냅니다.

392400 (22023): Uncaught exception of type 'EXPRESSION_ERROR' on line 3 at position 23 :
  Invalid semantic model YAML: while scanning a simple key
   in 'reader', line 90, column 3:
        relationships
        ^
  could not find expected ':'
   in 'reader', line 91, column 11:
          - name: LINE_ITEM_TO_ORDERS
                ^

해당 사양이 존재하지 않는 물리적 테이블을 참조하는 경우 저장 프로시저는 예외를 발생시킵니다.

base_table:
  database: SNOWFLAKE_SAMPLE_DATA
  schema: TPCH_SF1
  table: NONEXISTENT
Copy
002003 (42S02): Uncaught exception of type 'EXPRESSION_ERROR' on line 3 at position 23 :
  SQL compilation error:
  Table 'SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.NONEXISTENT' does not exist or not authorized.

마찬가지로, 사양이 존재하지 않는 기본 키 열을 참조하는 경우 저장 프로시저는 예외를 발생시킵니다.

primary_key:
  columns:
    - NONEXISTENT
Copy
000904 (42000): Uncaught exception of type 'EXPRESSION_ERROR' on line 3 at position 23 :
  SQL compilation error: error line 0 at position -1
  invalid identifier 'NONEXISTENT'

그러면 세 번째 인자를 전달하지 않고 저장 프로시저를 호출하여 의미 체계 뷰를 만들 수 있습니다.

다음 예제에서는 데이터베이스 my_db 및 스키마 my_schema 에서 tpch_analysis 이름의 의미 체계 뷰를 만듭니다.

CALL SYSTEM$CREATE_SEMANTIC_VIEW_FROM_YAML(
  'my_db.my_schema',
  $$
  name: TPCH_REV_ANALYSIS
  description: Semantic view for revenue analysis
  tables:
    - name: CUSTOMERS
      description: Main table for customer data
      base_table:
        database: SNOWFLAKE_SAMPLE_DATA
        schema: TPCH_SF1
        table: CUSTOMER
      primary_key:
        columns:
          - C_CUSTKEY
      dimensions:
        - name: CUSTOMER_NAME
          synonyms:
            - customer name
          description: Name of the customer
          expr: customers.c_name
          data_type: VARCHAR(25)
        - name: C_CUSTKEY
          expr: C_CUSTKEY
          data_type: VARCHAR(134217728)
      metrics:
        - name: CUSTOMER_COUNT
          description: Count of number of customers
          expr: COUNT(c_custkey)
    - name: LINE_ITEMS
      description: Line items in orders
      base_table:
        database: SNOWFLAKE_SAMPLE_DATA
        schema: TPCH_SF1
        table: LINEITEM
      primary_key:
        columns:
          - L_ORDERKEY
          - L_LINENUMBER
      dimensions:
        - name: L_ORDERKEY
          expr: L_ORDERKEY
          data_type: VARCHAR(134217728)
        - name: L_LINENUMBER
          expr: L_LINENUMBER
          data_type: VARCHAR(134217728)
      facts:
        - name: DISCOUNTED_PRICE
          description: Extended price after discount
          expr: l_extendedprice * (1 - l_discount)
          data_type: "NUMBER(25,4)"
        - name: LINE_ITEM_ID
          expr: "CONCAT(l_orderkey, '-', l_linenumber)"
          data_type: VARCHAR(134217728)
    - name: ORDERS
      synonyms:
        - sales orders
      description: All orders table for the sales domain
      base_table:
        database: SNOWFLAKE_SAMPLE_DATA
        schema: TPCH_SF1
        table: ORDERS
      primary_key:
        columns:
          - O_ORDERKEY
      dimensions:
        - name: ORDER_DATE
          description: Date when the order was placed
          expr: o_orderdate
          data_type: DATE
        - name: ORDER_YEAR
          description: Year when the order was placed
          expr: YEAR(o_orderdate)
          data_type: "NUMBER(4,0)"
        - name: O_ORDERKEY
          expr: O_ORDERKEY
          data_type: VARCHAR(134217728)
        - name: O_CUSTKEY
          expr: O_CUSTKEY
          data_type: VARCHAR(134217728)
      facts:
        - name: COUNT_LINE_ITEMS
          expr: COUNT(line_items.line_item_id)
          data_type: "NUMBER(18,0)"
      metrics:
        - name: AVERAGE_LINE_ITEMS_PER_ORDER
          description: Average number of line items per order
          expr: AVG(orders.count_line_items)
        - name: ORDER_AVERAGE_VALUE
          description: Average order value across all orders
          expr: AVG(orders.o_totalprice)
  relationships:
    - name: LINE_ITEM_TO_ORDERS
      left_table: LINE_ITEMS
      right_table: ORDERS
      relationship_columns:
        - left_column: L_ORDERKEY
          right_column: O_ORDERKEY
      relationship_type: many_to_one
    - name: ORDERS_TO_CUSTOMERS
      left_table: ORDERS
      right_table: CUSTOMERS
      relationship_columns:
        - left_column: O_CUSTKEY
          right_column: C_CUSTKEY
      relationship_type: many_to_one
  $$
);
Copy
+-----------------------------------------+
| SYSTEM$CREATE_SEMANTIC_VIEW_FROM_YAML   |
|-----------------------------------------|
| Semantic view was successfully created. |
+-----------------------------------------+

기존 의미 체계 뷰의 주석 수정

기존 의미 체계 뷰의 주석을 수정하려면 ALTER SEMANTIC VIEW 명령을 실행합니다.

ALTER SEMANTIC VIEW my_semantic_view SET COMMENT = 'my comment';
Copy

참고

ALTERSEMANTICVIEW 명령을 사용하는 경우 주석 이외의 속성을 변경할 수 없습니다. 의미 체계 뷰의 다른 속성을 변경하려면 의미 체계 뷰를 바꿉니다. 기존 의미 체계 뷰 바꾸기 섹션을 참조하십시오.

COMMENT 명령을 사용하여 의미 체계 뷰의 주석을 설정할 수 있습니다.

COMMENT ON SEMANTIC VIEW my_semantic_view IS 'my comment';
Copy

기존 의미 체계 뷰 바꾸기

기존 의미 체계 뷰를 바꾸려면(예: 뷰의 정의를 변경하려면) CREATE SEMANTIC VIEW 를 실행할 때 OR REPLACE 를 지정합니다. 기존 의미 체계 뷰에 부여된 권한을 유지하려면 COPY GRANTS 를 지정합니다. 예:

CREATE OR REPLACE SEMANTIC VIEW tpch_rev_analysis

  TABLES (
    orders AS SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.ORDERS
      PRIMARY KEY (o_orderkey)
      WITH SYNONYMS ('sales orders')
      COMMENT = 'All orders table for the sales domain',
    customers AS SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER
      PRIMARY KEY (c_custkey)
      COMMENT = 'Main table for customer data',
    line_items AS SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.LINEITEM
      PRIMARY KEY (l_orderkey, l_linenumber)
      COMMENT = 'Line items in orders'
  )

  RELATIONSHIPS (
    orders_to_customers AS
      orders (o_custkey) REFERENCES customers,
    line_item_to_orders AS
      line_items (l_orderkey) REFERENCES orders
  )

  FACTS (
    line_items.line_item_id AS CONCAT(l_orderkey, '-', l_linenumber),
    orders.count_line_items AS COUNT(line_items.line_item_id),
    line_items.discounted_price AS l_extendedprice * (1 - l_discount)
      COMMENT = 'Extended price after discount'
  )

  DIMENSIONS (
    customers.customer_name AS customers.c_name
      WITH SYNONYMS = ('customer name')
      COMMENT = 'Name of the customer',
    orders.order_date AS o_orderdate
      COMMENT = 'Date when the order was placed',
    orders.order_year AS YEAR(o_orderdate)
      COMMENT = 'Year when the order was placed'
  )

  METRICS (
    customers.customer_count AS COUNT(c_custkey)
      COMMENT = 'Count of number of customers',
    orders.order_average_value AS AVG(orders.o_totalprice)
      COMMENT = 'Average order value across all orders',
    orders.average_line_items_per_order AS AVG(orders.count_line_items)
      COMMENT = 'Average number of line items per order'
  )

  COMMENT = 'Semantic view for revenue analysis and different comment'
  COPY GRANTS;
Copy

의미 체계 뷰 목록 보기

현재 스키마 또는 지정된 스키마에서 의미 체계 뷰를 목록으로 표시하려면 SHOW SEMANTIC VIEWS 명령을 실행합니다. 예:

SHOW SEMANTIC VIEWS;
Copy
+-------------------------------+-----------------------+---------------+-------------------+----------------------------------------------+-----------------+-----------------+-----------+
| created_on                    | name                  | database_name | schema_name       | comment                                      | owner           | owner_role_type | extension |
|-------------------------------+-----------------------+---------------+-------------------+----------------------------------------------+-----------------+-----------------+-----------|
| 2025-03-20 15:06:34.039 -0700 | MY_NEW_SEMANTIC_MODEL | MY_DB         | MY_SCHEMA         | A semantic model created through the wizard. | MY_ROLE         | ROLE            | ["CA"]    |
| 2025-02-28 16:16:04.002 -0800 | O_TPCH_SEMANTIC_VIEW  | MY_DB         | MY_SCHEMA         | NULL                                         | MY_ROLE         | ROLE            | NULL      |
| 2025-03-21 07:03:54.120 -0700 | TPCH_REV_ANALYSIS     | MY_DB         | MY_SCHEMA         | Semantic view for revenue analysis           | MY_ROLE         | ROLE            | NULL      |
+-------------------------------+-----------------------+---------------+-------------------+----------------------------------------------+-----------------+-----------------+-----------+

ACCOUNT_USAGE 및 INFORMATION_SCHEMA 스키마 에서 의미 체계 뷰에 대한 뷰를 쿼리할 수도 있습니다.

차원 및 메트릭 나열

뷰, 스키마, 데이터베이스 또는 계정에서 사용할 수 있는 차원과 메트릭을 나열하려면 /sql-reference/sql/show-semantic-dimensions`및 :doc:/sql-reference/sql/show-semantic-metrics` 명령을 실행할 수 있습니다.

기본적으로, 이 명령은 현재 스키마에 정의된 의미 체계 뷰에서 사용할 수 있는 차원과 메트릭을 나열합니다.

SHOW SEMANTIC DIMENSIONS;
Copy
+---------------+-------------+--------------------+------------+---------------+--------------+-------------------+--------------------------------+
| database_name | schema_name | semantic_view_name | table_name | name          | data_type    | synonyms          | comment                        |
|---------------+-------------+--------------------+------------+---------------+--------------+-------------------+--------------------------------|
| MY_DB         | MY_SCHEMA   | TPCH_REV_ANALYSIS  | CUSTOMERS  | CUSTOMER_NAME | VARCHAR(25)  | ["customer name"] | Name of the customer           |
| MY_DB         | MY_SCHEMA   | TPCH_REV_ANALYSIS  | CUSTOMERS  | C_CUSTKEY     | NUMBER(38,0) | NULL              | NULL                           |
...
SHOW SEMANTIC METRICS;
Copy
+---------------+-------------+--------------------+------------+------------------------------+--------------+----------+----------------------------------------+
| database_name | schema_name | semantic_view_name | table_name | name                         | data_type    | synonyms | comment                                |
|---------------+-------------+--------------------+------------+------------------------------+--------------+----------+----------------------------------------|
| MY_DB         | MY_SCHEMA   | TPCH_REV_ANALYSIS  | CUSTOMERS  | CUSTOMER_COUNT               | NUMBER(18,0) | NULL     | Count of number of customers           |
| MY_DB         | MY_SCHEMA   | TPCH_REV_ANALYSIS  | ORDERS     | AVERAGE_LINE_ITEMS_PER_ORDER | NUMBER(36,6) | NULL     | Average number of line items per order |
...

범위를 변경하여 다음에 정의된 차원과 메트릭을 나열할 수 있습니다.

  • 현재 데이터베이스의 의미 체계 뷰:

    SHOW SEMANTIC DIMENSIONS IN DATABASE;
    
    SHOW SEMANTIC METRICS IN DATABASE;
    
    Copy
  • 특정 스키마 또는 데이터베이스의 의미 체계 뷰

    SHOW SEMANTIC DIMENSIONS IN SCHEMA my_db.my_other_schema;
    
    SHOW SEMANTIC DIMENSIONS IN DATABASE my_db;
    
    SHOW SEMANTIC METRICS IN SCHEMA my_db.my_other_schema;
    
    SHOW SEMANTIC METRICS IN DATABASE my_db;
    
    Copy
  • 계정의 의미 체계 뷰

    SHOW SEMANTIC DIMENSIONS IN ACCOUNT;
    
    SHOW SEMANTIC METRICS IN ACCOUNT;
    
    Copy
  • 특정 의미 체계 뷰:

    SHOW SEMANTIC DIMENSIONS IN my_semantic_view;
    
    Copy

의미 체계 뷰를 쿼리하려는 경우 SHOW SEMANTIC DIMENSIONS FOR METRIC 명령을 사용하여 특정 메트릭을 지정할 때 반환할 수 있는 차원을 결정할 수 있습니다. 자세한 내용은 지정된 메트릭에 대해 반환할 수 있는 차원 선택 섹션을 참조하십시오.

의미 체계 뷰에 대한 세부 정보 보기

의미 체계 뷰의 세부 정보를 보려면 DESCRIBE SEMANTIC VIEW 명령을 실행합니다. 예:

DESCRIBE SEMANTIC VIEW tpch_rev_analysis;
Copy
+--------------+------------------------------+---------------+--------------------------+----------------------------------------+
| object_kind  | object_name                  | parent_entity | property                 | property_value                         |
|--------------+------------------------------+---------------+--------------------------+----------------------------------------|
| NULL         | NULL                         | NULL          | COMMENT                  | Semantic view for revenue analysis     |
| TABLE        | CUSTOMERS                    | NULL          | BASE_TABLE_DATABASE_NAME | SNOWFLAKE_SAMPLE_DATA                  |
| TABLE        | CUSTOMERS                    | NULL          | BASE_TABLE_SCHEMA_NAME   | TPCH_SF1                               |
| TABLE        | CUSTOMERS                    | NULL          | BASE_TABLE_NAME          | CUSTOMER                               |
| TABLE        | CUSTOMERS                    | NULL          | PRIMARY_KEY              | ["C_CUSTKEY"]                          |
| TABLE        | CUSTOMERS                    | NULL          | COMMENT                  | Main table for customer data           |
| DIMENSION    | CUSTOMER_NAME                | CUSTOMERS     | TABLE                    | CUSTOMERS                              |
| DIMENSION    | CUSTOMER_NAME                | CUSTOMERS     | EXPRESSION               | customers.c_name                       |
| DIMENSION    | CUSTOMER_NAME                | CUSTOMERS     | DATA_TYPE                | VARCHAR(25)                            |
| DIMENSION    | CUSTOMER_NAME                | CUSTOMERS     | SYNONYMS                 | ["customer name"]                      |
| DIMENSION    | CUSTOMER_NAME                | CUSTOMERS     | COMMENT                  | Name of the customer                   |
| TABLE        | LINE_ITEMS                   | NULL          | BASE_TABLE_DATABASE_NAME | SNOWFLAKE_SAMPLE_DATA                  |
| TABLE        | LINE_ITEMS                   | NULL          | BASE_TABLE_SCHEMA_NAME   | TPCH_SF1                               |
| TABLE        | LINE_ITEMS                   | NULL          | BASE_TABLE_NAME          | LINEITEM                               |
| TABLE        | LINE_ITEMS                   | NULL          | PRIMARY_KEY              | ["L_ORDERKEY","L_LINENUMBER"]          |
| TABLE        | LINE_ITEMS                   | NULL          | COMMENT                  | Line items in orders                   |
| RELATIONSHIP | LINE_ITEM_TO_ORDERS          | LINE_ITEMS    | TABLE                    | LINE_ITEMS                             |
| RELATIONSHIP | LINE_ITEM_TO_ORDERS          | LINE_ITEMS    | REF_TABLE                | ORDERS                                 |
| RELATIONSHIP | LINE_ITEM_TO_ORDERS          | LINE_ITEMS    | FOREIGN_KEY              | ["L_ORDERKEY"]                         |
| RELATIONSHIP | LINE_ITEM_TO_ORDERS          | LINE_ITEMS    | REF_KEY                  | ["O_ORDERKEY"]                         |
| FACT         | DISCOUNTED_PRICE             | LINE_ITEMS    | TABLE                    | LINE_ITEMS                             |
| FACT         | DISCOUNTED_PRICE             | LINE_ITEMS    | EXPRESSION               | l_extendedprice * (1 - l_discount)     |
| FACT         | DISCOUNTED_PRICE             | LINE_ITEMS    | DATA_TYPE                | NUMBER(25,4)                           |
| FACT         | DISCOUNTED_PRICE             | LINE_ITEMS    | COMMENT                  | Extended price after discount          |
| FACT         | LINE_ITEM_ID                 | LINE_ITEMS    | TABLE                    | LINE_ITEMS                             |
| FACT         | LINE_ITEM_ID                 | LINE_ITEMS    | EXPRESSION               | CONCAT(l_orderkey, '-', l_linenumber)  |
| FACT         | LINE_ITEM_ID                 | LINE_ITEMS    | DATA_TYPE                | VARCHAR(134217728)                     |
| TABLE        | ORDERS                       | NULL          | BASE_TABLE_DATABASE_NAME | SNOWFLAKE_SAMPLE_DATA                  |
| TABLE        | ORDERS                       | NULL          | BASE_TABLE_SCHEMA_NAME   | TPCH_SF1                               |
| TABLE        | ORDERS                       | NULL          | BASE_TABLE_NAME          | ORDERS                                 |
| TABLE        | ORDERS                       | NULL          | SYNONYMS                 | ["sales orders"]                       |
| TABLE        | ORDERS                       | NULL          | PRIMARY_KEY              | ["O_ORDERKEY"]                         |
| TABLE        | ORDERS                       | NULL          | COMMENT                  | All orders table for the sales domain  |
| RELATIONSHIP | ORDERS_TO_CUSTOMERS          | ORDERS        | TABLE                    | ORDERS                                 |
| RELATIONSHIP | ORDERS_TO_CUSTOMERS          | ORDERS        | REF_TABLE                | CUSTOMERS                              |
| RELATIONSHIP | ORDERS_TO_CUSTOMERS          | ORDERS        | FOREIGN_KEY              | ["O_CUSTKEY"]                          |
| RELATIONSHIP | ORDERS_TO_CUSTOMERS          | ORDERS        | REF_KEY                  | ["C_CUSTKEY"]                          |
| METRIC       | AVERAGE_LINE_ITEMS_PER_ORDER | ORDERS        | TABLE                    | ORDERS                                 |
| METRIC       | AVERAGE_LINE_ITEMS_PER_ORDER | ORDERS        | EXPRESSION               | AVG(orders.count_line_items)           |
| METRIC       | AVERAGE_LINE_ITEMS_PER_ORDER | ORDERS        | DATA_TYPE                | NUMBER(36,6)                           |
| METRIC       | AVERAGE_LINE_ITEMS_PER_ORDER | ORDERS        | COMMENT                  | Average number of line items per order |
| FACT         | COUNT_LINE_ITEMS             | ORDERS        | TABLE                    | ORDERS                                 |
| FACT         | COUNT_LINE_ITEMS             | ORDERS        | EXPRESSION               | COUNT(line_items.line_item_id)         |
| FACT         | COUNT_LINE_ITEMS             | ORDERS        | DATA_TYPE                | NUMBER(18,0)                           |
| METRIC       | ORDER_AVERAGE_VALUE          | ORDERS        | TABLE                    | ORDERS                                 |
| METRIC       | ORDER_AVERAGE_VALUE          | ORDERS        | EXPRESSION               | AVG(orders.o_totalprice)               |
| METRIC       | ORDER_AVERAGE_VALUE          | ORDERS        | DATA_TYPE                | NUMBER(30,8)                           |
| METRIC       | ORDER_AVERAGE_VALUE          | ORDERS        | COMMENT                  | Average order value across all orders  |
| DIMENSION    | ORDER_DATE                   | ORDERS        | TABLE                    | ORDERS                                 |
| DIMENSION    | ORDER_DATE                   | ORDERS        | EXPRESSION               | o_orderdate                            |
| DIMENSION    | ORDER_DATE                   | ORDERS        | DATA_TYPE                | DATE                                   |
| DIMENSION    | ORDER_DATE                   | ORDERS        | COMMENT                  | Date when the order was placed         |
| DIMENSION    | ORDER_YEAR                   | ORDERS        | TABLE                    | ORDERS                                 |
| DIMENSION    | ORDER_YEAR                   | ORDERS        | EXPRESSION               | YEAR(o_orderdate)                      |
| DIMENSION    | ORDER_YEAR                   | ORDERS        | DATA_TYPE                | NUMBER(4,0)                            |
| DIMENSION    | ORDER_YEAR                   | ORDERS        | COMMENT                  | Year when the order was placed         |
+--------------+------------------------------+---------------+--------------------------+----------------------------------------+

의미 체계 뷰를 위한 SQL 문 가져오기

GET_DDL 함수를 호출하여 의미 체계 뷰를 생성한 DDL 문을 검색할 수 있습니다.

참고

의미 체계 뷰에 대해 이 함수를 호출하려면, 의미 체계 뷰에 대해 REFERENCES 또는 OWNERSHIP 권한이 부여된 역할을 사용해야 합니다.

GET_DDL 을 호출할 때 'SEMANTIC_VIEW' 를 오브젝트 유형으로 전달합니다. 예:

SELECT GET_DDL('SEMANTIC_VIEW', 'tpch_rev_analysis', TRUE);
Copy
+-----------------------------------------------------------------------------------+
| GET_DDL('SEMANTIC_VIEW', 'TPCH_REV_ANALYSIS', TRUE)                               |
|-----------------------------------------------------------------------------------|
| create or replace semantic view DYOSHINAGA_DB.DYOSHINAGA_SCHEMA.TPCH_REV_ANALYSIS |
|     tables (                                                                                                                                                                       |
|             ORDERS primary key (O_ORDERKEY) with synonyms=('sales orders') comment='All orders table for the sales domain',                                                                                                                                                                       |
|             CUSTOMERS as CUSTOMER primary key (C_CUSTKEY) comment='Main table for customer data',                                                                                                                                                                       |
|             LINE_ITEMS as LINEITEM primary key (L_ORDERKEY,L_LINENUMBER) comment='Line items in orders'                                                                                                                                                                       |
|     )                                                                                                                                                                       |
|     relationships (                                                                                                                                                                       |
|             ORDERS_TO_CUSTOMERS as ORDERS(O_CUSTKEY) references CUSTOMERS(C_CUSTKEY),                                                                                                                                                                       |
|             LINE_ITEM_TO_ORDERS as LINE_ITEMS(L_ORDERKEY) references ORDERS(O_ORDERKEY)                                                                                                                                                                       |
|     )                                                                                                                                                                       |
|     facts (                                                                                                                                                                       |
|             ORDERS.COUNT_LINE_ITEMS as COUNT(line_items.line_item_id),                                                                                                                                                                       |
|             LINE_ITEMS.DISCOUNTED_PRICE as l_extendedprice * (1 - l_discount) comment='Extended price after discount',                                                                                                                                                                       |
|             LINE_ITEMS.LINE_ITEM_ID as CONCAT(l_orderkey, '-', l_linenumber)                                                                                                                                                                       |
|     )                                                                                                                                                                       |
|     dimensions (                                                                                                                                                                       |
|             ORDERS.ORDER_DATE as o_orderdate comment='Date when the order was placed',                                                                                                                                                                       |
|             ORDERS.ORDER_YEAR as YEAR(o_orderdate) comment='Year when the order was placed',                                                                                                                                                                       |
|             CUSTOMERS.CUSTOMER_NAME as customers.c_name with synonyms=('customer name') comment='Name of the customer'                                                                                                                                                                       |
|     )                                                                                                                                                                       |
|     metrics (                                                                                                                                                                       |
|             ORDERS.AVERAGE_LINE_ITEMS_PER_ORDER as AVG(orders.count_line_items) comment='Average number of line items per order',                                                                                                                                                                       |
|             ORDERS.ORDER_AVERAGE_VALUE as AVG(orders.o_totalprice) comment='Average order value across all orders'                                                                                                                                                                       |
|     );                                                                                                                                                                       |
+-----------------------------------------------------------------------------------+

반환 값에는 비공개 팩트 및 메트릭 (PRIVATE 키워드로 표시된 팩트 및 메트릭)이 포함됩니다.

의미 체계 뷰의 YAML 사양 가져오기

의미 체계 뷰에 대해 의미 체계 모델의 YAML 사양 을 가져오려면 SYSTEM$READ_YAML_FROM_SEMANTIC_VIEW 함수를 호출합니다.

다음 예제에서는 데이터베이스 my_db 및 스키마 my_schema 에서 tpch_analysis 이름의 의미 체계 뷰에 대한 YAML 사양을 반환합니다.

SELECT SYSTEM$READ_YAML_FROM_SEMANTIC_VIEW(
  'my_db.my_schema.tpch_rev_analysis'
);
Copy
+-------------------------------------------------------------+
| READ_YAML_FROM_SEMANTIC_VIEW                                |
|-------------------------------------------------------------|
| name: TPCH_REV_ANALYSIS                                     |
| description: Semantic view for revenue analysis             |
| tables:                                                     |
|   - name: CUSTOMERS                                         |
|     description: Main table for customer data               |
|     base_table:                                             |
|       database: SNOWFLAKE_SAMPLE_DATA                       |
|       schema: TPCH_SF1                                      |
|       table: CUSTOMER                                       |
|     primary_key:                                            |
|       columns:                                              |
|         - C_CUSTKEY                                         |
|     dimensions:                                             |
|       - name: CUSTOMER_NAME                                 |
|         synonyms:                                           |
|           - customer name                                   |
|         description: Name of the customer                   |
|         expr: customers.c_name                              |
|         data_type: VARCHAR(25)                              |
|       - name: C_CUSTKEY                                     |
|         expr: C_CUSTKEY                                     |
|         data_type: VARCHAR(134217728)                       |
|   - name: LINE_ITEMS                                        |
|     description: Line items in orders                       |
|     base_table:                                             |
|       database: SNOWFLAKE_SAMPLE_DATA                       |
|       schema: TPCH_SF1                                      |
|       table: LINEITEM                                       |
|     primary_key:                                            |
|       columns:                                              |
|         - L_ORDERKEY                                        |
|         - L_LINENUMBER                                      |
|     dimensions:                                             |
|       - name: L_ORDERKEY                                    |
|         expr: L_ORDERKEY                                    |
|         data_type: VARCHAR(134217728)                       |
|       - name: L_LINENUMBER                                  |
|         expr: L_LINENUMBER                                  |
|         data_type: VARCHAR(134217728)                       |
|     facts:                                                  |
|       - name: DISCOUNTED_PRICE                              |
|         description: Extended price after discount          |
|         expr: l_extendedprice * (1 - l_discount)            |
|         data_type: "NUMBER(25,4)"                           |
|       - name: LINE_ITEM_ID                                  |
|         expr: "CONCAT(l_orderkey, '-', l_linenumber)"       |
|         data_type: VARCHAR(134217728)                       |
|   - name: ORDERS                                            |
|     synonyms:                                               |
|       - sales orders                                        |
|     description: All orders table for the sales domain      |
|     base_table:                                             |
|       database: SNOWFLAKE_SAMPLE_DATA                       |
|       schema: TPCH_SF1                                      |
|       table: ORDERS                                         |
|     primary_key:                                            |
|       columns:                                              |
|         - O_ORDERKEY                                        |
|     dimensions:                                             |
|       - name: ORDER_DATE                                    |
|         description: Date when the order was placed         |
|         expr: o_orderdate                                   |
|         data_type: DATE                                     |
|       - name: ORDER_YEAR                                    |
|         description: Year when the order was placed         |
|         expr: YEAR(o_orderdate)                             |
|         data_type: "NUMBER(4,0)"                            |
|       - name: O_ORDERKEY                                    |
|         expr: O_ORDERKEY                                    |
|         data_type: VARCHAR(134217728)                       |
|       - name: O_CUSTKEY                                     |
|         expr: O_CUSTKEY                                     |
|         data_type: VARCHAR(134217728)                       |
|     facts:                                                  |
|       - name: COUNT_LINE_ITEMS                              |
|         expr: COUNT(line_items.line_item_id)                |
|         data_type: "NUMBER(18,0)"                           |
|     metrics:                                                |
|       - name: AVERAGE_LINE_ITEMS_PER_ORDER                  |
|         description: Average number of line items per order |
|         expr: AVG(orders.count_line_items)                  |
|       - name: ORDER_AVERAGE_VALUE                           |
|         description: Average order value across all orders  |
|         expr: AVG(orders.o_totalprice)                      |
| relationships:                                              |
|   - name: LINE_ITEM_TO_ORDERS                               |
|     left_table: LINE_ITEMS                                  |
|     right_table: ORDERS                                     |
|     relationship_columns:                                   |
|       - left_column: L_ORDERKEY                             |
|         right_column: O_ORDERKEY                            |
|   - name: ORDERS_TO_CUSTOMERS                               |
|     left_table: ORDERS                                      |
|     right_table: CUSTOMERS                                  |
|     relationship_columns:                                   |
|       - left_column: O_CUSTKEY                              |
|         right_column: C_CUSTKEY                             |
|                                                             |
+-------------------------------------------------------------+

의미 체계 뷰 제거하기

의미 체계 뷰를 제거하려면 DROP SEMANTIC VIEW 명령을 실행합니다. 예:

DROP SEMANTIC VIEW tpch_rev_analysis;
Copy

의미 체계 뷰에 권한 부여하기

의미 체계 뷰 권한 에는 의미 체계 뷰에 부여할 수 있는 권한이 목록으로 표시됩니다.

의미 체계 뷰를 사용하려면 해당 뷰에 대한 다음 권한이 필요합니다.

  • 해당 뷰에 대해 DESCRIBE SEMANTIC VIEW 명령을 실행하려면 모든 권한(예: REFERENCES OR SELECT)이 필요합니다.

  • SELECT 를 실행하려면 SELECT ... FROM SEMANTIC_VIEW() 가 필요합니다.

  • SHOW SEMANTIC VIEWS 명령의 출력에 뷰를 표시하려면 이 권한 중 하나가 필요합니다.

참고

의미 체계 뷰를 쿼리하려고 할 때 의미 체계 뷰에서 사용되는 테이블에 대한 SELECT 권한은 필요하지 않습니다. 의미 체계 뷰 자체에 대해서만 SELECT 권한이 필요합니다.

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

Cortex Analyst 에서 소유하지 않은 의미 체계 뷰를 사용하려면 해당 뷰에 대한 REFERENCES 및 SELECT 권한이 있는 역할을 사용해야 합니다.

의미 체계 뷰에 REFERENCES 및 SELECT 권한을 부여하려면 GRANT <privileges> … TO ROLE 명령을 사용합니다. 예를 들어, my_semantic_view 라 는 이름의 의미 체계 뷰에 REFERENCES 및 SELECT 권한을 my_analyst_role 역할에 부여하려면 다음 문을 실행하면 됩니다.

GRANT REFERENCES, SELECT ON SEMANTIC VIEW my_semantic_view TO ROLE my_analyst_role;
Copy

Cortex Analyst 사용자와 공유하려는 의미 체계 뷰가 포함된 스키마가 있는 경우 향후 부여 를 사용하여 해당 스키마에서 생성한 모든 의미 체계 뷰에 대한 권한을 부여할 수 있습니다. 예:

GRANT REFERENCES, SELECT ON FUTURE SEMANTIC VIEWS IN SCHEMA my_schema TO ROLE my_analyst_role;
Copy