CREATE SEMANTIC VIEW

현재/지정된 스키마에 새 시맨틱 뷰 를 만듭니다.

의미 체계 뷰는 이러한 유효성 검사 규칙 을 준수해야 합니다.

참고 항목:

ALTER SEMANTIC VIEW , DESCRIBE SEMANTIC VIEW , DROP SEMANTIC VIEW , SHOW SEMANTIC VIEWS , SHOW SEMANTIC DIMENSIONS , SHOW SEMANTIC METRICS , SHOW SEMANTIC DIMENSIONS FOR METRIC , SYSTEM$CREATE_SEMANTIC_VIEW_FROM_YAML

구문

CREATE [ OR REPLACE ] SEMANTIC VIEW [ IF NOT EXISTS ] <name>
  TABLES ( logicalTable [ , ... ] )
  [ RELATIONSHIPS ( relationshipDef [ , ... ] ) ]
  [ FACTS ( semanticExpression [ , ... ] ) ]
  [ DIMENSIONS ( semanticExpression [ , ... ] ) ]
  [ METRICS ( semanticExpression [ , ... ] ) ]
  [ COMMENT = '<comment_about_semantic_view>' ]
  [ COPY GRANTS ]
Copy

여기서,

  • 논리 테이블의 매개 변수 는 다음과 같습니다.

    logicalTable ::=
      [ <table_alias> AS ] <table_name>
      [ PRIMARY KEY ( <primary_key_column_name> [ , ... ] ) ]
      [
        UNIQUE ( <unique_column_name> [ , ... ] )
        [ ... ]
      ]
      [ WITH SYNONYMS [ = ] ( '<synonym>' [ , ... ] ) ]
      [ COMMENT = '<comment_about_table>' ]
    
    Copy
  • 관계에 대한 매개 변수 는 다음과 같습니다.

    relationshipDef ::=
      [ <relationship_identifier> AS ]
      <table_alias> ( <column_name> [ , ... ] )
      REFERENCES
      <ref_table_alias> [ ( <ref_column_name> [ , ... ] ) ]
    
    Copy
  • 차원 정의의 식에 대한 매개 변수 는 다음과 같습니다.

    semanticExpression ::=
      [ PUBLIC ] <table_alias>.<dimension> AS <sql_expr>
      [ WITH SYNONYMS [ = ] ( '<synonym>' [ , ... ] ) ]
      [ COMMENT = '<comment_about_the_dimension>' ]
    
    Copy
  • 팩트 및 메트릭 정의의 식에 대한 매개 변수 는 다음과 같습니다.

    semanticExpression ::=
      [ { PRIVATE | PUBLIC } ] <table_alias>.<fact_or_metric> AS <sql_expr>
      [ WITH SYNONYMS [ = ] ( '<synonym>' [ , ... ] ) ]
      [ COMMENT = '<comment_about_the_fact_or_metric>' ]
    
    Copy
  • 다음 구문을 사용하여 윈도우 함수(윈도우 함수 메트릭)를 사용하는 메트릭을 정의할 수 있습니다.

    windowFunctionMetricDefinition ::=
      <window_function>( <metric> ) OVER (
        [ PARTITION BY { <exprs_using_dimensions_or_metrics> | EXCLUDING <dimensions> } ]
        [ ORDER BY <exprs_using_dimensions_or_metrics> [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] ]
        [ <windowFrameClause> ]
      )
    
    Copy

    이 구문에 대한 자세한 내용은 윈도우 함수 메트릭에 대한 매개 변수 섹션을 참조하세요.

참고

절의 순서가 중요합니다. 예를 들어 DIMENSIONS 절 앞에 FACTS 절을 지정해야 합니다.

이후 절에서 정의된 시맨틱 식을 참조할 수 있습니다. 예를 들어 fact_1 뒤에 fact_2 가 정의되어 있더라도 fact_2fact_1 의 정의에 사용할 수 있습니다.

필수 매개 변수

name

시맨틱 뷰의 이름을 지정합니다. 이 이름은 테이블이 생성되는 스키마에 대해 고유해야 합니다.

또한, 식별자는 알파벳 문자로 시작해야 하며 전체 식별자 문자열을 큰따옴표(예: "My object")로 묶지 않는 한 공백이나 특수 문자를 포함할 수 없습니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다.

자세한 내용은 식별자 요구 사항 섹션을 참조하십시오.

선택적 매개 변수

COMMENT = 'comment_about_semantic_view'

시맨틱 뷰에 대한 설명을 지정합니다.

COPY GRANTS

OR REPLACE 를 지정하여 기존 시맨틱 뷰를 새 시맨틱 뷰로 바꾸는 경우 이 매개 변수를 설정하여 기존 시맨틱 뷰에 부여된 모든 권한을 새 시맨틱 뷰에 복사할 수 있습니다.

이 명령은 OWNERSHIP 을 제외한 모든 권한 부여를 기존 시맨틱 뷰에서 새 시맨틱 뷰로 복사합니다. CREATE SEMANTIC VIEW 문을 실행하는 역할은 새 뷰를 소유합니다.

새 시맨틱 뷰는 스키마의 오브젝트 유형에 대해 정의된 향후 모든 권한 부여를 상속하지는 않습니다.

권한 부여 복사 작업은 CREATE SEMANTIC VIEW 문에서 원자적으로(즉, 같은 트랜잭션 내에서) 발생합니다.

COPY GRANTS 를 생략하는 경우 새 시맨틱 뷰는 기존 시맨틱 뷰에 부여된 명시적 액세스 권한을 상속하지 않지만 스키마에서 오브젝트 유형에 대해 정의된 향후 부여는 상속합니다.

논리 테이블의 매개 변수

이러한 매개 변수는 논리 테이블 구문 일부입니다.

table_alias AS

논리 테이블의 선택적 별칭을 지정합니다.

  • 별칭을 지정하는 경우 관계, 팩트, 차원 및 메트릭에서 논리 테이블을 참조할 때 이 별칭을 사용해야 합니다.

  • 별칭을 지정하지 않으면 정규화되지 않은 논리적 테이블 이름을 사용하여 테이블을 참조합니다.

table_name

논리 테이블의 이름을 지정합니다.

PRIMARY KEY ( primary_key_column_name [ , ... ] )

테이블의 기본 키 역할을 하는 논리 테이블에서 하나 이상의 열 이름을 지정합니다.

UNIQUE ( unique_column_name [ , ... ] )

고유 값을 포함하는 열의 이름 또는 고유한 값 조합을 포함하는 열의 이름을 지정합니다.

예를 들어 service_id 열에 고유 값이 포함된 경우 지정합니다.

TABLES(
  ...
  product_table UNIQUE (service_id)
Copy

product_area_idproduct_id 열의 값 조합이 고유한 경우 지정합니다.

TABLES(
  ...
  product_table UNIQUE (product_area_id, product_id)
  ...
Copy

주어진 논리 테이블에서 여러 열과 여러 열의 조합을 고유한 것으로 식별할 수 있습니다.

TABLES(
  ...
  product_table UNIQUE (product_area_id, product_id) UNIQUE (service_id)
  ...
Copy

참고

(PRIMARY KEY 를 사용하여) 열을 이미 기본 키 열로 식별한 경우에는 해당 열에 UNIQUE 절을 추가하지 마십시오.

WITH SYNONYMS [ = ] ( 'synonym' [ , ... ] )

논리 테이블의 동의어를 하나 이상 지정합니다. 별칭과 달리 동의어는 정보 제공 목적으로만 사용됩니다. 관계, 차원, 메트릭 및 팩트에서 논리적 테이블을 참조할 때 동의어를 사용하지 않습니다.

COMMENT = 'comment_about_table'

논리 테이블에 대한 설명을 지정합니다.

관계에 대한 매개 변수

이러한 매개 변수는 관계 구문 의 일부입니다.

relationship_identifier AS

관계에 대한 선택적 식별자를 지정합니다.

table_alias ( column_name [ , ... ] )

논리 테이블 중 하나와 다른 논리 테이블의 열을 참조하는 하나 이상의 열을 지정합니다.

ref_table_alias [ ( ref_column_name [ , ... ] ) ]

첫 번째 논리 테이블에서 참조하는 다른 논리 테이블과 그 열을 하나 이상 지정합니다.

열은 논리적 테이블 정의 에서 PRIMARY KEY 또는 UNIQUE 로 식별되어야 합니다.

팩트, 차원 및 메트릭에 대한 매개 변수

시맨틱 뷰에서는 하나 이상의 차원 또는 메트릭을 정의해야 하므로 DIMENSIONS 또는 METRICS 절을 하나 이상 지정해야 합니다.

이러한 매개 변수는 팩트, 차원 또는 메트릭을 정의하기 위한 구문 의 일부입니다.

{ PRIVATE | PUBLIC }

팩트 또는 메트릭이 비공개 인지 공개인지를 지정합니다. 비공개로 표시된 정보와 메트릭은 쿼리하거나 쿼리 조건에서 사용할 수 없습니다.

참고

차원은 비공개로 표시할 수 없습니다. 차원은 항상 공개입니다. 차원의 경우 PUBLIC을 지정하든 생략하든 효과는 동일합니다.

PRIVATE 및 PUBLIC을 생략하는 경우 차원, 팩트 또는 메트릭은 기본적으로 공개입니다.

table_alias.semantic_expression_name AS sql_expr

차원, 팩트 또는 메트릭의 이름과 해당 차원, 팩트 또는 메트릭을 계산하기 위한 SQL 식을 지정합니다.

유효한 의미 체계 뷰를 정의하기 위한 규칙에 대해서는 Snowflake가 의미 체계 뷰를 검증하는 방법 섹션을 참조하세요.

WITH SYNONYMS [ = ] ( 'synonym' [ , ... ] )

차원, 팩트 또는 메트릭에 대한 하나 이상의 선택적 동의어를 지정합니다. 동의어는 정보 제공 목적으로만 사용된다는 점에 유의하십시오. 동의어를 사용하여 다른 차원, 팩트 또는 메트릭에서 차원, 팩트 또는 메트릭을 참조할 수 없습니다.

COMMENT = 'comment_about_dim_fact_or_metric'

차원, 팩트 또는 메트릭에 대한 선택적 설명을 지정합니다.

윈도우 함수 메트릭에 대한 매개 변수

이러한 매개 변수는 윈도우 함수 메트릭을 정의하기 위한 구문 의 일부입니다.

metric

이 윈도우 함수에 대한 메트릭 식을 지정합니다. 이 엔터티에서 메트릭을 정의하는 데 사용할 수 있는 메트릭 또는 유효한 메트릭 식을 지정할 수 있습니다.

PARTITION BY ...

행을 파티션으로 그룹화합니다. 지정된 식 세트 또는 쿼리에 지정된 모든 차원(선택한 차원 제외)을 기준으로 분할할 수 있습니다.

PARTITION BY exprs_using_dimensions_or_metrics

SQL 식을 기준으로 행을 파티션으로 그룹화합니다. SQL 식에서:

  • 식의 모든 차원은 윈도우 함수 메트릭을 정의하는 동일한 엔터티에서 액세스할 수 있어야 합니다.

  • 모든 메트릭은 이 메트릭이 정의되는 동일한 테이블에 속해야 합니다.

  • 집계, 윈도우 함수 또는 하위 쿼리를 지정할 수 없습니다.

PARTITION BY EXCLUDING dimensions

dimensions 로 지정된 차원을 제외하고 쿼리의 SEMANTIC_VIEW 절에 지정된 모든 차원을 기준으로 행을 파티션으로 그룹화합니다.

dimensions 는 윈도우 함수 메트릭을 정의하는 엔터티에서 액세스할 수 있는 차원만 참조해야 합니다.

예를 들어 분할에서 차원 table_1.dimension_1 을 제외한다고 가정해 보겠습니다.

CREATE SEMANTIC VIEW sv
  ...
  METRICS (
    table_1.metric_2 AS SUM(table_1.metric_1) OVER
      (PARTITION BY EXCLUDING table_l.dimension_1 ORDER BY table_1.dimension_2)
  )
  ...
Copy

차원 table_1.dimension_1 을 지정하는 쿼리를 실행한다고 가정해 보겠습니다.

SELECT * FROM SEMANTIC VIEW(
  sv
  METRICS (
    table_1.metric_2
  )
  DIMENSIONS (
    table_1.dimension_1,
    table_1.dimension_2,
    table_1.dimension_3
  );
Copy

쿼리에서 메트릭 table_1.metric_2 는 다음과 같이 평가됩니다.

SUM(table_1.metric_1) OVER (
  PARTITION BY table_1.dimension_2, table_1.dimension_3
  ORDER BY table_1.dimension_2
)
Copy

table_1.dimension_1 이 PARTITION BY 절에서 제외되는 방식에 유의하세요.

참고

의미 체계 뷰의 메트릭 정의 외부에서는 EXCLUDING을 사용할 수 없습니다. EXCLUDING은 다른 컨텍스트의 윈도우 함수 호출에서 지원되지 않습니다.

ORDER BY exprs_using_dimensions_or_metrics  [ ASC | DESC ] [ NULLS FIRST | LAST ] [, ... ]

각 파티션 내에서 행을 정렬합니다. SQL 식에서:

  • 식의 모든 차원은 윈도우 함수 메트릭을 정의하는 동일한 엔터티에서 액세스할 수 있어야 합니다.

  • 모든 메트릭은 이 메트릭이 정의되는 동일한 테이블에 속해야 합니다.

  • 집계, 윈도우 함수 또는 하위 쿼리를 지정할 수 없습니다.

windowFrameClause

윈도우 함수 구문 및 사용법 섹션을 참조하십시오.

윈도우 함수의 매개 변수와 예제에 대한 자세한 내용은 윈도우 함수 메트릭 정의 및 쿼리 섹션을 참조하세요.

액세스 제어 요구 사항

이 작업을 실행하는 데 사용되는 역할 에는 최소한 다음 권한 이 있어야 합니다.

권한

오브젝트

참고

CREATE SEMANTIC VIEW

스키마

새 시맨틱 뷰를 만드는 데 필요합니다.

SELECT

테이블, 뷰

시맨틱 뷰 정의에 사용되는 모든 테이블 및/또는 뷰에 필요합니다.

스키마의 모든 오브젝트에 대해 작업을 수행하려면 상위 데이터베이스 및 스키마에 대한 USAGE 권한.

지정된 권한 세트로 사용자 지정 역할을 만드는 방법에 대한 지침은 사용자 지정 역할 만들기 섹션을 참조하십시오.

보안 오브젝트 에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여에 대한 일반적인 정보는 액세스 제어의 개요 섹션을 참조하십시오.

사용법 노트

  • 의미 체계 뷰는 유효해야 하며 Snowflake가 의미 체계 뷰를 검증하는 방법 에 설명된 규칙을 따라야 합니다.

  • 메타데이터 관련:

    주의

    고객은 Snowflake 서비스를 사용할 때 개인 데이터(사용자 오브젝트 제외), 민감한 데이터, 수출 통제 대상 데이터 또는 기타 규제 데이터가 메타데이터로 입력되지 않도록 해야 합니다. 자세한 내용은 Snowflake의 메타데이터 필드 섹션을 참조하십시오.

  • CREATE OR REPLACE <오브젝트> 문은 원자성입니다. 즉, 오브젝트가 바뀔 때 단일 트랜잭션으로 이전 오브젝트가 삭제되고 새 오브젝트가 생성됩니다.

의미 체계 뷰 생성하기 섹션을 참조하십시오.