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

  |

0.0