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 ]
onde:
logicalTable ::=
[ <table_alias> AS ] <table_name>
[ PRIMARY KEY ( <primary_key_column_name> [ , ... ] ) ]
[
UNIQUE ( <unique_column_name> [ , ... ] )
[ ... ]
]
[ WITH SYNONYMS [ = ] ( '<synonym>' [ , ... ] ) ]
[ COMMENT = '<comment_about_table>' ]
relationshipDef ::=
[ <relationship_identifier> AS ]
<table_alias> ( <column_name> [ , ... ] )
REFERENCES
<ref_table_alias> [ ( <ref_column_name> [ , ... ] ) ]
semanticExpression ::=
<table_alias>.<dim_fact_or_metric> AS <sql_expr>
[ WITH SYNONYMS [ = ] ( '<synonym>' [ , ... ] ) ]
[ COMMENT = '<comment_about_dim_fact_or_metric>' ]
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)
Se a combinação de valores nas colunas
product_area_id
eproduct_id
for exclusiva, especifique:TABLES( ... product_table UNIQUE (product_area_id, product_id) ...
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) ...
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.