Jämföra delar av månader i Power BI

I det här inlägget ska vi ta fram en lösning där användare kan jämföra försäljning i olika månader upp till en viss dag i månaden.



Vi ska utgå från ett exempel där vi har data kring kundorder där vi har fält som OrderDate, Country, Quantity och UnitPrice. Nu vill användaren jämföra månad mot månad per land, men också ha möjligheten att styra så att tabellen visar försäljning upp till en viss dag i månaderna. Om användaren väljer dag 10 ska varje kolumn för en månad visa försäljningen från den första dagen i månaden till och med den 10:e.


Vi laddar in data och börjar med att skapa en datumtabell som kalender. Skapa en ny tabell med följande DAX:


Dates = VAR MinDate = Min('Order'[OrderDate]) VAR MaxDate = Max('Order'[OrderDate]) RETURN ADDCOLUMNS ( CALENDAR (MinDate, MaxDate), "DateAsInteger", FORMAT ( [Date], "YYYYMMDD" ), "Year", YEAR ( [Date] ), "Month", FORMAT ( [Date], "M" ), "YearMonth", FORMAT ( [Date], "YYYYMM" ), "YearMonthName", FORMAT ( [Date], "YYYY mmm" ), "MonthName", FORMAT ( [Date], "mmm" ), "Day", FORMAT( [Date], "D") )



Sätt datatypen för Date till datum och säkerställ att Day är ett heltal. Högerklicka på tabellen och välj att det ska vara en datumtabell med kolumnen Date som datumfält.


Gå till datamodellen och dra en koppling från Date i Dates till OrderDate i OrderDetails. Det går inte att göra nedanstående lösning om man använder Power BIs automatgenererade datumtabell.



Gå sedan tillbaka till rapporten och skapa en pivottabell (Matris). Dra Country till rader och YearMonth till kolumner. Skapa först ett mått för att summera hela försäljningen och lägg till det i pivottabellen. Detta bekräftar att tabellen fungerar som den ska.


Sales Amount = sumx('OrderDetail',OrderDetail[Quantity]*OrderDetail[UnitPrice])


Till nästa steg ska vi skapa en ny tabell med ett fält innehållande värden från 1 till 31. I det här fältet ska användaren göra urval och vi ska använda det för att styra begränsningen på nästa uttryck.


Skapa en ny tabell med följande DAX-kod: SelectDay = GENERATESERIES(1,31)

Detta ger oss en tabell, SelectDay som innehåller en kolumn Value med värdena 1 till 31. Dubbelklicka på Value och döp om kolumnen till SelectDay.


Skapa en slicer och lägg till SelectDay som fält. Klicka på inställningar på slicer och slå på Rubrik. Klicka sedan på nedåtpilen och byt inställning till Lista.



Nu ska vi skapa uttrycket som räknar ut försäljningen under en månad upp till en viss dag. Vi börjar med att plocka ut det valda värdet i SelectDay till en variabel SELDAY. Sedan beräknar vi försäljningsbeloppet, men applicerar samtidigt ett filter på dagar.


Sales Amount Until Day = VAR SELDAY = selectedvalue(SelectDay[SelectDay]) RETURN CALCULATE( SUMX(OrderDetail,OrderDetail[Quantity]*OrderDetail[UnitPrice]), Dates[Day] <= SELDAY )


Nu kan vi byta ut uttrycket i vår pivottabell och testa att välja olika värden i slicern. För enkelhetens skull har jag gjort ett urval på ett år nedan.



 

Skriven av: Morgan Kejerhag

Morgan Kejerhag har arbetat med beslutsstöd sedan 2005 och är en av Sveriges mest erfarna Qlik-konsulter. Under åren har Morgan arbetat med flertalet multinationella bolag där han lett arbetet i att bygga upp stora miljöer såväl som små kunder. LinkedIn Kontaktuppgifter