Sdílet prostřednictvím


Místo VALUES použijte SELECTEDVALUE

Jako modelátor dat může být někdy nutné napsat DAX výraz, který testuje, zda je sloupec filtrován podle konkrétního value.

Ve earlier verzích DAXbyl tento požadavek bezpečně dosažen pomocí vzoru zahrnujícího tři DAX funkce; IF, HASONEVALUEandVALUES. Následující definice measure představuje příklad. Vypočítá částku daně z prodeje, ale pouze pro prodeje pro australské zákazníky.

Australian Sales Tax =
IF(
    HASONEVALUE(Customer[Country-Region]),
    IF(
        VALUES(Customer[Country-Region]) = "Australia",
        [Sales] * 0.10
    )
)

V tomto příkladu vrátí funkce pouze v případě, že je v aktuálním kontextu viditelný jeden sloupce země-oblast. Při TRUEse funkce VALUES porovná s literálovým textem "Austrálie". Když VALUES funkce vrátí TRUE, Salesmeasure se vynásobí 0,10 (představující 10%). If HASONEVALUE funkce vrátí FALSE, protože více než jeden valuefilters sloupec – vrátí funkce firstIFBLANK.

Použití HASONEVALUE je obranná technika. Je to nutné, protože je možné, že více valuesfilter sloupec země-oblast. V tomto případě vrátí funkce VALUES tabulku s více řádky. Porovnání tabulky s více řádky se skalárním value má za následek error.

Doporučení

Doporučujeme použít funkci SELECTEDVALUE. Dosahuje stejného výsledku jako vzor popsaný v tomto článku, ale efektivněji and elegantně.

Příklad definice measure je přepsán pomocí funkce SELECTEDVALUEnow.

Australian Sales Tax =
IF(
    SELECTEDVALUE(Customer[Country-Region]) = "Australia",
    [Sales] * 0.10
)

Rada

Do funkce SELECTEDVALUE je možné předat alternativní výsledekvalue. Alternativní výsledek value se vrátí, pokud se na sloupec nepoužijí žádné filters, nebo pokud se použije více filtersproor.