DAX: A SELECTEDVALUE használata a VALUES helyettDAX: Use SELECTEDVALUE instead of VALUES

Adatmodellezőként néha előfordulhat, hogy DAX-kifejezést kell írnia, amely teszteli, hogy az oszlopot egy adott érték szerint szűri-e.As a data modeler, sometimes you might need to write a DAX expression that tests whether a column is filtered by a specific value.

A DAX korábbi verzióiban ezt a követelményt három DAX-függvényt tartalmazó minta használatával lehetett biztonságosan teljesíteni.In earlier versions of DAX, this requirement was safely achieved by using a pattern involving three DAX functions. A függvények az IF, a HASONEVALUE és a VALUES.The functions are IF, HASONEVALUE and VALUES. A következő mértékdefiníció bemutat egy példát.The following measure definition presents an example. Kiszámítja az értékesítési adó összegét, de csak az ausztráliai ügyfelek részére végzett értékesítésekhez.It calculates the sales tax amount, but only for sales made to Australian customers.

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 adja vissza a TRUE értéket, ha az Ország-régió oszlop egyetlen érték alapján szűrt.In the example, the HASONEVALUE function returns TRUE only when a single value filters the Country-Region column. Ha az értéke TRUE, a program a VALUES függvényt az „Australia” pontos szövegével hasonlítja össze.When it's TRUE, the VALUES function is compared to the literal text "Australia". Ha a VALUES függvény a TRUE értéket adja vissza, az Értékesítés mértékét a program megszorozza 0,10-del (ami 10%-nak felel meg).When the VALUES function returns TRUE, the Sales measure is multiplied by 0.10 (representing 10%). Ha a HASONEVALUE függvény visszaadott értéke FALSE, mivel több mint egy értékkel szűri az oszlopot, az első IF függvény a BLANK értéket adja vissza.If the HASONEVALUE function returns FALSE—because more than one value filters the column—the first IF function returns BLANK.

A HASONEVALUE használata egy védelmi technika.The use of the HASONEVALUE is a defensive technique. Ez kötelező, mert lehetséges, hogy a program több érték alapján is szűri az Ország-régió oszlopot.It's required because it's possible that multiple values filter the Country-Region column. Ebben az esetben a VALUES függvény több sort tartalmazó táblát ad vissza.In this case, the VALUES function returns a table of multiple rows. Több sort tartalmazó tábla skalár értékkel való összehasonlítása hibát eredményez.Comparing a table of multiple rows to a scalar value results in an error.

JavaslatRecommendation

Javasoljuk, hogy a SELECTEDVALUE függvényt használja.We recommend that you use the SELECTEDVALUE function. Ugyanarra az eredményre vezet, mint az ebben a cikkben ismertetett minta, csak hatékonyabban és elegánsabban.It achieves the same outcome as the pattern described in this article, yet more efficiently and elegantly.

A SELECTEDVALUE függvény használatával most felülírja a például megadott mértékdefiníciót.Using the SELECTEDVALUE function, the example measure definition is now rewritten.

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

Tipp

A SELECTEDVALUE függvénynek alternatív eredmény értéket is át lehet adni.It's possible to pass an alternate result value into the SELECTEDVALUE function. Az alternatív eredmény visszaadása akkor történik, ha nincs kiválasztva szűrő, vagy több szűrőt is alkalmazott az oszlopra.The alternate result value is returned when either no filters—or multiple filters—are applied to the column.

Következő lépésekNext steps

Erről a cikkről a következő forrásanyagokban talál további információt:For more information about this article, check out the following resources: