Pular para o conteúdo principal

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áusulaUSING : 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.

nota

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)

nota

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.

nota

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:

  1. Crie uma métrica “ view”.
  2. Adicione uma junção de primeiro nível (esquema em estrela).
  3. junte-se a outras tabelas de dimensões.
  4. 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