Utilize a função "unir" na visualização de métricas.
A visualização de métricas de junção suporta tanto a junção direta de uma tabela de fatos para tabelas de dimensões (esquema em estrela) quanto a junção transversal da tabela de fatos para tabelas de dimensões e, em seguida, para tabelas de subdimensões, permitindo a junção multi-hop entre tabelas de dimensões normalizadas (esquemas em floco de neve). Esta página explica como definir a junção na definição YAML de uma métrica view.
Esquemas de estrelas do modelo
Em um esquema em estrela, a tabela de atributos ( source
) é a tabela de fatos e se une a uma ou mais tabelas de dimensões usando uma tabela de dimensões ( LEFT OUTER JOIN
). A visualização métricas join as tabelas de fatos e dimensões necessárias para a consulta específica, com base nas dimensões e medidas selecionadas.
join Especifique colunas de métricas em uma métricas view utilizando uma cláusula ON
ou uma cláusula USING
.
ON
cláusula: Utiliza uma expressão booleana para definir a condição de exclusão ( join ).- Cláusula
USING
: Lista as colunas com o mesmo nome na tabela principal e na tabela unida. Para a junção de primeiro nível, o pai é a fonte métricas view. Para junções aninhadas em um esquema snowflake, o pai é o join imediatamente acima.
O modelo de entidade ( join ) deve seguir uma relação muitos-para-um. Em casos de muitos para muitos, a primeira linha correspondente da tabela de dimensões unida é selecionada.
Os analisadores YAML 1.1 (como PyYAML) podem interpretar incorretamente certas chaves sem aspas, como on
, off
, yes
, no
ou NO
, como valores booleanos. Isso pode causar erros de " join ". Para evitar esse problema, coloque 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)
O namespace source
faz referência às colunas da fonte métricas view, enquanto o join name
refere-se às colunas da tabela unida. Por exemplo, na condição join source.dimension_table_1_fk = dimension_table_1.pk
, source
refere-se à tabela de origem da métrica view(fact_table
), e dimension_table_1
refere-se à tabela unida. A referência padrão para a tabela join se nenhum prefixo for fornecido em uma cláusula on
.
Modelo de esquema de floco de neve
Um esquema de floco de neve estende um esquema em estrela normalizando tabelas de dimensões e conectando-as às subdimensões. Isso cria uma estrutura de e join es multinível que pode corresponder à profundidade do seu modelo de dados.
Snowflake Para participar, é necessário ter o Databricks Runtime, compute 17.1 ou superior.
Para definir um objeto de modelo ( join ) que modele um esquema em floco de neve:
- Crie uma métrica “ view”.
- Adicione uma junção de primeiro nível (esquema em estrela).
- junte-se a outras tabelas de dimensões.
- Exponha dimensões aninhadas adicionando dimensões em seu arquivo de configuração de dimensões ( view).
O exemplo a seguir utiliza o TPCH ( dataset ) para ilustrar como modelar um esquema em floco de neve. O TPCH ( dataset ) pode ser acessado no catálogo samples
em Databricks workspace.
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