Tabuľkové výrazy DAX

Dokončené

Väčšinou sa v službe Power BI vytvárajú tabuľky importovaním údajov do modelu z externého zdroja údajov. Pomocou funkcií tabuľky namiesto toho pridáte nové tabuľky na základe údajov, ktoré ste už do modelu načítali.

Prehľad

Funkcie tabuľky umožňujú používateľom služby Power BI vytvoriť sprostredkovanú tabuľku, ktorá sa zobrazí v dátovom modeli a môže sa použiť v iných výrazoch DAX. Funkcie tabuľky sú dočasné tabuľky, ktoré môžete použiť, ale nie sú viditeľné, pretože nie sú výstupmi.

Funkcie FILTER, VALUES a ALL predstavujú niektoré bežné sprostredkujúce tabuľky, ktoré sa často používajú v mierkach DAX.

Použitie funkcie FILTER

Funkcia FILTER nastaví filter pre konkrétnu tabuľku a potom vo výpočte použije skrátenú verziu tabuľky. Inými slovami, vráti tabuľku, ktorá predstavuje podmnožinu inej tabuľky alebo výrazu.

Povedzme napríklad, že máte nasledujúcu tabuľku údajov:

Tabuľka údajov, na ktorú sa bude odkazovať v príklade funkcie FILTER.

V predchádzajúcej tabuľke máte niekoľko riadkov, ktoré zvýraznia predaj v Seattli. Celkový predaj v Seattli v roku 2018 je 30,13 (20,46 + 9,67). Ak chcete získať tento výsledok s funkciou FILTER:

2018 Sales = SUMX(
  FILTER(
    Sales,
    YEAR( Sales[SalesDate] ) = 2018
  ),
  [Price]*[Quantity]
)

Tip

CORRELATING TO TABLEAU: Ak chcete vytvoriť rovnaký výpočet v tableau, použite syntax IF/THEN: 2018 Sales = IF YEAR([SalesDate]) = 2018 THEN SUM([Price]*[Quantity]) END

V predchádzajúcom zlomku kódu ste najprv načítali údaje pre kontext filtra, ktorým je tabuľka faktov Sales (Predaj):

Ukážka údajov tabuľky faktov Sales (Predaj).

V ďalšom kroku ste vyfiltrovali údaje o predaji tak, aby zahŕňali iba predaj za rok 2018.

Ukážka údajov tabuľky faktov Sales (Predaj) so zvýraznením predaja v roku 2018.

Nakoniec ste výraz vyhodnotili, ale iba pre záznamy v dočasnej tabuľke.

Ukážka údajov tabuľky faktov Sales (Predaj) filtrovaná tak, aby sa zobrazil predaj za rok 2018.

Použitie funkcie VALUES

Funkcia VALUES vráti tabuľku s jedným stĺpcom obsahujúcu odlišné hodnoty zo zadanej tabuľky alebo stĺpca. duplicitné hodnoty sa odstránia a vrátia sa iba jedinečné hodnoty.

Napríklad práve vám bola odovzdaná úloha tam, kde musíte ukázať, ktorý hráč športového tímu má poslednú nevyrovnanú pokutu, ktorú je potrebné vyplatiť.

Nižšie je uvedená tabuľka údajov (s názvom Team Fine Details), ktorú budete používať:

Tabuľka údajov, na ktorú sa bude odkazovať v príklade funkcie VALUES.

Čo budete musieť urobiť, je otestovať, či je tu len jeden hráč vľavo splatiť svoju pokutu. Ak áno, zobrazte ich meno. V opačnom prípade zobrazí správu "viac ako jeden prehrávač".

Môžete to urobiť pomocou funkcie VALUES:

LastPlayer = IF(
  COUNTROWS( VALUES( 'Team Fine Details'[SportsTeam] ) ) = 1,
  VALUES( 'Team Fine Details'[PlayerName] ),
  "More than one player"
)

Tip

CORRELATING TO TABLEAU: Takto by ste v tableau mohli vykonať rovnaký výpočet: LastPlayer = IF COUNTD([SportsTeam]) = 1 THEN [PlayerName] ELSE "More than one player" END

Táto mierka by vyzerala približne ako zostava/vizualizácia nižšie:

Príklad zostavy s výpočtom LastPlayer.

Použitie funkcie ALL

Funkcia ALL povie službe Power BI, aby sa pozrela na konkrétnu tabuľku, prevzala z nej všetky hodnoty (nefiltrujte tabuľku) a použila túto podmnožinu hodnôt vo výraze.

Bežným použitím funkcie ALL je vtedy, keď chcete poznať percento súčtu agregovanej mierky.

Uvažujme o situácii, že športový tím má napr. Váš šéf je spokojný so svojimi zisteniami z predchádzajúcej úlohy, ale chce vedieť, ktorý tím má najvyššie percento nezaplatených pokút.

Najnovšia zostava s výpočtom LastPlayer je zahrnutá.

Prvým krokom je vytvorenie mierky pre celkový súčet nezaplatených pokút:

TotalAllFineAmount = CALCULATE( [TotalFineAmount], ALL( 'Team Fine Details'[SportsTeam] ) )

Tip

CORRELATING TO TABLEAU: Takto by ste použili rovnaký výpočet v Tableau pomocou výrazu FIXED LOD. Agregujete celkový súčet TotalFineAmount na úrovni tabuľky: TotalAllFineAmount = { FIXED : SUM([TotalFineAmount]) }

Druhým a posledným krokom je vytvorenie percenta z celkovej mierky pomocou funkcie DIVIDE:

FineAmountPercentOfTotal = DIVIDE( [TotalFineAmount], [TotalAllFineAmount] )

Tip

CORRELATING TO TABLEAU: Takto by ste v tableau mohli vykonať rovnaký výpočet: FineAmountPercentOfTotal = SUM([TotalFineAmount]) / SUM([TotalAllFineAmount])