Megosztás a következőn keresztül:


SELECTEDVALUE helyett VALUES használata

Adatmodellezőként néha előfordulhat, hogy egy DAX kifejezést kell írnia, amely ellenőrzi, hogy az oszlopokat egy adott érték szűri-e.

A DAXkorábbi verzióiban ezt a követelményt egy három DAX függvényt tartalmazó mintával lehetett biztonságosan elérni; IF, HASONEVALUE és VALUES. Az alábbi mértékdefiníció egy példát mutat be. Kiszámítja a forgalmi adó összegét, de csak az ausztrál ügyfeleknek történő értékesítésekre.

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

A példában a HASONEVALUE függvény csak akkor ad vissza TRUE, ha a Country-Region oszlop egyetlen értéke látható az aktuális szűrőkörnyezetben. Ha TRUE, a VALUES függvény az "Ausztrália" literális szöveghez lesz hasonlítva. Amikor a VALUES függvény TRUE-et ad vissza, a eladási mutatót megszorozzuk 0,10-zel (ami 10%-et jelent). Ha a HASONEVALUE függvény FALSEad vissza – mivel egynél több érték szűri az oszlopot –, az első IF függvény BLANKad vissza.

A HASONEVALUE használata védekező technika. Erre azért van szükség, mert lehetséges, hogy több érték is szűri a Country-Region oszlopot. Ebben az esetben a VALUES függvény több sorból álló táblát ad vissza. Ha több sorból álló táblát hasonlít össze egy skaláris értékkel, az hibát eredményez.

Ajánlás

Javasoljuk, hogy használja a SELECTEDVALUE függvényt. Ugyanazt az eredményt éri el, mint a cikkben leírt minta, mégis hatékonyabban és elegánsabban.

A SELECTEDVALUE függvény használatával a példa mértékdefiníciója újra lesz írva.

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

Borravaló

Lehetséges egy alternatív eredményérték bemenőként átadni a SELECTEDVALUE függvénybe. A másodlagos eredményérték akkor lesz visszaadva, ha a rendszer nem alkalmaz szűrőket vagy több szűrőt az oszlopra.