Vad är Power Query & M Language: En detaljerad översikt
Denna handledning ger en översikt över Power Query Editor och M-språket på LuckyTemplates-skrivbordet.
Den här handledningen kommer att diskutera hur du väljer eller filtrerar ett specifikt datum i din . Materialet som används i denna handledning kommer från . Du lär dig hur du löser problemet och förstår de metoder som används. Du kan se hela videon av denna handledning längst ner på den här bloggen.
Innehållsförteckning
Förstå datarapporten i LuckyTemplates
Detta är exempeldatarapporten som kommer att användas. Den består av en bordsvisuell och två skärare.
Målet är att ha ett datumval över kolumnen Datum på skivaren. Det betyder att när ett datum i slicern har valts kommer tabellvisualiseringen att visa de föregående dagarna med ett 7-dagarsintervall. I det här exemplet är data som valts i datumutsnittet 12 maj 2007.
Tabellen ska visa det föregående med en skillnad på 7 dagar mellan datumen.
Du måste också skapa en what if-parameter för att dynamiskt visa antalet datum baserat på urvalet. Om du väljer 3 ska tabellvisualen endast visa 3 datum.
Återskapa tabellen och visualiseringarna
Det första steget är att skapa en what if-parameter . Inuti LuckyTemplates skrivbord, gå till fliken Modellering och välj Ny parameter .
Lägg till ett namn till parametern och ställ in Datatyp på Helnummer . Ställ sedan in minimi-, max-, inkrement- och standardvärden som visas i bilden nedan. Lägg till skivaren på sidan genom att markera rutan.
När du har tryckt på OK genereras en slicer. Konvertera skivaren till en lista genom att klicka på rullgardinsknappen och välja Lista.
Nästa sak att göra är att skapa en duplicerad datumtabell som kommer att användas som en frånkopplad datumtabell. Gå till Power Query Editor och duplicera datum .
Byt sedan namn på dubbletten av DisDate och klicka på Stäng och tillämpa.
Laddar datumtabellerna och skivorna i LuckyTemplates
När den duplicerade tabellen har laddats i LuckyTemplates-modellen, skapa en slicer med datumkolumnen från den frånkopplade datumtabellen. Öppna tabellen DisDate och dra Date till arbetsytan.
Förvandla sedan visualiseringen till en skivare.
Efter det ändrar du formatet på utsnittet till Lista . Visualiseringen kommer då att se ut så här.
Duplicera sedan skivaren och ändra datafältet med kolumnen Datum från tabellen Datum.
Om du väljer ett datum från datumutsnittet begränsas försäljningstabellens antal synliga rader i matrisen. Om du väljer 14 mars 2005 kommer matrisen bara att visa det datumet.
Resultatet och måttet fungerar inte om du använder den här inställningen. Anledningen är att redan innan åtgärden börjar fungera har tillgången till matrisen redan filtrerats. För dessa filtrerade värden kommer du inte att kunna generera datum med intervall.
Skapa mått för urvalsskivorna
Du måste skapa en uppsättning av datum som inte filtrerar matrisen direkt när en markering placeras över en slicer. Filtreringen av matrisen måste komma genom och inte direkt från skärarna. Så om du väljer ett datum från DisDate slicer kommer inga ändringar att ske i matrisen.
Detta händer eftersom DisDate-tabellen inte har en relation med Dates-tabellen. Det är därför det frånkopplade bordet är viktigt.
Ta bort skivaren med tabellen Datum och skapa det första måttet. Måttet kommer att hämta värdet som är valt från datum att visa slicer. Den första variabeln som du behöver skapa är ValuesToShow . Jämställ sedan det med värdet Dates To Show och skriv in RETURN för att returnera de valda värdena.
Dra det måttet till matrisen. Om du väljer 6 från datum att visa slicer, kommer mätkolumnen i matrisen också att ge 6.
Skapa sedan en annan variabel som kommer att hämta det frånkopplade datumet som valts i utsnittet.
När du är klar ser du värdet som valts i DisDate slicer som visas i kolumnen Measure.
Skapa en beräknad tabell
Skapa en lista med datum med 7-dagarsintervall från det valda datumet i skivaren. Se sedan till att matrisen kommer att generera antalet dagar baserat på datum för att visa slicer-valet. För att göra detta måste du först skapa en .
Den beräknade tabellen hjälper dig att visualisera hur datum genereras inuti DAX-koden. Gå till datavyn och klicka på Ny tabell.
Mata in variabeln SelectedDate och likställ den med DATE -funktionen. Ange sedan ett datum inom parentes. Skapa sedan en annan variabel som anger antalet datum som du vill visa i matrisen. Mata in DatesToShow och likställ det med antalet datum.
Efter det skapar du en annan variabel som genererar en lista över datum med 7-dagarsintervall. Mata in DateList och använd funktionen GENERATESERIES . är en funktion som genererar en lista med tal genom att skicka in flera argument.
För det första argumentet anger du SelectedDate – (DatesToShow * 7) som startvärde. Ange sedan SelectedDate som slutvärde. För det sista argumentet, mata in 7 för inkrementvärdet eller intervallet mellan datum. När du är klar, stäng funktionen och skriv in RETURN och DateList .
Du kan sedan se en tabell som innehåller sju värden från och med den 5 maj och går tillbaka i steg om sju.
Nu kommer du att märka att det skapade för många datum än vad du behöver. I den ursprungliga exempelrapporten var det senaste datumet som visades med samma datum att visa och datum 31 mars.
För att fixa det kan du antingen ändra DatesToShow-variabelns värde till 5 eller subtrahera 1 från 6. I det här exemplet subtraheras 1 från 6.
Efter det kommer du att se att värdena slutar den 31 mars.
Injicera datum i filtersammanhang
Därefter måste du använda och injicera dessa datum i ett datumfilterkontext. Du måste också beräkna försäljningsbeloppet i filtersammanhang. Så kopiera GENERATESERIES- syntaxen och gå tillbaka till ditt mått.
Lägg till en ny variabel i måttet och skriv in DatesToShow . Jämställ sedan den variabeln med syntaxen GENERATESERIES . Ändra variablerna i syntaxen från SelectedDate till DisSelectedDate och DatesToShow till ValuesToShow .
Skapa slutligen en variabel för resultatet. Jämställ det med funktionen CALCULATE över Total Sales och DatesToShow för att injicera alla datum som tas emot från GENERATESERIES -syntaxen i filterkontexten. När du är klar, mata in Resultat i RETURN -funktionen.
Nu kommer du att se att matrisen inte visar datumen som DAX-koden begär. Om du tar med måttet Total försäljning i matrisen ser du att koden returnerar själva försäljningsbeloppet.
Problemet med måttet är att datumet som skapades i GENERATESERIES -syntaxen har en datalinje med den frånkopplade datumtabellen. Det betyder att tabellen Datum inte är kopplad till tabellen Försäljning. Det var därför när listan med datum användes i filtersammanhanget, inkluderade den inte tabellen Försäljning.
Du måste använda funktionen för att skapa virtuella relationer och tillämpa filterkontexten.
Använda TREATAS för att fixa datumet i LuckyTemplates Matrix
Du måste behandla värdena som togs emot från GENERATESERIES- syntaxen som om de ingick i den ursprungliga Date-tabellen. Detta bygger i grund och botten en linje med Datum-kolumnen i Date-tabellen som finns i datamodellen.
Så i resultatvariabeln anger du TREATAS efter tabellen Total försäljning och ger argumenten. För det första argumentet, ange kolumnen eller tabellen som inte har relationen. I det här fallet används kolumnen DatesToShow .
För det andra argumentet, ange kolumnen som du vill mappa kolumnens härkomst till i det första argumentet. I det här exemplet används kolumnen Datum från tabellen Datum.
Men även med korrigeringarna i koden kommer mätkolumnen i matrisen fortfarande inte att visa de korrekta värdena när du använder skivaren. Du kan också märka att värdena i kolumnen upprepas.
Problemet ligger i hur koden skrevs. TREATAS tillämpar alla värden i filterkontexten ochåsidosätter den befintliga filterkontexten vid det valda datumet med alla värden som har hämtats från funktionen GENERATESERIES .
Använda KEEPFILTERS-funktionen över TREATAS
För att säkerställa att filtret injiceras i filtret utan att åsidosätta det befintliga filterkontexten, måste du använda KEEPFILTERS -funktionen. ändrar CALCULATE :s filtreringssemantik.
Mata in KEEPFILTERS före TREATAS -funktionen och bekräfta måttet.
Du kommer nu att se att värdena i kolumnen Mått inte upprepas.
Om du utökar månaderna maj och april ser du att värdena i kolumnen Mät är lika med värdena i kolumnen Total försäljning.
Ta bort måttet Total försäljning i matrisen och välj ett nummer i snittet Datum att visa. Du kommer då att se motsvarande antal datum som visas i matrisen.
Åtgärda saknade datumproblem i LuckyTemplates-matrisen
Ett annat problem med den här rapporten är att när du väljer 8 i DatesToShow -skivan ändras inte matrisen.
Om du väljer 9 i skivaren visar matrisen bara 8 datum. Du kommer också att märka att den 17 mars saknas i listan över datum.
Anledningen är att vissa dagar i tabellen Datum finns det inga matchande transaktioner i tabellen Försäljning. Så måttet returnerar ett blanksteg för dessa datum. Eftersom det returnerar tomt tar koden som körs bakom matrisen bort de tomma raderna från resultatet.
LuckyTemplates använder sedan det returnerade resultatet för att fylla i matrisen. Så eftersom vissa dagar återkommer tomma, kan du inte se försäljning och poster för dessa dagar i matrisen.
Om du vill visa något för dagar utan försäljning i dina data, gå tillbaka till måttet och ta bort syntaxen BERÄKNA .
Använder DAX för att lösa saknat datum i LuckyTemplates
Skapa en datalinje genom att skriva TREATAS över kolumnen DatesToShow och Date i tabellen Datum . Kontrollera sedan om alla datum som returneras av TREATAS -funktionen ingår i filterkontexten.
Därifrån delar du exekveringen med flera variabler. Ändra variabelnamnet från Result till CreateDataLineage för att visa att den lagrar resultatet av TREATAS .
Skapa sedan en annan variabel som kommer att hålla alla datum som är synliga i filterkontexten som kommer från matrisen. Ange VisibleDate som variabelnamnet och använd över kolumnen Datum .
Nästa sak att göra är att skapa en kolumn över resultatet av TREATAS -funktionen som skulle innehålla försäljningsbeloppet. Skriv DatesWithSales som variabelnamnet och använd över CreateDataLineage -variabeln.
Inuti funktionen skapar du en ny kolumn och döper den till försäljningsbelopp med måttet Total försäljning i radkontexten för att initiera kontextövergång.
Efter det skapar du en variabel som kontrollerar om alla datum som är lagrade i DatesWithSales- variabeln ingår i filterkontexten. Mata in IsDateInFilterContext som variabelnamnet och använd funktionen.
Därifrån skriver du DatesWithSales som det första argumentet för funktionen. Ange sedan Dates[Date] IN VisibleDate som det andra argumentet för att kontrollera om datumet i tabellen DatesWithSales ingår i variabeln VisibleDate .
Den sista variabeln som du behöver skapa är Result . Använd funktionen över variabeln IsDateInFilterContext . Skriv [@försäljningsbelopp] + 0 för att inkludera de dagar som inte tidigare inkluderades.
Efter allt detta kommer du att se det saknade datumet, 17 mars, i matrisen.
Använder +0 i originalmåttet
De föregående stegen visade hur du bygger ett mått för att inkludera alla datum som inte har transaktioner i faktatabellen. Nu, om du använder + 0 i det ursprungliga måttet som du skapade, kommer värdena i kolumnen Mått alla att vara 0.
Anledningen är att resultatvariabeln innehåller antingen ett tomt belopp eller ett försäljningsbelopp. Så om du lägger till 0, ersätter du den tomma med 0. Kom ihåg att sammanfattade kolumner tar bort de tomma raderna från datamängden. Returnera dem till LuckyTemplates så att de bara kan visa begränsade rader och inte de tomma.
Men eftersom 0 läggs till tvingas sammanfattningskolumnen behålla raderna. Den returnerar sedan en tabell som innehåller alla datum som finns i tabellen Datum och visar noll varhelst den är tillämplig eller när den är tom.
Detta är anledningen till att du behöver skriva om måttet på ett sätt där du bara behöver lägga till 0 till de datum som är synliga i filterkontexten och som ingår i DatesToShow- variabeln .
Slutsats
För att skapa en datarapport som låter dig välja ett specifikt datum i en , måste du använda beräknade tabeller och. DAX-funktioner och -mått måste skrivas på ett sätt som lätt kan få resultat.
Denna handledning ger en översikt över Power Query Editor och M-språket på LuckyTemplates-skrivbordet.
Lär dig hur du skapar en sidnumrerad rapport, lägger till texter och bilder och sedan exporterar din rapport till olika dokumentformat.
Lär dig hur du använder SharePoint-automatiseringsfunktionen för att skapa arbetsflöden och hjälpa dig att mikrohantera SharePoint-användare, bibliotek och listor.
Finslipa dina färdigheter i rapportutveckling genom att gå med i en dataanalysutmaning. Acceleratorn kan hjälpa dig att bli en LuckyTemplates superanvändare!
Lär dig hur du beräknar löpande summor i LuckyTemplates med DAX. Löpande summor låter dig inte fastna i ett individuellt resultat.
Förstå konceptet med variabler i DAX inom LuckyTemplates och konsekvenserna av variabler för hur dina mått beräknas.
Lär dig mer om den anpassade visual som kallas LuckyTemplates Slope-diagram, som används för att visa ökning/minskning för en enstaka eller flera mätvärden.
Upptäck färgteman i LuckyTemplates. Dessa är viktiga för att dina rapporter och visualiseringar ska se ut och fungera sömlöst.
Att beräkna ett genomsnitt i LuckyTemplates kan göras på många sätt för att ge dig exakt information för dina affärsrapporter.
Låt oss fördjupa oss i Standard LuckyTemplates-teman och granska några av funktionerna som är inbyggda i själva LuckyTemplates Desktop-applikationen.