Úvod

Dokončeno

K přidání počítané tabulky do modelu můžete použít vzorec DAX (Data Analysis Expressions). Vzorec může duplikovat nebo transformovat data stávajícího modelu tak, aby vznikla nová tabulka.

Poznámka

Počítaná tabulka se nemůže připojit k externím datům. K tomu musíte použít Power Query.

Vzorec počítané tabulky musí vrátit objekt tabulky. Nejjednodušší vzorec duplikuje stávající tabulku modelu.

Počítané tabulky ale také něco stojí, protože zvětšují velikost modelu uloženého v úložišti a můžou prodlužovat dobu aktualizace dat. Je to způsobené tím, že počítané tabulky se přepočítávají, pokud vzorec obsahuje závislosti na aktualizované tabulky.

Duplikace tabulky

V následující části jsou popsané nejčastější problémy při návrhu, které můžete vyřešit tím, že vytvoříte počítanou tabulku. Nejprve byste si měli stáhnout soubor Adventure Works DW 2020 M03.pbix, otevřít ho a přepnout na diagram modelu.

V diagramu modelu si všimněte, že tabulka Sales má tři relace s tabulkou Date .

Obrázek znázorňující dvě tabulky: Sales (Prodej) a Date (Datum). Mezi tabulkami existují tři relace. Ale jen jedna relace je aktivní.

V diagram modelu jsou znázorněné všechny tři, protože v tabulce Sales (Prodej) jsou uložená data o prodeji podle data objednávky, data expedice a data splatnosti. Když se podíváte na sloupce OrderDateKey (KlíčDataObjednávky), ShipDateKey (KlíčDataExpedice) a DueDateKey (KlíčDataSplatnosti), vidíte, že relace je znázorněná plnou čarou odpovídající aktivní relaci. Další relace, které jsou znázorněné přerušovanou čarou, jsou neaktivní relace.

Poznámka

Mezi libovolnými dvěma tabulkami modelu může existovat jenom jedna aktivní relace.

Když v diagramu najedete kurzorem na aktivní relaci, zvýrazní se související sloupce. Tímto způsobem získáte z diagramu modelu informace o souvisejících sloupcích. V tomto případě aktivní relace filtruje sloupec OrderDateKey v tabulce Sales . Filtry použité v tabulce Date se tedy rozšíří do tabulky Sales za účelem filtrování podle data objednávky; nikdy nebudou filtrovat podle data expedice nebo termínu splnění.

Dalším krokem je odstranění dvou neaktivních relací mezi tabulkou Date a tabulkou Sales . Pokud chcete relaci odstranit, klikněte na ni pravým tlačítkem a v místní nabídce vyberte Odstranit. Nezapomeňte odstranit obě neaktivní relace.

Dále přidejte novou tabulku, která uživatelům sestavy umožní filtrovat prodeje podle data expedice. Přepněte do zobrazení Sestava a pak na kartě Modelování na pásu karet ve skupině Výpočty vyberte Nová tabulka.

Obrázek záložky Modelování na pásu karet Power BI Desktopu. Ve skupině Výpočty je zvýrazněná možnost Nová tabulka.

Do řádku vzorců (umístěného pod pásem karet) zadejte následující definici počítané tabulky a stiskněte Enter.

Ship Date = 'Date'

Definice počítané tabulky duplikuje data tabulky Date a vytvoří novou tabulku s názvem Datum expedice. Tabulka Ship Date (Datum expedice) má přesně stejné sloupce a řádky jako tabulka Date (Datum). Když se data tabulky Date aktualizují, tabulka Datum expedice se přepočítá, takže budou vždy synchronizovaná.

Přepněte na diagram modelu a všimněte si přidání tabulky Datum expedice .

Obrázek znázorňuje tabulku Ship Date (Datum expedice) složenou ze stejných sloupců jako tabulka Date (Datum)

Dále vytvořte relaci mezi sloupcem DateKey v tabulce Datum expedice a sloupcem ShipDateKey v tabulce Sales . Relaci můžete vytvořit přetažením sloupce DateKey v tabulce Datum expedice do sloupce ShipDateKey v tabulce Sales .

Počítaná tabulka pouze duplikuje data; neduplikuje žádné vlastnosti nebo objekty modelu, jako je viditelnost sloupců nebo hierarchie. V případě potřeby je budete muset nastavit pro novou tabulku.

Tip

Sloupce počítané tabulky můžete přejmenovat. V tomto příkladu je vhodné sloupce přejmenovat, aby lépe popisovaly svůj účel. Například sloupec Fiscal Year (Fiskální rok ) v tabulce Ship Date (Datum expedice) lze přejmenovat na Ship Fiscal Year (Fiskální rok expedice). Pokud se tedy ve vizuálech použijí pole z tabulky Datum expedice , jejich názvy se automaticky zahrnou do titulků, jako je název vizuálu nebo popisky osy.

Návrh tabulky Datum expedice dokončíte tak, že:

  • Přejmenujte následující sloupce:
    • Date (Datum) přejmenujte na Ship Date (Datum expedice).
    • Fiscal Year (Fiskální rok) přejmenujte na Ship Fiscal Year (Fiskální rok expedice).
    • Fiscal Quarter (Fiskální kvartál) přejmenujte na Ship Fiscal Quarter (Fiskální kvartál expedice).
    • Month (Měsíc) přejmenujte na Ship Month (Měsíc expedice).
    • Full Date (Úplné datum) přejmenujte na Ship Full Date (Úplné datum expedice).
  • Sloupec Ship Full Date (Úplné datum expedice) seřaďte podle sloupce Ship Date (Datum expedice).
  • Sloupec Ship Month (Měsíc expedice) seřaďte podle sloupce MonthKey (Klíč měsíce).
  • Skryjte sloupec MonthKey.
  • Vytvořte hierarchii s názvem Fiscal (Fiskální), která bude mít následující úrovně:
    • Ship Fiscal Year (Fiskální rok expedice)
    • Ship Fiscal Quarter (Fiskální čtvrtletí expedice)
    • Ship Month (Měsíc expedice)
    • Ship Full Date (Úplné datum expedice)
  • Označte tabulku Ship Date (Datum expedice) jako tabulku kalendářních dat. Použijte k tomu sloupec Ship Date.

Počítané tabulky jsou užitečné, protože fungují ve scénářích, kdy mezi dvěma tabulkami existuje několik relací (viz předchozí popis). Můžete je také použít, když chcete do modelu přidat tabulku kalendářních dat. Tabulky kalendářních dat jsou nutné, když chcete použít speciální časové filtry označované jako časové měřítko.

Vytvoření tabulky kalendářních dat

V dalším příkladu se vytvoří druhá počítaná tabulka, tentokrát pomocí CALENDARAUTO funkce DAX.

Pomocí následující definice vytvořte počítanou tabulku termín splnění.

Due Date = CALENDARAUTO(6)

Funkce CALENDARAUTO DAX přebírá jeden volitelný argument, což je číslo posledního měsíce v roce, a vrátí tabulku s jedním sloupcem. Pokud funkci číslo měsíce nepředáte, předpokládá se číslo 12 (tzn. prosinec). Například ve společnosti Adventure Works končí finanční rok 30. června, a proto se předá hodnota 6 (odpovídá červnu).

Tato funkce skenuje v modelu všechny sloupce typu datum nebo datum/čas, aby zjistila hodnoty nejstarších a nejnovějších uložených kalendářních dat. Poté vytvoří úplnou sadu kalendářních dat, která zahrnuje všechna data v modelu, a zajistí, aby se do této sady načetly celé roky kalendářních dat. Pokud je například nejstarší datum uložené v modelu 15. října 2021, bude prvním datem CALENDARAUTO , které funkce vrátí, 1. července 2021. Pokud je poslední datum uložené v modelu 15. června 2022, bude poslední datum, které funkce vrátí CALENDARAUTO , 30. června 2022.

Ve skutečnosti funkce zaručuje splnění CALENDARAUTO následujících požadavků na označení tabulky kalendářních dat :

  • V tabulce musí být sloupec s datovým typem Datum.
  • Sloupec musí obsahovat celé roky.
  • Ve sloupci nesmí chybět žádné datum.

Tip

Tabulku kalendářních dat můžete také vytvořit pomocí CALENDAR funkce DAX a předáním dvou hodnot kalendářních dat, které představují rozsah kalendářních dat. Funkce generuje jeden řádek pro každé datum v daném rozsahu. Funkci můžete předat statické hodnoty kalendářních dat nebo výrazy, které načtou nejstarší/nejnovější data z určitých sloupců modelu.

Pak přepněte do zobrazení dat a pak v podokně Pole vyberte tabulku Termín splnění . Prohlédněte si sloupec kalendářních dat. Možná budete chtít data seřadit, abyste na prvním řádku viděli nejstarší datum. Vyberte šipku v záhlaví sloupce Date (Datum) a seřaďte hodnoty vzestupně.

Poznámka

Řazení ani filtrování sloupců nemění způsob ukládání hodnot. Tyto funkce pomáhají prozkoumat data, abyste jim dokázali porozumět.

Obrázek znázorňuje tabulku Due Date (Datum splatnosti) v zobrazení dat. Jeden sloupec má název Date (Datum), a pokud jsou hodnoty seřazeny od nejstarší k nejnovější, je prvním datem 1. červenec 2017.

Když je vybraný sloupec Date (Datum), podívejte se na zprávu na stavovém řádku (v levém dolním rohu). Uvádí počet řádků uložených v tabulce a počet odlišných hodnot zjištěných ve vybraném sloupci.

Obrázek stavové zprávy: TABULKA: Due Date (počet řádků: 1 461) SLOUPEC: Date (počet odlišných hodnot: 1 461).

Pokud je počet řádků tabulky a počet odlišných hodnot stejný, znamená to, že sloupec obsahuje jenom jedinečné hodnoty. Tato okolnost je důležitá hned ze dvou důvodů: Vyhovuje požadavkům na označení tabulky kalendářních dat a umožňuje tento sloupec použít v relaci modelu na straně označené číslem 1.

Počítaná tabulka Due Date (Datum splatnosti ) se přepočítá pokaždé, když se aktualizuje tabulka obsahující sloupec kalendářního data. Jinými slovy, když se do tabulky Sales (Prodeje ) načte řádek s datem objednávky 1. července 2022, tabulka Termín splatnosti se automaticky rozšíří tak, aby zahrnovala data až do konce dalšího roku: 30. června 2023.

Tabulka Due Date (Datum splatnosti ) vyžaduje další sloupce, které podporují známé požadavky na filtrování a seskupení, konkrétně podle roku, čtvrtletí a měsíce.