Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
As junções em exibições métricas suportam junções diretas de uma tabela de fatos para tabelas de dimensão (esquema em estrela) e junções que atravessam da tabela de fatos para tabelas de dimensão e, em seguida, para tabelas de subdimensão, permitindo junções multi-hop em tabelas de dimensão normalizadas (esquemas de floco de neve). Esta página explica como definir junções na definição YAML de uma visualização métrica.
Observação
As tabelas unidas não podem incluir MAP colunas de texto. Para saber como descompactar valores de colunas de MAP tipo, consulte Explodir elementos aninhados de um mapa ou matriz.
Esquemas de estrela modelo
Em um esquema em estrela, o source é a tabela de fatos e se une a uma ou mais tabelas de dimensão usando um LEFT OUTER JOINarquivo . As visualizações métricas 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 métrica usando uma ON cláusula ou uma USING cláusula.
-
ONCláusula: Usa uma expressão booleana para definir a condição de junção. -
USINGCláusula: Lista colunas com o mesmo nome na tabela pai e na tabela associada. Para junções de primeiro nível, o pai é a origem da visualização métrica. Para junções aninhadas em um esquema de floco de neve, o pai é a junção a montante imediata.
A união deve seguir uma relação muitos-para-um. Em casos de muitos-para-muitos, a primeira linha correspondente da tabela de dimensão unida é selecionada.
Observação
Os analisadores YAML 1.1 (como o PyYAML) podem interpretar incorretamente certas chaves não citadas, como on, off, yes, no, ou , como NOvalores booleanos. Isso pode causar erros de junção. Para evitar esse problema, envolva 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 métrica, enquanto a junção name se refere a colunas da tabela associada. Por exemplo, na condição source.dimension_table_1_fk = dimension_table_1.pkde junção , source refere-se à tabela de origem da exibição métrica (fact_table) e dimension_table_1 refere-se à tabela associada. A referência padrão recai sobre a tabela de junção caso não seja fornecido um prefixo numa cláusula on.
Modelo de esquema de floco de neve
Um esquema de floco de neve estende um esquema de estrela normalizando tabelas de dimensões 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 juntas do Snowflake exigem o Databricks Runtime compute 17.1 e superior.
Para definir uma junção que modela um esquema de floco de neve:
- Crie uma vista métrica.
- Adicione junções de primeiro nível (esquema em 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 de floco de neve. O conjunto de dados TPCH pode ser acessado samples no catálogo em seu espaço de trabalho do 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