Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As junções em exibições de métrica dão suporte a junções diretas de uma tabela de fatos a tabelas de dimensão (esquema estrela) e junções que atravessam da tabela de fatos para tabelas de dimensão e, em seguida, a tabelas de subdimensão, permitindo junções de vários saltos entre tabelas de dimensão normalizadas (esquemas floco de neve). Esta página explica como definir junções na definição YAML de uma exibição de métrica.
Observação
Tabelas unidas não podem incluir MAP colunas de tipo. Para saber como desempacotar valores de colunas de MAP tipo, consulte Explodir elementos aninhados de um mapa ou matriz.
Esquemas de estrela modelo
Em um esquema de estrela, é a source tabela de fatos e une-se a uma ou mais tabelas de dimensão usando um LEFT OUTER JOIN. As exibições de métrica unem as tabelas de fatos e dimensões necessárias para a consulta específica, com base nas dimensões e medidas selecionadas.
Especifique colunas de junção em uma exibição de métrica usando uma ON cláusula ou uma USING cláusula.
-
ONcláusula: usa uma expressão booliana para definir a condição de junção. -
USINGcláusula: lista colunas com o mesmo nome na tabela pai e na tabela unida. Para junções de primeiro nível, o pai é a origem da exibição de métrica. Para junções aninhadas em um esquema floco de neve, o pai é a junção imediata upstream.
A junção deve seguir um relacionamento de muitos para um. Em casos de muitos para muitos, a primeira linha correspondente da tabela de dimensões unida é selecionada.
Observação
Os analisadores YAML 1.1 (como PyYAML) podem interpretar incorretamente determinadas chaves não listadas, comoon, , off, yesou noNO, como valores boolianos. Isso pode causar erros de junção. Para evitar esse problema, encapsule essas chaves entre aspas. Por exemplo: 'on': source.dim_fk = dim.pk
source: catalog.schema.fact_table
joins:
# The on clause supports a boolean expression
- name: dimension_table_1
source: catalog.schema.dimension_table_1
on: source.dimension_table_1_fk = dimension_table_1.pk
# The using clause supports an array of columns
# found in both of the tables being joined.
- name: dimension_table_2
source: catalog.schema.dimension_table_2
using:
- dimension_table_2_key_a
- dimension_table_2_key_b
dimensions:
# Dimension referencing a join column from dimension_table_1 using dot notation
- name: Dimension table 1 key
expr: dimension_table_1.pk
measures:
# Measure referencing a join column from dimension_table_1
- name: Count of dimension table 1 keys
expr: COUNT(dimension_table_1.pk)
Observação
O source namespace faz referência a colunas da origem da exibição de métrica, enquanto a junção name refere-se a colunas da tabela unida. Por exemplo, na condição de junção source.dimension_table_1_fk = dimension_table_1.pk, source refere-se à tabela de origem da exibição de métrica (fact_table) e dimension_table_1 refere-se à tabela unida. A referência padrão será a tabela de junção se nenhum prefixo for fornecido em uma on cláusula.
Esquema de floco de neve modelo
Um esquema floco de neve estende um esquema de estrela normalizando tabelas de dimensão e conectando-as a subdimensões. Isso cria uma estrutura de junção de vários níveis que pode corresponder à profundidade do seu modelo de dados.
Observação
As junções do Snowflake exigem a computação do Databricks Runtime 17.1 e superior.
Para definir uma junção que modele um esquema floco de neve:
- Crie uma exibição de métrica.
- Adicione junções de primeiro nível (esquema estrela).
- Junte-se a outras tabelas de dimensão.
- Exponha dimensões aninhadas adicionando dimensões em sua exibição.
O exemplo a seguir usa o conjunto de dados TPCH para ilustrar como modelar um esquema floco de neve. O conjunto de dados TPCH pode ser acessado no catálogo em seu workspace do samples Azure Databricks.
source: samples.tpch.orders
joins:
- name: customer
source: samples.tpch.customer
on: source.o_custkey = customer.c_custkey
joins:
- name: nation
source: samples.tpch.nation
on: customer.c_nationkey = nation.n_nationkey
joins:
- name: region
source: samples.tpch.region
on: nation.n_regionkey = region.r_regionkey
dimensions:
- name: clerk
expr: o_clerk
- name: customer
expr: customer # returns the full customer row as a struct
- name: customer_name
expr: customer.c_name
- name: nation
expr: customer.nation
- name: nation_name
expr: customer.nation.n_name