Zobrazení metrik modelu

Zobrazení metrik vytvářejí sémantickou vrstvu pro vaše data, transformují tabulky a zobrazení na standardizované obchodní metriky. Definují, co se má měřit, jak ho agregovat a jak ho segmentovat. V důsledku toho každý uživatel v organizaci hlásí stejnou hodnotu stejného klíčového ukazatele výkonu, což eliminuje nekonzistentní generování sestav a umožňuje flexibilní analýzu napříč všemi poli.

Základní komponenty, které definujete, jsou zdroje, spojení, filtry, pole a míry.

Úplný příklad s spojeními, poli, mírami a metadaty agenta najdete v kurzu: Vytvoření zobrazení metriky s spojeními a modelováním dat.

Základní komponenty

Zobrazení metriky se skládá z následujících prvků:

Součást Description Example
Zdroj Základní tabulka, zobrazení nebo dotaz SQL obsahující data. samples.tpch.orders
se připojuje k Relace mezi tabulkami, zobrazeními a zobrazeními metrik za účelem obohacení dat Spojení orders tabulky s customers tabulkou na customer_key
Filtry Podmínky použitá na zdrojová data k definování rozsahu.
  • status = 'completed'
  • order_date > '2024-01-01'
Fields Sloupce používané k seskupení, filtrování a agregaci metrik Zahrnuje sloupce kategorií a neagregované číselné sloupce. Označuje se také jako dimenze. Kategorie produktu, Měsíc objednávky, Jednotková cena
Opatření Agregace sloupců, které vytvářejí metriky COUNT(o_orderkey) jako počet objednávek, SUM(o_totalprice) jako celkový příjem

Definování zdroje

Jako zdroj zobrazení metrik můžete použít prostředek podobný tabulce nebo dotaz SQL. Musíte mít minimálně SELECT oprávnění k libovolnému odkazovanému prostředku.

Prostředek podobný tabulce je jakýkoli objekt katalogu Unity, který zveřejňuje tabulkové schéma a podporuje SELECT dotazy, včetně tabulek, zobrazení, materializovaných zobrazení, streamovaných tabulek, cizích tabulek, systémových tabulek a zobrazení metrik.

Použití prostředku podobného tabulce jako zdroje

Pokud chcete jako zdroj použít prostředek podobný tabulce, zadejte plně kvalifikovaný název. Například: samples.tpch.orders.

Použití zobrazení metriky jako zdroje

Jako zdroj nového zobrazení metriky můžete použít existující zobrazení metrik:

version: 1.1

source: views.examples.source_metric_view

fields:
  - name: Order month
    expr: '`Order Month`'

measures:
  - name: Latest order month
    expr: MAX(`Order month`)
  - name: Latest order year
    expr: "DATE_TRUNC('year', MEASURE(`Latest order month`))"

Při použití zobrazení metriky jako zdroje platí stejná pravidla kompozability pro odkazování na pole a míry. Viz Možnosti kompilace.

Použití dotazu SQL jako zdroje

Pokud chcete použít dotaz SQL, napište text dotazu přímo do YAML:

version: 1.1

source: SELECT * FROM samples.tpch.orders o LEFT JOIN samples.tpch.customer c ON o.o_custkey
  = c.c_custkey

fields:
  - name: Order key
    expr: o_orderkey

measures:
  - name: Order Count
    expr: COUNT(o_orderkey)

Note

Při použití dotazu SQL jako zdroje s JOIN klauzulí nastavte omezení primárního a cizího klíče u podkladových tabulek a použijte RELY možnost pro optimální výkon dotazů. Viz Deklarování primárního klíče, cizího klíče a jedinečných omezení aoptimalizace dotazů pomocí primárního klíče a jedinečných omezení.

Pole

Pole, označovaná také jako dimenze, jsou sloupce zobrazení metrik, které můžete při zadávání dotazu použít v klauzulích SELECT, WHERE a GROUP BY. Pole může být sloupec kategorií, například oblast nebo stav, nebo neagregovaný číselný sloupec, jako je cena nebo množství, které můžete agregovat v době dotazu. Každý výraz pole musí vrátit skalární hodnotu. Může odkazovat na sloupce ze zdrojových dat nebo polí definovaných dříve v zobrazení metriky. Každé pole se skládá ze dvou součástí:

  • name: Alias sloupce
  • expr: Výraz SQL, který odkazuje na zdrojová data nebo dříve definovaná pole v zobrazení metriky

Warning

Pole zobrazení metrik podobná řetězcům jsou vždy STRING, i když má zdrojový sloupec typ CHAR nebo VARCHAR. Vzhledem ke CHAR(n) ztrátě odsazení mezer může porovnání vrátit různé výsledky. Například column = 'COLLEGE' odpovídá hodnotě CHAR(10) ve zdrojové tabulce (která je doplněna mezerami), ale ne v poli zobrazení metrik.

Opatření

Míry jsou výrazy, které vytvářejí výsledky bez předem určené úrovně agregace. Musí být vyjádřeny pomocí agregačních funkcí. K odkazování na míru v dotazu použijte MEASURE funkci. Míry můžou odkazovat na základní sloupce ve zdrojových datech, dříve definovaných polích nebo dříve definovaných mírách. Každá míra se skládá z následujících součástí:

  • name: Alias míry
  • expr: Agregovaný výraz SQL, který může obsahovat agregační funkce SQL

Následující příklad ukazuje běžné vzory měr pro analýzu dat o objednávkách a výnosech. Tyto příklady používají tabulku objednávek TPC-H, která obsahuje údaje o prodejních transakcích, včetně cen objednávek (o_totalprice), identifikátorů zákazníků (o_custkey), klíčů objednávek (o_orderkey), dat objednávek (o_orderdate) a úrovní priority (o_orderpriority):

measures:
  # Simple count measure
  - name: Order Count
    expr: COUNT(1)

  # Sum aggregation measure
  - name: Total Revenue
    expr: SUM(o_totalprice)

  # Distinct count measure
  - name: Unique Customers
    expr: COUNT(DISTINCT o_custkey)

  # Calculated measure combining multiple aggregations
  - name: Average Order Value
    expr: SUM(o_totalprice) / COUNT(DISTINCT o_orderkey)

  # Filtered measure with WHERE condition
  - name: High Priority Order Revenue
    expr: SUM(o_totalprice) FILTER (WHERE o_orderpriority = '1-URGENT')

  # Measure using a field
  - name: Average Revenue per Month
    expr: SUM(o_totalprice) / COUNT(DISTINCT DATE_TRUNC('MONTH', o_orderdate))

Seznam agregačních funkcí najdete v části Agregační funkce .

Použití filtrů

Filtr se vztahuje na všechny dotazy, které odkazují na zobrazení metriky. Pokud chcete definovat filtr v uživatelském rozhraní, přečtěte si krok 3: Definování filtru.

Pokud chcete definovat filtr v definici YAML, napište logický výraz. Následující příklad ukazuje běžné vzory filtru:

# Single condition
filter: o_orderdate > '2024-01-01'

# Multiple conditions
filter: o_orderdate > '2024-01-01' AND o_orderstatus = 'F'

# IN clause
filter: o_orderstatus IN ('F', 'P') AND o_orderdate >= '2024-01-01'

Práce s spojeními

Zobrazení metrik podporují spojení pro obohacení zdrojových dat o atributy ze souvisejících tabulek. Můžete modelovat hvězdicová schémata (tabulka faktů spojená s tabulkami dimenzí), schémata typu vločka (víceúrovňová spojení dimenzí) a vztahy jedna ku mnoha (rozšíření tabulky faktů z dimenzního zdroje). Podrobnosti o typech spojení, kardinalitě, vzorech schématu a omezeních najdete v tématu Spojení v zobrazeních metrik.

Pokud chcete definovat spojení v uživatelském rozhraní, přečtěte si krok 2: Přidání spojení. Pokud chcete definovat spojení v definici YAML, použijte vzory v následujících částech.

Note

Spojené tabulky nemohou obsahovat sloupce typu MAP. Pokud chcete rozbalit hodnoty ze MAP sloupců typu, přečtěte si článek Rozložené vnořené prvky z mapy nebo pole.

Modely hvězdicových schémat

Ve hvězdicovém schématu source je tabulka faktů a spojuje se s jednou nebo více tabulkami dimenzí pomocí .LEFT OUTER JOIN Zobrazení metrik spojují tabulky faktů a dimenzí potřebných pro konkrétní dotaz na základě vybraných polí a měr.

Zadejte sloupce pro spojení pomocí klauzule on (logický výraz) nebo klauzule using (shodné názvy sloupců). Spojení musí následovat po relaci M:1. V případě vztahu mnoho k mnoha mechanismus vybere první odpovídající řádek z připojené tabulky dimenzí.

Následující příklad připojí orders (tabulku faktů) k customer (tabulce dimenzí) a zpřístupní atributy zákazníka jako pole. Nastavení rely.at_most_one_match: true deklaruje, že spojení je M:1 (každá objednávka má přesně jednoho zákazníka), což modulu umožňuje optimalizovat dotazy, které filtrují pole z připojené tabulky.

Warning

Nastavit at_most_one_match: true pouze v případech, kdy je relace M:1. Tato vlastnost není ověřena za běhu. Pokud spojení vytvoří rozvětvení, metriky vrátí nesprávné výsledky.

Vizte optimalizaci spojení pomocí rely.

version: 1.1
source: samples.tpch.orders

joins:
  - name: customer
    source: samples.tpch.customer
    on: source.o_custkey = customer.c_custkey

fields:
  - name: Customer name
    expr: customer.c_name

measures:
  - name: Total revenue
    expr: SUM(o_totalprice)

Syntaxe a formátování YAML

Definice zobrazení metrik se řídí standardní syntaxí notace YAML. Informace o požadované syntaxi a formátování najdete v referenční dokumentaci syntaxe YAML pro zobrazení metrik .

Osvědčené postupy

Při modelování zobrazení metrik použijte následující pokyny:

  • Model atomických měr: Začněte definováním nejjednodušších měr (například SUM(revenue), COUNT(DISTINCT customer_id)). Vytváření složitých měr pomocí kompozability
  • Standardizace hodnot polí: Pomocí transformací (například CASE příkazů) můžete převést kódy databáze na jasné obchodní názvy (například převést stav objednávky "O" na "Otevřít" a "F" na "Splněno").
  • Definujte obor s filtry: Pokud by zobrazení metriky mělo obsahovat jenom dokončené objednávky, definujte tento filtr v zobrazení metriky, aby uživatelé nemohli omylem zahrnout neúplná data.
  • Používejte jasné pojmenování: Názvy metrik by měly být rozpoznatelné pro firemní uživatele (například "Hodnota životnosti zákazníka" místo cltv_agg_measure).
  • Samostatná časová pole: Zahrňte podrobná časová pole (například Datum objednávky) a zkrácená časová pole (například "Měsíc objednávky" nebo "Týden objednávky") a povolte analýzu podrobností i trendu.

Další zdroje informací