Namiesto SELECTEDVALUE použite VALUES
Ako modelár údajov možno niekedy budete musieť napísať DAX výraz, ktorý testuje, či je stĺpec filtrovaný podľa konkrétnej hodnoty.
V starších verziách DAXsa táto požiadavka bezpečne dosiahla pomocou vzoru zahŕňajúceho tri funkcie DAX; IF, HASONEVALUE a VALUES. Nasledujúca definícia mierky predstavuje príklad. Vypočíta čiastku dane z predaja, ale iba na predaj uskutočnený pre austrálskych zákazníkov.
Australian Sales Tax =
IF(
HASONEVALUE(Customer[Country-Region]),
IF(
VALUES(Customer[Country-Region]) = "Australia",
[Sales] * 0.10
)
)
V príklade funkcia HASONEVALUE vráti TRUE iba vtedy, ak je v aktuálnom kontexte filtra viditeľná jedna hodnota stĺpca Krajina – oblasť. Keď je to TRUE, funkcia VALUES sa porovnáva s doslovovým textom "Australia". Keď funkcia VALUES vráti TRUE, mierka Sales sa vynásobí číslom 0,10 (čo predstavuje 10%). Ak funkcia HASONEVALUE vráti FALSE— pretože stĺpec filtruje viac ako jedna hodnota – prvá funkcia IF vráti BLANK.
Použitie HASONEVALUE je obrannou technikou. Je to potrebné, pretože je možné, že stĺpec Krajina – oblasť vyfiltrujú viaceré hodnoty. V tomto prípade funkcia VALUES vráti tabuľku s viacerými riadkami. Pri porovnávaní tabuľky s viacerými riadkami na skalárnu hodnotu sa vyskytla chyba.
Odporúčanie
Odporúča sa použiť funkciu SELECTEDVALUE. Dosahuje rovnaký výsledok ako vzor popísaný v tomto článku, ale oveľa efektívnejšie a elegantnejšie.
Pomocou funkcie SELECTEDVALUE sa teraz prepíše definícia mierky príkladu.
Australian Sales Tax =
IF(
SELECTEDVALUE(Customer[Country-Region]) = "Australia",
[Sales] * 0.10
)
Tip
Do funkcie SELECTEDVALUE je možné odovzdať alternatívny výsledok hodnotu. Hodnota alternatívneho výsledku sa vráti, keď sa v stĺpci nepoužijú žiadne filtre alebo viaceré filtre.
Súvisiaci obsah
- Študijný program: Používanie DAX v aplikácii Power BI Desktop
- Otázky? Skúste sa spýtať v komunite Power BI
- Návrhy? nápadov na zlepšenie power BI