Tábla DAX-kifejezések
A Power BI-ban a legtöbb esetben úgy hoz létre táblákat, hogy adatokat importál a modellbe egy külső adatforrásból. Táblázatfüggvények esetén ehelyett új táblákat ad hozzá a modellbe már betöltött adatok alapján.
Áttekintés
A táblafüggvények lehetővé teszik, hogy a Power BI-felhasználók köztes táblázatot hozzanak létre, amelyet az adatmodellben tekinthetnek meg, és más DAX-kifejezésekben is használhatnak. A táblafüggvények ideiglenes táblák, amelyeket használhat, de nem láthatók, mert nem jelennek meg.
A FILTER, a VALUES és az ALL néhány gyakori köztes tábla, amelyeket gyakran használnak a DAX-mértékekben.
A FILTER függvény alkalmazása
A FILTER függvény beállítja a szűrőt egy adott táblához, majd egy tábla egy tömörített verzióját használja egy számításban. Más szóval egy olyan táblát ad vissza, amely egy másik tábla vagy kifejezés egy részhalmazát jelöli.
Tegyük fel például, hogy a következő adattáblával rendelkezik:
Az előző táblázatban vannak olyan sorok, amelyek a Seattle értékesítését emelik ki. Seattle teljes értékesítése 2018-ban 30,13 (20,46 + 9,67). Az eredmény lekérése a FILTER függvénnyel:
2018 Sales = SUMX(
FILTER(
Sales,
YEAR( Sales[SalesDate] ) = 2018
),
[Price]*[Quantity]
)
Tipp
KORRELÁCIÓ A TABLEAU-HOZ: Ha ugyanazt a számítást szeretné létrehozni a Tableau-ban, használja a HA/THEN szintaxist: 2018 Sales = IF YEAR([SalesDate]) = 2018 THEN SUM([Price]*[Quantity]) END
Az előző kódrészletben először lekérte a szűrőkörnyezet adatait, amely a Sales ténytábla:
Ezután szűrte az Értékesítési adatokat, hogy csak a 2018-ra vonatkozó értékesítéseket tartalmazza.
Végül kiértékelte a kifejezést, de csak az ideiglenes táblában lévő rekordokra.
A VALUES függvény alkalmazása
AZ ÉRTÉKEK egy egyoszlopos táblát ad vissza, amely a megadott táblától vagy oszloptól eltérő értékeket tartalmazza; a rendszer eltávolítja az ismétlődő értékeket, és csak az egyedi értékeket adja vissza.
Most kapott például egy feladatot, amelyben meg kell mutatnia, hogy egy sportcsapat melyik játékosa rendelkezik az utolsó kiemelkedő finom egyenlegével, amelyet ki kell fizetni.
Az alábbi adattábla (a csapat részletes adatai) lesz használva:
Amit meg kell tennie, tesztelje, hogy csak egy játékos maradt, hogy kifizetje a bírságot. Ha igen, jelenítse meg a nevüket. Ellenkező esetben jelenítse meg a "több játékos" üzenetet.
Ezt a VALUES függvénnyel teheti meg:
LastPlayer = IF(
COUNTROWS( VALUES( 'Team Fine Details'[SportsTeam] ) ) = 1,
VALUES( 'Team Fine Details'[PlayerName] ),
"More than one player"
)
Tipp
A TABLEAU-HOZ VALÓ KORRELÁCIÓ: Így végezheti el ugyanezt a számítást a Tableauban: LastPlayer = IF COUNTD([SportsTeam]) = 1 THEN [PlayerName] ELSE "More than one player" END
Ez a mérték az alábbi jelentéshez/vizualizációhoz hasonlóan nézne ki:
Az ALL függvény alkalmazása
Az ALL függvény arra utasítja a Power BI-t, hogy vizsgálja meg egy adott táblát, vegye ki belőle az összes értéket (ne szűrje a táblát), és használja az értékek ezen részhalmazát egy kifejezésben.
Az ALL függvénnyel általában akkor érdemes tisztában lenni, ha egy összesített mérték százalékos arányát szeretné tudni.
Vegyük például a sportcsapatra vonatkozó részletes forgatókönyvet. A főnöke elégedett az előző feladattal kapcsolatos megállapításaival, de tudni szeretné, hogy melyik csapat rendelkezik a legmagasabb arányban a kiemelkedő bírságok arányával.
Az első lépés egy intézkedés létrehozása a ki nem egyenlített bírságok teljes összegére vonatkozóan:
TotalAllFineAmount = CALCULATE( [TotalFineAmount], ALL( 'Team Fine Details'[SportsTeam] ) )
Tipp
KORRELÁCIÓ A TABLEAU-HOZ: Így végezheti el ugyanezt a számítást a Tableauban a FIX LOD kifejezéssel. A teljes TotalFineAmount értéket a tábla szintjén összesítjük: TotalAllFineAmount = { FIXED : SUM([TotalFineAmount]) }
A második és utolsó lépés a teljes mérték százalékos arányának létrehozása a DIVIDE függvénnyel:
FineAmountPercentOfTotal = DIVIDE( [TotalFineAmount], [TotalAllFineAmount] )
Tipp
A TABLEAU-HOZ VALÓ KORRELÁCIÓ: Így végezheti el ugyanezt a számítást a Tableauban: FineAmountPercentOfTotal = SUM([TotalFineAmount]) / SUM([TotalAllFineAmount])