CREATE SEMANTIC VIEW¶
현재/지정된 스키마에 새 시맨틱 뷰 를 만듭니다.
의미 체계 뷰는 이러한 유효성 검사 규칙 을 준수해야 합니다.
- 참고 항목:
ALTER SEMANTIC VIEW , DESCRIBE SEMANTIC VIEW , DROP SEMANTIC VIEW , SHOW SEMANTIC VIEWS , SHOW SEMANTIC DIMENSIONS , SHOW SEMANTIC DIMENSIONS FOR METRIC , SHOW SEMANTIC FACTS , SHOW SEMANTIC METRICS , SYSTEM$CREATE_SEMANTIC_VIEW_FROM_YAML
구문¶
여기서,
논리 테이블의 매개 변수 는 다음과 같습니다.
관계에 대한 매개 변수 는 다음과 같습니다.
:ref:`팩트 정의의 식에 대한 매개 변수<label-create_semantic_view_expressions>`는 다음과 같습니다.
차원 정의의 식에 대한 매개 변수 는 다음과 같습니다.
:ref:`메트릭 정의의 식에 대한 매개 변수<label-create_semantic_view_expressions>`는 다음과 같습니다.
다음 구문을 사용하여 윈도우 함수(윈도우 함수 메트릭)를 사용하는 메트릭을 정의할 수 있습니다.
이 구문에 대한 자세한 내용은 윈도우 함수 메트릭에 대한 매개 변수 섹션을 참조하세요.
참고
절의 순서가 중요합니다. 예를 들어 DIMENSIONS 절 앞에 FACTS 절을 지정해야 합니다.
이후 절에서 정의된 시맨틱 식을 참조할 수 있습니다. 예를 들어 fact_1 뒤에 fact_2 가 정의되어 있더라도 fact_2 를 fact_1 의 정의에 사용할 수 있습니다.
필수 매개 변수¶
name시맨틱 뷰의 이름을 지정합니다. 이 이름은 테이블이 생성되는 스키마에 대해 고유해야 합니다.
또한, 식별자는 알파벳 문자로 시작해야 하며 전체 식별자 문자열을 큰따옴표(예:
"My object")로 묶지 않는 한 공백이나 특수 문자를 포함할 수 없습니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다.자세한 내용은 식별자 요구 사항 섹션을 참조하십시오.
선택적 매개 변수¶
COMMENT = 'comment_about_semantic_view'시맨틱 뷰에 대한 설명을 지정합니다.
AI_SQL_GENERATION 'instructions_for_sql_generation'SQL문을 생성하는 방법을 설명하는 :doc:`Cortex Analyst에 대한 지침</user-guide/snowflake-cortex/cortex-analyst/custom-instructions>`을 지정합니다.
자세한 내용은 |cortex-analyst|용 사용자 지정 지침 제공하기 섹션을 참조하십시오.
AI_QUESTION_CATEGORIZATION 'instructions_for_question_categorization'질문을 분류하는 방법을 설명하는 :doc:`Cortex Analyst에 대한 지침</user-guide/snowflake-cortex/cortex-analyst/custom-instructions>`을 지정합니다.
자세한 내용은 |cortex-analyst|용 사용자 지정 지침 제공하기 섹션을 참조하십시오.
COPY GRANTSOR 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열에 고유 값이 포함된 경우 지정합니다.product_area_id및product_id열의 값 조합이 고유한 경우 지정합니다.주어진 논리 테이블에서 여러 열과 여러 열의 조합을 고유한 것으로 식별할 수 있습니다.
참고
(PRIMARY KEY 를 사용하여) 열을 이미 기본 키 열로 식별한 경우에는 해당 열에 UNIQUE 절을 추가하지 마십시오.
CONSTRAINT [ constraint_name ].DISTINCT RANGE BETWEEN start_column AND end_column EXCLUSIVE-
:ref:`범위 조인 <label-semantic_views_custom_range_joins>`에 대한 제약 조건을 지정합니다.
constraint_name제약 조건의 선택적 이름을 지정합니다.
이 이름을 생략하면 명령은 제약 조건에 대해 시스템에서 생성된 이름을 사용합니다.
DISTINCT RANGE BETWEEN start_column AND end_column EXCLUSIVE`는 각 행에서 :samp:`start_column및end_column사이의 범위가 서로 다른 범위임을 지정합니다.범위는
반개 구간 <https://en.wikipedia.org/wiki/Interval_(mathematics)#Definitions_and_terminology>`_이며, 여기서 범위는 왼쪽(:samp:`{start_column})에서 닫혀 있고 오른쪽(end_column)에서 열립니다.즉, 왼쪽의 시간은 범위에 포함되지만 오른쪽의 시간은 범위에서 제외됩니다.
예를 들어, 이 테이블의 행에 대해 :samp:`{start_column}`의 값이 ``2024-01-15 00:00:00.000``인 경우 :samp:`{end_column}`의 값은 ``2024-02-01 00:00:00.000``이며, 범위는 다음과 같습니다.
2024-01-15 00:00:00.000 <= timestamp_from_other_table < 2024-02-01 00:00:00.000타임스탬프 ``2024-01-15 00:00:00.000``은 이 범위에 포함되지만, 타임스탬프 ``2024-02-01 00:00:00.000``은 이 범위에 포함되지 않습니다.
start_column및 :samp:`{end_column}`은 동일한 테이블의 물리적 열이거나 동일한 테이블의 팩트 또는 차원이어야 합니다.
WITH SYNONYMS [ = ] ( 'synonym' [ , ... ] )논리 테이블의 동의어를 하나 이상 지정합니다. 별칭과 달리 동의어는 정보 제공 목적으로만 사용됩니다. 관계, 차원, 메트릭 및 팩트에서 논리적 테이블을 참조할 때 동의어를 사용하지 않습니다.
COMMENT = 'comment_about_table'논리 테이블에 대한 설명을 지정합니다.
관계에 대한 매개 변수¶
이러한 매개 변수는 관계 구문 의 일부입니다.
relationship_identifier AS관계에 대한 선택적 식별자를 지정합니다.
table_alias ( column_name [ , ... ] )논리 테이블 중 하나와 다른 논리 테이블의 열을 참조하는 하나 이상의 열을 지정합니다.
ref_table_alias [ ( ... ) ]첫 번째 논리 테이블이 참조하는 다른 논리 테이블을 지정합니다.
테이블을 조인하려는 방법에 따라 괄호로 묶인 다음 중 하나를 지정할 수 있습니다.
ref_column_name [ , ... ]:ref:`논리 테이블 정의 <label-create_semantic_view_tables>`에서 PRIMARY KEY 또는 UNIQUE 제약 조건으로 식별되는 열을 지정합니다.
ASOF ref_column_name [ , ... ] )ASOF 조인 중 하나의 열을 지정합니다.
참고
주어진 관계의 정의에서 ASOF 키워드를 최대 1개만 지정할 수 있습니다. 목록의 열 앞에 이 키워드를 지정할 수 있습니다.
BETWEEN start_column AND end_column EXCLUSIVE-
:ref:`범위 조인 <label-semantic_views_custom_range_joins>`의 경우 첫 번째 테이블에서 가능한 값의 범위를 지정합니다.
팩트, 차원 및 메트릭에 대한 매개 변수¶
의미 체계 뷰에서는 하나 이상의 차원 또는 메트릭을 정의해야 합니다. 즉, DIMENSIONS 또는 METRICS 절을 하나 이상 지정해야 합니다.
이러한 매개 변수는 팩트, 차원 또는 :ref:`메트릭 <label-create_semantic_view_syntax_metric_expression>`을 정의하기 위한 구문의 일부입니다.
{ PRIVATE | PUBLIC }팩트 또는 메트릭이 비공개 인지 공개인지를 지정합니다. 비공개로 표시된 정보와 메트릭은 쿼리하거나 쿼리 조건에서 사용할 수 없습니다.
참고
차원은 비공개로 표시할 수 없습니다. 차원은 항상 공개입니다. 차원의 경우 PUBLIC을 지정하든 생략하든 효과는 동일합니다.
PRIVATE 및 PUBLIC을 생략하는 경우 차원, 팩트 또는 메트릭은 기본적으로 공개입니다.
table_alias.semantic_expression_name차원, 팩트 또는 메트릭의 이름을 지정합니다.
USING relationship_name [ , ... ]-
메트릭 정의의 경우, :ref:`두 논리 테이블 간에 여러 관계 경로가 존재 <label-semantic_views_create_logical_tables_relations>`하면 테이블을 조인하고 메트릭을 계산하는 데 사용해야 하는 관계를 지정합니다.
:ref:`파생 메트릭<label-semantic_views_create_derived_metrics>`(다른 논리 테이블의 여러 메트릭을 결합하는 메트릭)을 정의하려면 이름에서 :samp:`{table_alias}.`를 생략합니다.
유효한 의미 체계 뷰를 정의하기 위한 규칙에 대해서는 Snowflake가 의미 체계 뷰를 검증하는 방법 섹션을 참조하세요.
NON ADDITIVE BY ( dimension [ { ASC | DESC } ] [ NULLS { FIRST | LAST } ] [ , ... ] )메트릭을 합산할 때 사용하지 않아야 하는 차원의 목록을 지정합니다.
대신, 쿼리 처리 중에 행이 비가산 차원을 기준으로 정렬되고 마지막 행의 값(값의 최신 스냅샷)이 집계되어 메트릭을 계산합니다.
{ ASC | DESC }선택적으로 비가산 차원의 값을 오름차순(최저에서 최고) 또는 내림차순(최고에서 최저)으로 정렬하여 마지막 스냅샷을 결정합니다.
기본값: ASC
NULLS { FIRST | LAST }정렬 순서(ASC 또는 DESC)에 따라, NULL이 아닌 값 앞뒤에 NULL 값이 반환되는지 여부를 선택적으로 지정합니다. 정렬 순서에 따라 마지막 스냅샷이 결정됩니다.
기본값: 정렬 순서(ASC 또는 DESC)에 따라 다르며, :ref:`ORDER BY 설명서의 사용법 노트 <label-order_by_nulls>`를 참조하세요.
NON ADDITIVE BY 절을 지정하면 메트릭이 반가산 메트릭이 됩니다.
자세한 내용은 메트릭에 대해 비가산되어야 하는 차원 식별하기 섹션을 참조하십시오.
AS sql_expr차원, 팩트 또는 메트릭을 계산하기 위한 SQL 식을 지정합니다.
팩트, 차원 및 메트릭 정의하기 섹션을 참조하세요. 이러한 표현식에 대한 유효성 검사 규칙은 Snowflake가 의미 체계 뷰를 검증하는 방법 섹션을 참조하세요.
WITH SYNONYMS [ = ] ( 'synonym' [ , ... ] )차원, 팩트 또는 메트릭에 대한 하나 이상의 선택적 동의어를 지정합니다. 동의어는 정보 제공 목적으로만 사용된다는 점에 유의하십시오. 동의어를 사용하여 다른 차원, 팩트 또는 메트릭에서 차원, 팩트 또는 메트릭을 참조할 수 없습니다.
COMMENT = 'comment_about_dim_fact_or_metric'차원, 팩트 또는 메트릭에 대한 선택적 설명을 지정합니다.
WITH CORTEX SEARCH SERVICE search_service_name [ USING search_service_column_name ]:ref:`이 차원에 사용할 Cortex Search Service<label-semantic_views_create_cortex_search_service_dimension>`를 지정합니다.
이 매개 변수는 차원에 대해서만 지정할 수 있으며, 팩트나 메트릭에는 지정할 수 없습니다.
Cortex Search Service가 다른 데이터베이스 또는 스키마에 있는 경우 서비스 이름을 한정</sql-reference/name-resolution>`합니다(예: ``my_db.my_schema.my_service`).
선택적 USING 절을 Cortex Search Service의 열 이름으로 설정할 수 있습니다.
윈도우 함수 메트릭에 대한 매개 변수¶
이러한 매개 변수는 윈도우 함수 메트릭을 정의하기 위한 구문 의 일부입니다.
metric이 윈도우 함수에 대한 메트릭 식을 지정합니다. 이 엔터티에서 메트릭을 정의하는 데 사용할 수 있는 메트릭 또는 유효한 메트릭 식을 지정할 수 있습니다.
PARTITION BY ...행을 파티션으로 그룹화합니다. 지정된 식 세트 또는 쿼리에 지정된 모든 차원(선택한 차원 제외)을 기준으로 분할할 수 있습니다.
PARTITION BY exprs_using_dimensions_or_metricsSQL 식을 기준으로 행을 파티션으로 그룹화합니다. SQL 식에서:
식의 모든 차원은 윈도우 함수 메트릭을 정의하는 동일한 엔터티에서 액세스할 수 있어야 합니다.
모든 메트릭은 이 메트릭이 정의되는 동일한 테이블에 속해야 합니다.
집계, 윈도우 함수 또는 하위 쿼리를 지정할 수 없습니다.
PARTITION BY EXCLUDING dimensionsdimensions로 지정된 차원을 제외하고 쿼리의 SEMANTIC_VIEW 절에 지정된 모든 차원을 기준으로 행을 파티션으로 그룹화합니다.dimensions는 윈도우 함수 메트릭을 정의하는 엔터티에서 액세스할 수 있는 차원만 참조해야 합니다.예를 들어 분할에서 차원
table_1.dimension_1을 제외한다고 가정해 보겠습니다.차원
table_1.dimension_1을 지정하는 쿼리를 실행한다고 가정해 보겠습니다.쿼리에서 메트릭
table_1.metric_2는 다음과 같이 평가됩니다.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 |
테이블, 뷰 |
시맨틱 뷰 정의에 사용되는 모든 테이블 및/또는 뷰에 필요합니다. |
스키마의 오브젝트에 대한 작업을 수행하려면 상위 데이터베이스에 대한 하나 이상의 권한과 상위 스키마에 대한 하나 이상의 권한이 필요합니다.
지정된 권한 세트로 사용자 지정 역할을 만드는 방법에 대한 지침은 사용자 지정 역할 만들기 섹션을 참조하십시오.
보안 오브젝트 에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여에 대한 일반적인 정보는 액세스 제어의 개요 섹션을 참조하십시오.
사용법 노트¶
의미 체계 뷰는 유효해야 하며 Snowflake가 의미 체계 뷰를 검증하는 방법 에 설명된 규칙을 따라야 합니다.
메타데이터 관련:
주의
고객은 Snowflake 서비스를 사용할 때 개인 데이터(사용자 오브젝트 제외), 민감한 데이터, 수출 통제 대상 데이터 또는 기타 규제 데이터가 메타데이터로 입력되지 않도록 해야 합니다. 자세한 내용은 Snowflake의 메타데이터 필드 섹션을 참조하십시오.
CREATE OR REPLACE <오브젝트> 문은 원자성입니다. 즉, 오브젝트가 바뀔 때 단일 트랜잭션으로 이전 오브젝트가 삭제되고 새 오브젝트가 생성됩니다.
예¶
CREATE SEMANTIC VIEW 명령을 사용하여 의미 체계 뷰 생성하기 섹션을 참조하십시오.
