Vissza

Dinamikus dimenziók Power BI-ban

  Tamás Molnár

  2018.02.27. 16:00

Tegnap a LinkedIn profilomon megjelent egy érdekes bejegyzés, ami egy olyan Power BI trükköt tartalmaz, ami egyrészt önmagában is nagyon hasznos tud lenni, de sok további előnyös funkció előtt is megnyitja azokat a bizonyos kapukat…

De egyelőre maradjunk az alap koncepciónál, és lássuk miről is van szó?

Jelenleg a Power BI-ban „gyárilag” nincs arra lehetőségünk, hogy egy tengelyen lévő dimenziókat kedvünkre váltogassuk.

Például, amennyiben az értékesítést szeretnénk megjeleníteni országonként és regiónként, akkor ez nem fog menni egy gombnyomásra ugyanazon a vizualizáción belül. Pedig ez egy igen hasznos tudás lenne, arról nem is beszélve, hogy ezzel elkerülhetővé válna, a fölösleges „vizuális” szemetelés a riportjainkon belül. Elegáns, szép megoldás lenne…ha lenne. Sajnos, mint azt említettem nincs, így keresni kell egy megoldást, amivel az általunk kívánt eredményt kapjuk.

Természetesen van megoldás, -mint szinte mindenre-, bár azt előre bocsátom elsőre nem tűnik majd egyszerűnek (sőt másodjára sem…😊), de megéri az elmélyülést, mert sokat nyerhetünk vele!

Szóval, a kiinduló helyzet a következő:

Van három táblánk (Sales, Currency, és Territory adatok):

 

 

Ahhoz, hogy itt a Sales adatokat különböző (Territory, Region, Currency) bontásban tudjuk megjeleníteni szükségünk lesz egy kapcsoló táblára, ahol ezek az adatok szerepelnek, mondjuk két oszlopban egymás mellett. DAX-ban leírva ez valahogy így fog kinézni:

 

Table =

var currencyt = CROSSJOIN(ROW("Type","Currency"), VALUES(DimCurrency[CurrencyName]))

var country = CROSSJOIN(ROW("Type","Country"), VALUES(DimSalesTerritory[SalesTerritoryCountry]))

var region = CROSSJOIN(ROW("Type","Region"), VALUES(DimSalesTerritory[SalesTerritoryRegion]))

return UNION(UNION(currencyt,country), region)

 

Rövid magyarázat mi is történik itt. Létrehoztunk három táblát, amit végül egy UNION-nal egybe fűztünk, így végül egy két oszlopos táblát kapunk, ennek a második oszlopát most nevezzük át „Values”-ra.

Ezzel meg is kaptuk a „kapcsoló” táblánkat, ami majd azt adja meg, hogy pontosan milyen bontásban is szeretnénk a vizsgált értékeket látni.

Ez egyelőre valahogy így fog kinézni:

 

 

Illetve, ha elkezdjük összerakni a vizualizációt belőle, kiegészítve bal oldalt egy slicer-rel , ezt kellene látnunk:

 

 

Nincs is más hátra, mint egy measure létrehozása, ami a fenti slicer-rel együttműködve adja majd vissza a sales értékét. Ez a következőképpen nézne ki:

 

Sales = if(HASONEVALUE('Table'[Type]),

            SWITCH(VALUES('Table'[Type])

                ,"Country",CALCULATE(SUM(FactInternetSales[SalesAmount])

                                    ,TREATAS(VALUES('Table'[Values])

                                            ,DimSalesTerritory[SalesTerritoryCountry]))

                  ,"Currency",CALCULATE(SUM(FactInternetSales[SalesAmount])

                                    ,TREATAS(VALUES('Table'[Values])

                                            ,DimCurrency[CurrencyName]))

                ,"Region",CALCULATE(SUM(FactInternetSales[SalesAmount])

                                    ,TREATAS(VALUES('Table'[Values])

                                            ,DimSalesTerritory[SalesTerritoryRegion]))

            )

)

Ahogy betesszük a kész measure-t a vizualizációnk „Value” mezőjébe, már meg is kapjuk a kívánt eredményt! Íme:

 

 

 

Nos, ennyi lenne, de ezt egy kicsit továbbgondolva, sok más érdekes megoldást is ki lehet hozni a dologból, ajánlom mindenkinek a forrás oldal tanulmányozását is, ahol további ötleteket is találunk még!

https://www.kasperonbi.com/

Illetve aki maga is ki szeretné próbálni a riportot, vagy jobban a mélyére ásni, az akár a kapcsolódó fájl-t is letöltheti:

.pbix letöltése


   

Megjegyzések
Még nincsenek hozzászólások. Légy első!

Blog kategória

Címkefelhő

Legutóbbi bloggerek

Tamás Molnár
Bejegyzések: 8
Csillagok: 11
Dátum: 2019.07.16.
Tibor Sánta
Bejegyzések: 5
Csillagok: 2
Dátum: 2019.06.27.
Bálint Mészáros
Bejegyzések: 1
Csillagok: 0
Dátum: 2019.06.11.
Adrienn Keszőcze
Bejegyzések: 1
Csillagok: 0
Dátum: 2019.05.28.
Bernadett Bertalanné Szemes
Bejegyzések: 1
Csillagok: 0
Dátum: 2019.05.27.

Kapcsolat