CREATE SEMANTIC VIEW

Cria uma nova visualização semântica no esquema atual/especificado.

Consulte também:

DESCRIBE SEMANTIC VIEW , DROP SEMANTIC VIEW , SHOW SEMANTIC VIEWS

Sintaxe

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

onde:

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 ::=
  <table_alias>.<dim_fact_or_metric> AS <sql_expr>
  [ WITH SYNONYMS [ = ] ( '<synonym>' [ , ... ] ) ]
  [ COMMENT = '<comment_about_dim_fact_or_metric>' ]
Copy

Nota

A ordem das cláusulas é importante. Por exemplo, você deve especificar a cláusula FACTS antes da cláusula DIMENSIONS.

Você pode fazer referência a expressões semânticas que são definidas em cláusulas posteriores. Por exemplo, mesmo que fact_2 seja definido após fact_1, você ainda pode usar fact_2 na definição de fact_1.

Parâmetros obrigatórios

name

Especifica o nome da exibição semântica; o nome deve ser exclusivo para o esquema no qual a tabela é criada.

Além disso, o identificador deve começar com um caractere alfabético e não pode conter espaços ou caracteres especiais, a menos que toda a cadeia de caracteres do identificador esteja entre aspas duplas (por exemplo, "My object"). Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.

Para obter mais informações, consulte Requisitos para identificadores.

Parâmetros opcionais

COMMENT = 'comment_about_semantic_view'

Especifica um comentário sobre a exibição semântica.

COPY GRANTS

Quando você especifica OR REPLACE para substituir uma exibição semântica existente por uma nova exibição semântica, pode definir esse parâmetro para copiar quaisquer privilégios concedidos na exibição semântica existente para a nova exibição semântica.

O comando copia todas as concessões de privilégio, exceto OWNERSHIP, da exibição semântica existente para a nova exibição semântica. A função que executa a instrução CREATE SEMANTIC VIEW é proprietária da exibição.

A nova exibição semântica não herda nenhuma concessão futura definida para o tipo de objeto no esquema.

A operação de cópia de concessões ocorre atomicamente com a instrução CREATE SEMANTIC VIEW (em outras palavras, dentro da mesma transação).

Se você omitir COPY GRANTS, a nova exibição semântica não herdará nenhum privilégio de acesso explícito concedido na exibição semântica existente, mas herdará quaisquer concessões futuras definidas para o tipo de objeto no esquema.

Parâmetros para tabelas lógicas (logicalTable)

table_alias AS

Especifica um alias opcional para a tabela lógica.

  • Se você especificar um alias, deverá usá-lo ao se referir à tabela lógica em relações, fatos, dimensões e métricas.

  • Se você não especificar um alias, usará o nome da tabela lógica não qualificado para se referir à tabela.

table_name

Especifica o nome da tabela lógica.

PRIMARY KEY ( primary_key_column_name [ , ... ] )

Especifica os nomes de uma ou mais colunas na tabela lógica que servem como chave primária da tabela.

UNIQUE ( unique_column_name [ , ... ] )

Especifica o nome de uma coluna que contém um valor exclusivo ou os nomes de colunas que contêm combinações exclusivas de valores.

Por exemplo, se a coluna service_id contiver valores exclusivos, especifique:

TABLES(
  ...
  product_table UNIQUE (service_id)
Copy

Se a combinação de valores nas colunas product_area_id e product_id for exclusiva, especifique:

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

Você pode identificar várias colunas e várias combinações de colunas como exclusivas em uma determinada tabela lógica:

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

Nota

Se você já identificou uma coluna como uma coluna de chave primária (usando PRIMARY KEY), não adicione a cláusula UNIQUE para essa coluna.

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

Especifica um ou mais sinônimos para a tabela lógica. Ao contrário dos aliases, os sinônimos são usados apenas para fins informativos. Você não usa sinônimos para se referir à tabela lógica em relações, dimensões, métricas e fatos.

COMMENT = 'comment_about_table'

Especifica um comentário sobre a tabela lógica.

Parâmetros para relações (relationshipDef)

relationship_identifier AS

Especifica um identificador opcional para a relação.

table_alias ( column_name [ , ... ] )

Especifica uma das tabelas lógicas e uma ou mais de suas colunas que se referem a colunas em outra tabela lógica.

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

Especifica a outra tabela lógica e uma ou mais de suas colunas que são referenciadas pela primeira tabela lógica.

As colunas devem ser identificadas como PRIMARY KEY ou UNIQUE na definição da tabela lógica.

Parâmetros para fatos, dimensões e métricas (semanticExpression)

Em uma exibição semântica, você deve definir pelo menos uma dimensão ou métrica, o que significa que deve especificar pelo menos uma cláusula DIMENSIONS ou METRICS.

Use os seguintes parâmetros para definir o fato, a dimensão ou a métrica:

table_alias.semantic_expression_name AS sql_expr

Especifica um nome para uma dimensão, fato ou métrica e a expressão SQL para calcular essa dimensão, fato ou métrica.

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

Especifica um ou mais sinônimos opcionais para a dimensão, o fato ou a métrica. Observe que os sinônimos são usados apenas para fins informativos. Não é possível usar um sinônimo para se referir a uma dimensão, fato ou métrica em outra dimensão, fato ou métrica.

COMMENT = 'comment_about_dim_fact_or_metric'

Especifica um comentário opcional sobre a dimensão, o fato ou a métrica.

Requisitos de controle de acesso

A função usada para executar essa operação deve ter, no mínimo, os seguintes privilégios:

Privilégio

Objeto

Notas

CREATE SEMANTIC VIEW

Esquema

Necessário para criar uma nova exibição semântica.

SELECT

Tabela, exibição

Necessário em todas as tabelas e/ou exibições usadas na definição da exibição semântica.

O privilégio USAGE no banco de dados e no esquema pai é necessário para executar operações em qualquer objeto de um esquema.

Para instruções sobre como criar uma função personalizada com um conjunto específico de privilégios, consulte Criação de funções personalizadas.

Para informações gerais sobre concessões de funções e privilégios para executar ações de SQL em objetos protegíveis, consulte Visão geral do controle de acesso.

Notas de uso

  • Em relação aos metadados:

    Atenção

    Os clientes devem garantir que nenhum dado pessoal (exceto para um objeto do usuário), dados sensíveis, dados controlados por exportação ou outros dados regulamentados sejam inseridos como metadados ao usar o serviço Snowflake. Para obter mais informações, consulte Campos de metadados no Snowflake.

  • Instruções CREATE OR REPLACE <object> são atômicas. Ou seja, quando um objeto é substituído, o objeto antigo é excluído e o novo objeto é criado em uma única transação.

Exemplos

Consulte Criação de uma exibição semântica.