Skapa en datumtabell i LuckyTemplates
Ta reda på varför det är viktigt att ha en dedikerad datumtabell i LuckyTemplates och lär dig det snabbaste och mest effektiva sättet att göra det.
Jag ska visa dig hur du håller din övningsdatauppsättning uppdaterad varje gång du gör en uppdatering . Du kan se hela videon av denna handledning längst ner på den här bloggen.
Om du verkligen vill förbättra dina DAX-färdigheter är sättet att använda det och omsätta det i praktiken. Och för att göra det skulle du behöva en övningsdatauppsättning som hjälper dig att visualisera och arbeta med möjliga verkliga scenarier.
Problemet med övningsdatauppsättningar är att data vanligtvis är statiska . För att du ska kunna öva effektivt måste du ge intryck av att data är live.
Innehållsförteckning
Konfigurera en filsökväg för övningsdatauppsättningen
För mina exempeldata har jag en Excel-fil som innehåller försäljningsdata från 2014, 2015 och 2016.
Det här är data som jag behöver uppdatera.
Dokumentplatsen finns här på mitt verktygsfält för snabbåtkomst.
Jag behöver det för att ställa in en parameter för min filsökväg. Så jag ska kopiera dokumentplatsen.
Det finns en åtkomstpunkt till verktygsfältet Snabbåtkomst till höger om det.
När jag trycker på den får jag upp den här skärmen.
Så jag går till Alla kommandon och väljer sedan Dokumentplats . Lägg till det i verktygsfältet Snabbåtkomst och tryck på OK.
Nu ska jag gå in påför att skapa parametern som kommer att hålla min filsökväg. Detta steg är viktigt eftersom det gör att alla frågor i modellen kan återställas om en annan användare ändrar filplatsen.
Så jag skapar en ny parameter .
Jag kommer att kalla det FileLocation .
Under typ ska jag välja Text . Och för Current Value klistrar jag in dokumentplatsen som jag kopierade tidigare.
Jag ska skapa en ny fråga.
Sedan väljer jag de exempeldata som jag kommer att använda som min övningsdatauppsättning.
Ett antal olika tabeller kommer att dyka upp här eftersom jag har försäljningsdata från 2014, 2015 och 2016. Jag behöver bara välja den första, som är Sales_2014 .
Nu när jag har valt Sales_2014-data är det dags att ändra den hårdkodade filplatsen till en dynamisk filplats .
Jag går in i Advanced Editor och väljer allt som är relaterat till filplatsen .
Sedan kommer jag att ändra det till FileLocation-parametern som jag skapade tidigare.
Sedan trycker jag på Klar för att låsa dessa ändringar i Sales_2014-frågan.
Skapa mappen Data Prep
När jag tittar på de tillämpade stegen för frågan Sales_2014 klickar jag på navigeringssteget . Detta visar mig att det refererar till källsteget .
Den refererar också till Sales_2014 som visas som en tabell . Det visar också att det extraherar data från kolumnen Data.
Låt mig nu titta på källsteget härnäst.
Källsteget visar mig allt som finns i min Excel-fil . Om jag kollar de koordinaterna ser jag Sales_2014 och under Kind står det Tabell .
När jag slår upp datakolumnen visar den tabellobjektet som extraherades.
Så jag kan duplicera den här frågan för att komma fram till 2015 års data . För att göra det behöver jag bara högerklicka på Sales_2014 och sedan välja Duplicera.
Sedan går jag tillbaka till navigeringssteget.
Jag ändrar det året från 2014 till 2015.
Jag kommer också att byta namn på det här under Egenskaper. Jag kallar det Sales_2015.
Den här gången ska jag duplicera Sales_2015.
Sedan går jag tillbaka till navigeringssteget och ändrar årtalet till 2016.
Jag har nu mina fullständiga försäljningsdata. Men dessa frågor ska inte laddas in i min modell . Jag behöver bara högerklicka på var och en av dem och avmarkera Aktivera laddning .
Nu ska jag välja alla frågor och placera dem i en enda mapp för att göra saker mer organiserade.
Jag kallar den här mappen Data Prep .
Att få dagen förskjuten
Exempeldatan här under Dataprep kommer att vara statisk . Det betyder att det första och sista datumet aldrig kommer att ändras .
Så jag går in på Sales_2016 och jag kommer att sortera kolumnen Orderdatum i fallande ordning för att få det sista datumet från denna datamängd .
Sista datum i denna datamängd är den 31 december 2016 .
Nu ska jag skapa en ny fråga.
Sedan ska jag kontrollera vad dagoffset är från det sista datumet i datamängden till idag. Det betyder att jag måste ta reda på vad det är idag. För att göra det använder jag funktionen DateTime.FixedLocalNow . Detta kommer att ge mig datum och tid från maskinen som jag arbetar på.
Men jag behöver egentligen inte tidsdelen här. Jag behöver bara datumdelen av detta värde.
Så jag ska extrahera datumet med Date.From .
Sedan kommer jag att subtrahera det sista datumet i min datamängd från det värdet . Eftersom datan är statisk kan jag använda det inneboende datumvärdet . Så det är #datum och hänvisa sedan till 31 december 2016.
Nu måste jag extrahera numret från denna skillnad . Så jag lägger till Number.From och stänger av det med en parentes. Tryck sedan på enter.
Jag kommer att byta namn på detta till DayOffset .
Ställa in dynamiska datumintervall
Jag behöver också dynamiska datumintervall för min datumtabell. Jag börjar med att högerklicka på mappen Data Prep och skapa en ny tom fråga.
Sedan kommer jag att arbeta med startdatumet för min Date-tabell.
Jag vill alltid ha den första dagen på året som mitt startdatum. Så jag sätter likhetstecknet och använder funktionen Date.StartOfYear .
Eftersom jag måste ge det ett värde, kommer jag att kompensera det genom att använda Date.AddDays .
Sedan använder jag det inre datumvärdet igen och använder det första datumet i min datamängd , som är 1 juni 2014.
Jag behöver också antalet dagar som jag beräknade i min DayOffset , så jag ska lägga till det.
När jag trycker på enter ger det mig 1 januari 2017 . Detta kommer att bli det första datumet i min datumtabell.
Jag ska döpa om det till fxStartDate .
Nu kan jag ställa in mitt slutdatum. Jag ska kopiera den här syntaxen som jag använde på mitt startdatum.
Jag skapar en ny tom fråga.
Byt sedan namn på den till fxEndDate .
Sedan ska jag klistra in syntaxen från mitt Startdatum .
Istället för StartOfYear ändrar jag detta till EndOfYear.
Jag kommer också att använda sista datumet för min datamängd, vilket är den 31 december .
När jag trycker på enter kommer det tillbaka 31 december 2020 .
Skapa en enda försäljningstabell
Jag kommer att kombinera de tre borden till en enda försäljningstabell . För att göra det kommer jag att skapa en ny fråga.
Jag kallar detta min försäljningstabell .
Sedan kombinerar jag Sales_2014, Sales_2015 och Sales_2016 i en enda tabell.
Jag vet att du kan göra det genom bandet, men det finns också ett alternativ att göra det direkt i formelfältet. Jag väljer det andra alternativet.
Jag börjar med Table.Combine .
Table.Combine kräver en lista med tabeller . Så jag lägger till en listinitierare , som är de där krulliga parenteserna , och sedan ska jag namnge de tre frågorna . Tryck på enter efter det.
Omvandla beställningsdatumkolumnen
Nu när jag har de flesta elementen jag behöver, ska jag generera en viktig del av syntaxen som jag ska använda senare för att slutföra min dynamiska övningsdatauppsättning.
Jag börjar med att välja två nummerkolumner. Jag kan använda leveransregionindex och produktbeskrivningsindex . På din sida kan du trycka ned antingen Shift eller Ctrl för att välja båda kolumnerna.
Under fliken Transformera väljer jag Absolut värde .
Om jag tittar på formelfältet kommer det att visa funktionen Table.TransformColumns . Detta är nyckeln till den slutliga lösningen.
Funktionen tar en lista med transformationslistor . Som du kan se finns det 2 listor här kapslade inuti varandra.
Den refererar till kolumnnamnet som text. Det är därför Delivery Region Index refererades här på det första setet.
Sedan lägger den till ett transformationssteg .
Det gör samma sak i en separat lista för kolumnen Produktbeskrivningsindex .
Nu ska jag gå till .
Jag vill inte ha absoluta värden . Så det första jag ska göra är att kompensera för min dejt . Jag skapar en funktion som heter fxUpdateDate för att göra det. Det kommer att använda det aktuella datumet, som jag skriver in som cDate .
Sedan kommer jag att använda Date.AddDays- funktionen igen, som också använder cDate . Jag kommer också att använda DayOffset som jag skapade tidigare.
Allt som fxUpdateDate gör är att ta datumet. Så om jag skickar det till funktionen Table.TransformColumns kommer den att börja leta efter varje inspelat datum.
Så, om jag till exempel arbetar på första raden här, kommer den att betrakta den 1 juni 2014 som cDatum.
Och varje gång funktionen anropas kommer den att lägga till DayOffset som jag skapade.
Nu visas steget Table.Transform i Beräknat absolutvärde .
Jag kommer att byta namn på det först och kalla det UpdateOrderDate.
Detta UpdateOrderDate- steg involverar min Table.TransformColumns som är lika med källan.
Den initiala tabellen som anges är leveransregionindex . Men det finns ingen anledning att förändra det. Så jag kommer att ändra den första kolumnen som hänvisas till till kolumnen OrderDate .
Det står också här att omvandlingen kommer att ske i absoluta värden.
Eftersom jag inte vill det kommer jag att ändra det till fxUpdateDate .
Typen kommer inte att vara ett absolut värde heller, så jag måste också ändra den här delen.
Jag ändrar det till ett datum .
Jag behöver bara en transformation, så jag tar bort den andra listan tillsammans med transformationssteget som följer med den uppsättningen...
…så det är bara en transformation för kolumnen OrderDate.
Eftersom jag döpte om steget till Beräknat absolut värde, måste jag också ändra det i mitt uttalande.
Nu visar den UpdateOrderDate också.
Så kolumnen OrderDate kommer nu att anropa denna funktion för varje post i Table.TransformColumns .
När jag tittar i kolumnen Beställningsdatum kan jag se att detta har uppdaterats.
Och om jag sorterar det i fallande ordning visar det 7 juli 2020 som aktuellt datum.
Så jag ska ta bort det där Sorteringssteget för det behöver jag egentligen inte. Jag gjorde det bara för att kontrollera om det aktuella datumet också hade uppdaterats.
Tillämpa tidsintelligens med M-kod
Min modell handlar om försäljningsdata . Eftersom jag ska göra lite tidsintelligens skulle jag behöva en Date- tabell.
Så jag går till. I M-code Showcase går jag in på Extended Date Table- ämnet.
Scrolla upp till högst upp på sidan och kopiera hela koden .
När jag går tillbaka till min modell, ska jag skapa en ny tom fråga och klistra in den M-koden i . Tryck på Klar.
Jag kommer att byta namn på den frågan till fxCalendar .
För mina parametrar kommer jag att använda den 1 januari för Startdatum och den 31 januari för Slutdatum . Tryck sedan på Invoke.
När tabellen väl kommer upp kommer jag att byta namn på den till Datum .
Kom ihåg att jag redan skapat start- och slutdatumen genom att titta på det första datumet i exempeldataset och kompensera det med min DayOffset. Så fxStartDate här visas som 1 januari 2017 .
När det gäller fxEndDate returnerar det den 31 december 2020 .
Jag kan gå tillbaka till tabellen Datum och uppdatera det där källsteget också.
Den listar parametrarna i den ordning de anropades. Den första parametern ska visa startdatumet .
Jag ska ändra det till fxStartDate .
Jag kommer också att ersätta den andra parametern.
Jag lägger in fxEndDate .
När jag trycker på Enter är omvandlingen klar. Jag har nu en helt uppdaterad övningsdatauppsättning som alltid kommer att vara aktuell.
Jag klickar bara på Stäng och tillämpa för att låsa in alla dessa steg.
Slutsats
Som jag nämnde tidigare kommer att ha din egen dynamiska övningsdatauppsättning definitivt höja ditt spel när det kommer till LuckyTemplates. Det låter dig öva dina färdigheter och kunskaper samtidigt som du låtsas att du arbetar med ett verkligt scenario.
Om du vill lära dig mer om hur du gör dina start- och slutdatum dynamiska, speciellt för en övningsdatauppsättning du använder, kan du kolla in LuckyTemplates-forumet. Det finns många samtal där om detta såväl som andra relevanta ämnen. Du kan till och med hitta andra tillvägagångssätt som skulle fungera för dig.
Med vänliga hälsningar,
Melissa
Ta reda på varför det är viktigt att ha en dedikerad datumtabell i LuckyTemplates och lär dig det snabbaste och mest effektiva sättet att göra det.
Denna korta handledning belyser LuckyTemplates mobilrapporteringsfunktion. Jag ska visa dig hur du kan utveckla rapporter effektivt för mobila enheter.
I denna LuckyTemplates Showcase går vi igenom rapporter som visar professionell serviceanalys från ett företag som har flera kontrakt och kundengagemang.
Gå igenom de viktigaste uppdateringarna för Power Apps och Power Automate och deras fördelar och konsekvenser för Microsoft Power Platform.
Upptäck några vanliga SQL-funktioner som vi kan använda som sträng, datum och några avancerade funktioner för att bearbeta eller manipulera data.
I den här handledningen kommer du att lära dig hur du skapar din perfekta LuckyTemplates-mall som är konfigurerad efter dina behov och preferenser.
I den här bloggen kommer vi att visa hur man lager fältparametrar med små multiplar för att skapa otroligt användbara insikter och bilder.
I den här bloggen kommer du att lära dig hur du använder LuckyTemplates ranknings- och anpassade grupperingsfunktioner för att segmentera en exempeldata och rangordna den enligt kriterier.
I den här handledningen kommer jag att täcka en specifik teknik kring hur man visar Kumulativ total endast upp till ett specifikt datum i dina bilder i LuckyTemplates.
Lär dig hur du skapar och anpassar punktdiagram i LuckyTemplates, som huvudsakligen används för att mäta prestanda mot mål eller tidigare år.