Especificação YAML para exibições semânticas¶
Exibições semânticas são objetos no nível do esquema que definem conceitos comerciais com base em seus dados, facilitando a consulta e análise de dados pelos usuários com o uso de uma terminologia de negócios. Você pode usar a especificação YAML para criar uma exibição semântica em Cortex Analyst ou usar o procedimento armazenado SYSTEM$CREATE_SEMANTIC_VIEW_FROM_YAML para criar uma exibição semântica de uma especificação YAML.
Visão geral¶
Exibições semânticas são a abordagem recomendada para definir a semântica de negócios no Snowflake. Elas são objetos de esquema que se integram ao sistema de privilégios, aos mecanismos de compartilhamento e ao catálogo de metadados do Snowflake.
Nota
Os arquivos YAML do modelo semântico legado (armazenados em estágios) ainda podem ser usados com Cortex Analyst para compatibilidade com versões anteriores, mas recomendamos o uso de exibições semânticas para novas implementações.
Os benefícios das exibições semânticas em comparação aos modelos semânticos legados são:
Integração nativa com o Snowflake: objetos em nível de esquema com RBAC completo, compartilhamento e suporte de catálogo
**Recursos avançados*: suporte para métricas derivadas e modificadores de acesso (público/privado)
Melhor governança: integração com os sistemas de privilégio e compartilhamento do Snowflake
Gerenciamento simplificado: não é necessário gerenciar arquivos YAML em estágios
Formato YAML¶
Exibições semânticas podem exigir uma especificação YAML para definir seu comportamento, permitindo definições de texto simples legíveis.
A sintaxe geral de uma especificação YAML de exibição semântica é:
Importante
Exibições semânticas não exigem os campos join_type ou relationship_type que eram usados em modelos semânticos legados. O tipo de relacionamento é inferido automaticamente a partir dos dados.
Principais conceitos¶
Tabelas¶
As tabelas lógicas representam entidades comerciais (como clientes, pedidos ou produtos) e são mapeadas para tabelas de banco de dados físicas. Cada tabela lógica pode definir:
Tabela base: o nome totalmente qualificado da tabela física
Chave primária: colunas que identificam linhas de forma única
Sinônimos: nomes alternativos para a tabela
Descrição: explicação simples sobre o que a tabela representa
Dimensões¶
As dimensões representam atributos categóricos que fornecem contexto para análise. Elas respondem às perguntas «quem», «o que», «onde» e «quando». As dimensões podem ser:
Dimensões regulares: valores de texto, numéricos ou de outras categorias
Dimensões temporais: colunas de data ou carimbo de data/hora com tratamento especial baseado no horário
Propriedades de dimensões¶
expr: expressão SQL para calcular o valor da dimensãosynonyms: termos alternativos que os usuários podem utilizarunique: se os valores são únicos entre as linhasis_enum: se a dimensão tem um conjunto fixo de valorescortex_search_service: Cortex Search Service opcional para pesquisa semântica
Propriedades opcionais para dimensões físicas¶
Esses campos são opcionais, mas recomendados para produzir resultados de maior qualidade com base em uma pesquisa de exibição semântica.
synonymsUma lista de outros termos/frases usados para se referir a esta dimensão. Deve ser único entre todos os sinônimos neste modelo semântico.
descriptionUma descrição curta da dimensão. Inclua informações contextuais úteis, como os dados que esta dimensão representa.
uniqueUm valor booliano que indica que esta dimensão tem valores únicos.
sample_valuesValores de amostra desta coluna, se houver. Adicione qualquer valor que provavelmente será mencionado nas perguntas do usuário.
is_enumUm valor booliano. Se for
True, os valores no camposample_valuesserão considerados como a lista completa de valores possíveis, e o modelo só escolherá entre esses valores ao filtrar essa coluna.cortex_search_serviceEspecifica o Cortex Search Service a ser usado para esta dimensão. Ela possui os seguintes campos:
service: o nome do serviço Cortex Search Service.literal_column: (opcional) a coluna no Cortex Search Service com os valores literais.database: (opcional) o banco de dados em que o Cortex Search Service está localizado. O padrão é o banco de dados debase_table.schema: (opcional) o esquema em que o Cortex Search Service está localizado. O padrão é o esquema debase_table.
cortex_search_servicesubstitui o campocortex_search_service_name, que só podia especificar o nome.cortex_search_service_namefoi descontinuado.
Propriedades opcionais para dimensões temporais¶
Esses campos são opcionais, mas recomendados para produzir resultados de maior qualidade com base em uma pesquisa de exibição semântica.
synonymsUma lista de outros termos/frases usados para se referir a esta dimensão de tempo. Deve ser único entre todos os sinônimos neste modelo semântico.
descriptionUma descrição curta da dimensão. Inclua informações contextuais úteis, como o fuso horário que esta dimensão usa como ponto de referência.
unique:Um valor booliano que indica que esta coluna tem valores exclusivos.
sample_values:Valores de amostra desta coluna, se houver. Adicione quaisquer valores que provavelmente serão referenciados nas perguntas do usuário.
Fatos¶
Os fatos são atributos quantitativos em nível de linha que representam eventos ou transações comerciais específicos. Os fatos capturam “quanto” ou “quantos” no nível mais granular, como valores de vendas individuais, quantidades compradas ou custos.
Os fatos normalmente funcionam como conceitos “auxiliares” dentro da exibição semântica para ajudar a construir dimensões e métricas.
As propriedades dos fatos são:
expr: expressão SQL para calcular o valor do fatoaccess_modifier: defina comoprivate_accesspara ocultar de consultas (útil para cálculos intermediários)data_type: o tipo de dados do fato
Métricas¶
Métricas são medidas quantificáveis de desempenho comercial calculadas por meio da agregação de fatos ou outras colunas usando funções como SUM, AVG e COUNT.
Dois tipos de métricas:
Métricas em nível de tabela: com escopo para uma tabela lógica específica, agregando dados nessa tabela
Métricas derivadas: métricas em nível de exibição que combinam métricas de várias tabelas
Propriedades das métricas¶
expr: expressão SQL com função de agregaçãoaccess_modifier: defina comoprivate_accesspara ocultar de consultas (útil para cálculos intermediários)synonyms: termos alternativos para a métrica
Propriedades opcionais das métricas¶
Se você quiser especificar as dimensões que devem ser não aditivas para a métrica, use os seguintes campos:
non_additive_dimensionsEspecifica as dimensões às quais a métrica não deve ser agregada.
tableNome da tabela lógica que contém a dimensão.
dimensionNome da dimensão.
sort_directionOrdem de classificação para a dimensão não aditiva. Especifique um dos seguintes valores:
ascending: classificar os valores de dimensão em ordem crescente.descending: classificar os valores de dimensão em ordem decrescente.
Padrão:
ascendingnull_orderEspecifica se NULLs são classificados antes ou depois dos valores não NULL. Especifique um dos seguintes valores:
first: NULLs são classificados antes dos valores não NULL.last: NULLs são classificados após os valores não NULL.
Padrão: sem valor. Depende do valor no campo
sort_direction(ascendingoudescending). Consulte as notas de uso na documentação de ORDER BY.
Nota
Como as linhas são classificadas pelas dimensões não aditivas, a ordem na qual você especifica as dimensões é importante. Isso é semelhante à ordem na qual você especifica as colunas na cláusula ORDER BY.
O exemplo a seguir especifica que a métrica
m_account_balancenão pode ser agregada pelas dimensõesyear_dimemonth_dim:Se houver vários caminhos de relacionamento entre duas tabelas lógicas específicas em uma exibição semântica, use o seguinte campo para especificar o caminho de relacionamento a ser usado:
using_relationships-
Especifica o nome do relacionamento a ser usado para unir as tabelas lógicas ao calcular a métrica.
Métricas derivadas¶
Métricas derivadas são métricas em nível de exibição não vinculadas a uma tabela específica. Elas podem combinar métricas de várias tabelas ou realizar cálculos em toda a exibição.
Exemplo de uma métrica derivada:
Relações¶
As relações definem como as tabelas lógicas se unem. Cada relacionamento especifica:
left_table: a tabela que contém a chave estrangeiraright_table: a tabela sendo referenciadarelationship_columns: pares de colunas para unir, comoleft_columneright_column
O tipo de relacionamento (um para um, muitos para um) é inferido automaticamente a partir dos dados e definições da chave primária.
Nota
Ao contrário dos modelos semânticos legados, as exibições semânticas não exigem especificações join_type ou relationship_type explícitas. Elas são determinadas automaticamente.
Filtros¶
Os filtros definem condições comumente usadas que podem ser referenciadas pelo nome. Isso ajuda a garantir uma lógica de filtragem consistente nas consultas.
Exemplo:
Consultas verificadas¶
As consultas verificadas são perguntas de exemplo com suas consultas SQL correspondentes. Elas ajudam Cortex Analyst a entender como responder a perguntas semelhantes e funcionam como documentação para os usuários.
Propriedades:
question: pergunta em linguagem naturalsql: consulta SQL que responde à perguntaverified_by: pessoa opcional que verificou se a consulta está corretaverified_at: carimbo de data/hora opcional quando há verificaçãouse_as_onboarding_question: sinalizador opcional para mostrar isso como uma sugestão aos usuários
Modificadores de acesso¶
Exibições semânticas oferecem suporte a modificadores de acesso para fatos e métricas, permitindo controlar a visibilidade:
public_access(padrão): pode ser visualizado e consultado pelos usuáriosprivate_access: oculto nas consultas, usado apenas para cálculos intermediários
Exemplo:
Instruções personalizadas para o Cortex Analyst¶
Você pode usar comandos SQL para fornecer instruções personalizadas na definição da exibição semântica. Essas instruções orientam como as consultas são geradas e como as perguntas são categorizadas. Essas instruções não fazem parte da especificação YAML, mas são definidas usando o comando CREATE SEMANTIC VIEW.
Para obter mais informações, consulte Fornecendo instruções personalizadas para o Cortex Analyst.
Exemplo de exibição semântica YAML¶
Aqui está um exemplo completo de uma especificação YAML de exibição semântica:
Criação de uma exibição semântica YAML¶
Para criar uma exibição semântica a partir de uma especificação YAML, use o procedimento armazenado SYSTEM$CREATE_SEMANTIC_VIEW_FROM_YAML.
Para obter mais informações, consulte Criação de exibição semântica de uma especificação YAML.
Como obter um YAML de uma exibição semântica¶
Para exportar uma exibição semântica para o formato YAML, use a função SYSTEM$READ_YAML_FROM_SEMANTIC_VIEW.
Para obter mais informações, consulte Como obter a especificação YAML para uma exibição semântica.
Diferenças de modelos semânticos legados¶
Se você estiver migrando de arquivos do modelo semântico YAML legado para exibições semânticas, considere estas diferenças importantes:
Recurso |
Modelos semânticos legados |
Exibições semânticas |
|---|---|---|
Armazenamento |
Arquivos YAML em estágios |
Objetos em nível de esquema no banco de dados |
Privilégios |
Controle de acesso baseado em estágio |
Integração completa do Snowflake RBAC |
Compartilhamento |
Compartilhamento manual de arquivos |
Compartilhamento do Native Snowflake |
Tipos de junção |
Requer |
Inferido automaticamente |
Métricas derivadas |
Sem suporte |
Suporte total |
Modificadores de acesso |
Sem suporte |
|
Instruções personalizadas |
No arquivo YAML |
Definido pelos comandos SQL |
Ao converter de um modelo semântico legado para uma exibição semântica:
Remova
join_typeerelationship_typedas relaçõesConsidere o uso de métricas derivadas para cálculos em nível de exibição
Adicione
access_modifieraos fatos/métricas que você deseja tornar privadosMova instruções personalizadas para o comando SQL CREATE SEMANTIC VIEW
