Udostępnij przez


Używanie sprzężeń w widokach metryk

Sprzężenia w widokach metryk obsługują zarówno bezpośrednie sprzężenia z tabeli faktów do tabel wymiarów (schemat gwiazdy) i sprzężenia przechodzące z tabeli faktów do tabel wymiarów, a następnie do tabel wymiarów podrzędnych, umożliwiając sprzężenia wieloskokowe w znormalizowanych tabelach wymiarów (schematy płatków śniegu). Na tej stronie wyjaśniono, jak zdefiniować sprzężenia w definicji YAML widoku metryki.

Uwaga / Notatka

Tabele sprzężone nie mogą zawierać MAP kolumn typów. Aby dowiedzieć się, jak rozpakować wartości z MAP kolumn typu, zobacz Eksploduj zagnieżdżone elementy z mapy lub tablicy.

Modele schematów gwiazdy

W schemacie source gwiazdy jest tabelą faktów i łączy się z co najmniej jedną tabelą wymiarów przy użyciu elementu LEFT OUTER JOIN. Widoki metryk łączą tabele faktów i wymiarów potrzebne dla określonego zapytania na podstawie wybranych wymiarów i miar.

Określ kolumny sprzężenia w widoku metryki przy użyciu ON klauzuli lub klauzuli USING .

  • ON klauzula: używa wyrażenia logicznego do zdefiniowania warunku sprzężenia.
  • USING klauzula: Wyświetla kolumny o tej samej nazwie zarówno w tabeli nadrzędnej, jak i tabeli sprzężonej. W przypadku sprzężeń pierwszego poziomu element nadrzędny jest źródłem widoku metryki. W przypadku sprzężeń zagnieżdżonych w schemacie płatka śniegu element nadrzędny jest bezpośrednim sprzężenia nadrzędnego.

Połączenie powinno być zgodne z relacją wiele do jednego. W przypadku wielu do wielu wybierany jest pierwszy pasujący wiersz ze sprzężonej tabeli wymiarów.

Uwaga / Notatka

Analizatory YAML 1.1 (takie jak PyYAML) mogą błędnie interpretować niektóre niekwestionowane klucze, takie jak on, , offyes, nolub NO, jako wartości logiczne. Może to spowodować błędy sprzężenia. Aby uniknąć tego problemu, opakuj te klucze w cudzysłowie. Przykład: '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)

Uwaga / Notatka

Przestrzeń nazw source odnosi się do kolumn ze źródła widoku metryk, podczas gdy sprzężenie name odnosi się do kolumn z połączonej tabeli. Na przykład w warunku sprzężenia source.dimension_table_1_fk = dimension_table_1.pk, source odnosi się do tabeli źródłowej widoku metryk (fact_table), a dimension_table_1 odnosi się do tabeli sprzężonej. Odwołanie jest domyślnie ustawione na tabelę sprzężeń, gdy w klauzuli on nie podano żadnego prefiksu.

Schemat płatka śniegu modelu

Schemat płatka śniegu rozszerza schemat gwiazdy, normalizując tabele wymiarów i łącząc je z podwymiarowymi. Spowoduje to utworzenie wielowymiarowej struktury sprzężenia, która może być zgodna z głębią modelu danych.

Uwaga / Notatka

Sprzężenia snowflake wymagają środowiska Databricks Runtime compute 17.1 lub nowszego.

Aby zdefiniować sprzężenie, które modeluje schemat płatka śniegu:

  1. Utwórz widok metryki.
  2. Dodaj sprzężenia pierwszego poziomu (schemat gwiazdy).
  3. Łączenie z innymi tabelami wymiarów.
  4. Uwidocznij zagnieżdżone wymiary, dodając wymiary w widoku.

W poniższym przykładzie użyto zestawu danych TPCH, aby zilustrować sposób modelowania schematu płatka śniegu. Dostęp do zestawu danych TPCH można uzyskać w samples katalogu w obszarze roboczym usługi 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