A SELECTEDVALUE használata a VALUES helyett

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

A DAX korábbi verzióiban ezt a követelményt egy három DAX-függvényt tartalmazó mintával sikerült biztonságosan elérni; HA, HASONEVALUE ÉS ÉRTÉKEK. 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 IGAZ értéket, ha az Ország-régió oszlop egyetlen értéke látható az aktuális szűrőkörnyezetben. Igaz érték esetén az ÉRTÉKEK függvény az "Ausztrália" literális szöveghez lesz hasonlítva. Ha az ÉRTÉKEK függvény IGAZ értéket ad vissza, az Értékesítési mérték szorozva lesz 0,10-sel (10%-ot jelent). Ha a HASONEVALUE függvény FAL értéket ad vissza Standard kiadás – mivel egynél több érték szűri az oszlopot –, az első HA függvény ÜRES értéket ad 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 az Ország-Régió 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 Standard kiadás LECTEDVALUE függvényt. Ugyanazt az eredményt éri el, mint a cikkben leírt minta, mégis hatékonyabban és elegánsabban.

A Standard kiadás LECTEDVALUE 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
)

Tipp.

Másik eredményértéket is átadhat a Standard kiadás LECTEDVALUE függvénynek. 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.