Pipe In R: Tilslutningsfunktioner med Dplyr
I denne øvelse lærer du, hvordan du kæder funktioner sammen ved hjælp af dplyr-røroperatoren i programmeringssproget R.
Jeg vil vise dig, hvordan du holder dit praksisdatasæt opdateret, hver gang du foretager en opdatering . Du kan se den fulde video af denne tutorial nederst på denne blog.
Hvis du virkelig ønsker at forbedre dine DAX-færdigheder, er måden at bruge det og omsætte det i praksis. Og for at gøre det har du brug for et øvelsesdatasæt, der hjælper dig med at visualisere og arbejde på mulige scenarier i det virkelige liv.
Problemet med praksisdatasæt er, at dataene normalt er statiske . For at du kan øve dig effektivt, skal du give indtryk af, at dataene er live.
Indholdsfortegnelse
Opsætning af en filsti til øvelsesdatasættet
Til mine eksempeldata har jeg en Excel-fil, der indeholder salgsdata fra 2014, 2015 og 2016.
Dette er de data, jeg skal opdatere.
Dokumentets placering kan findes her på min Quick Access Toolbar.
Jeg har brug for det for at opsætte en parameter for min filsti. Så jeg vil kopiere dokumentets placering.
Der er et adgangspunkt til værktøjslinjen Hurtig adgang til højre for den.
Når jeg trykker på den, får jeg denne skærm.
Så jeg går efter Alle kommandoer og vælger derefter Dokumentplacering . Føj det til værktøjslinjen Hurtig adgang, og tryk på OK.
Nu vil jeg gå ind ifor at oprette den parameter, der skal holde min filsti. Dette trin er vigtigt, fordi det tillader alle forespørgsler inde i modellen at blive gendannet, hvis en anden bruger ændrer filplaceringen.
Så jeg opretter en ny parameter .
Jeg vil kalde det FileLocation .
Under type vil jeg vælge Tekst . Og for Current Value , indsætter jeg den dokumentplacering, jeg kopierede tidligere.
Jeg vil oprette en ny forespørgsel.
Derefter vælger jeg de eksempeldata, jeg vil bruge som mit praksisdatasæt.
En række forskellige tabeller vil komme op her, da jeg har salgsdata fra 2014, 2015 og 2016. Jeg skal bare vælge den første, som er Salg_2014 .
Nu hvor jeg har valgt Sales_2014-dataene, er det tid til at ændre den hårdkodede filplacering til en dynamisk filplacering .
Jeg går ind i den avancerede editor og vælger alt, der er relateret til filplaceringen .
Så vil jeg ændre det til FileLocation-parameteren, jeg oprettede tidligere.
Så trykker jeg på Udført for at låse disse ændringer i Sales_2014-forespørgslen.
Oprettelse af dataforberedelsesmappen
Når jeg ser på de anvendte trin til Sales_2014-forespørgslen, klikker jeg på navigationstrinnet . Dette viser mig, at det refererer til kildetrinnet .
Den henviser også til Sales_2014 , som er vist som en tabel . Det viser også, at det udtrækker data fra kolonnen Data.
Lad mig nu se på Kilde- trinnet næste gang.
Kildetrinnet viser mig alt, hvad der findes i min Excel-fil . Hvis jeg tjekker disse koordinater, ser jeg Sales_2014 , og under Kind står der Tabel .
Når jeg slår op i datakolonnen, viser den det tabelobjekt , der blev udtrukket.
Så jeg kan duplikere denne forespørgsel for at komme med 2015-dataene . For at gøre det skal jeg bare højreklikke på Sales_2014 og derefter vælge Dupliker.
Så går jeg tilbage til navigationstrinnet.
Jeg ændrer det år fra 2014 til 2015.
Jeg vil også omdøbe det her under Egenskaber. Jeg vil kalde det Sales_2015.
Denne gang dublerer jeg Sales_2015.
Så går jeg tilbage til navigationstrinnet og ændrer året til 2016.
Jeg har nu mine komplette salgsdata. Men disse forespørgsler skal ikke indlæses i min model . Jeg skal bare højreklikke på hver af dem og fravælge Aktiver indlæsning .
Nu vil jeg vælge alle forespørgslerne og placere dem i en enkelt mappe for at gøre tingene mere organiserede.
Jeg kalder denne mappe Data Prep .
At få dagen forskudt
Eksempeldataene her under Data Prep vil være statiske . Det betyder, at den 1. og den sidste dato aldrig ændres .
Så jeg går ind i Sales_2016 , og jeg vil sortere kolonnen Ordredato i faldende rækkefølge for at få den sidste dato fra dette datasæt .
Sidste dato i dette datasæt er den 31. december 2016 .
Nu vil jeg oprette en ny forespørgsel.
Derefter vil jeg tjekke, hvad dagforskydningen er fra den sidste dato i datasættet til i dag. Det betyder, at jeg skal finde ud af, hvad der er i dag. For at gøre det bruger jeg funktionen DateTime.FixedLocalNow . Dette vil give mig datoen og klokkeslættet fra den maskine, jeg arbejder på.
Men jeg har ikke rigtig brug for tidsdelen her. Jeg har kun brug for datodelen af denne værdi.
Så jeg vil udtrække datoen ved hjælp af Date.From .
Så fra denne værdi vil jeg trække den sidste dato i mit datasæt . Da dataene er statiske, kan jeg bruge den iboende datoværdi . Så det er #dato og derefter reference 31. december 2016.
Nu skal jeg udtrække tallet fra denne forskel . Så jeg tilføjer Number.From og lukker det af med en parentes. Tryk derefter på enter.
Jeg omdøber dette til DayOffset .
Opsætning af dynamiske datointervaller
Jeg har også brug for dynamiske datointervaller til min datotabel. Jeg starter med at højreklikke på mappen Data Prep og oprette en ny tom forespørgsel.
Derefter arbejder jeg på startdatoen for min Dato-tabel.
Jeg vil altid have årets 1. dag som min startdato. Så jeg sætter lighedstegnet og bruger funktionen Date.StartOfYear .
Da jeg skal give det en værdi, vil jeg udligne det ved at bruge Date.AddDays .
Så bruger jeg den indre datoværdi igen og bruger den 1. dato på mit datasæt , som er 1. juni 2014.
Jeg har også brug for det antal dage, som jeg har beregnet i min DayOffset , så det vil jeg tilføje.
Når jeg trykker enter, giver det mig 1. januar 2017 . Dette bliver den 1. date i min datetabel.
Jeg omdøber det til fxStartDate .
Nu kan jeg indstille min slutdato. Jeg vil kopiere denne syntaks, jeg brugte på min startdato.
Jeg opretter en ny tom forespørgsel.
Omdøb den derefter til fxEndDate .
Så vil jeg indsætte syntaksen fra min startdato .
I stedet for StartOfYear ændrer jeg dette til EndOfYear.
Jeg vil også bruge sidste dato for mit datasæt , som er den 31. december .
Når jeg trykker på Enter, vender den tilbage den 31. december 2020 .
Oprettelse af en enkelt salgstabel
Jeg vil kombinere de 3 borde til en enkelt salgstabel . For at gøre det vil jeg oprette en ny forespørgsel.
Jeg vil kalde dette min salgstabel .
Så kombinerer jeg Salg_2014, Salg_2015 og Salg_2016 i en enkelt tabel.
Jeg ved godt, at du kan gøre det gennem båndet, men der er også mulighed for at gøre det direkte i formellinjen. Jeg vælger den anden mulighed.
Jeg starter med Table.Combine .
Table.Combine kræver en liste over tabeller . Så jeg tilføjer en listeinitialiserer , som er de krøllede parenteser , så vil jeg navngive de 3 forespørgsler . Tryk derefter på enter.
Transformering af ordredatokolonnen
Nu hvor jeg har de fleste af de elementer, jeg har brug for, vil jeg generere en vigtig del af syntaksen, som jeg senere skal bruge til at færdiggøre mit dynamiske øvelsesdatasæt.
Jeg starter med at vælge to talkolonner. Jeg kan bruge leveringsregionsindekset og produktbeskrivelsesindekset . På din ende kan du trykke enten Shift eller Ctrl ned for at vælge begge kolonner.
Under fanen Transformer vælger jeg Absolut værdi .
Hvis jeg ser på formellinjen, vil den vise funktionen Table.TransformColumns . Dette er nøglen til den endelige løsning.
Funktionen tager en liste over transformationslister . Som du kan se, er der 2 lister her indlejret inde i hinanden.
Det refererer til kolonnenavnet som tekst. Det er derfor, Delivery Region Index blev refereret her på 1. sæt.
Derefter tilføjer den et transformationstrin .
Det gør det samme i en separat liste for kolonnen Produktbeskrivelsesindeks .
Nu går jeg til .
Jeg vil ikke have absolutte værdier . Så det første jeg skal gøre er at udligne min date . Jeg opretter en funktion kaldet fxUpdateDate for at gøre det. Det kommer til at bruge den nuværende dato, som jeg indtaster som cDate .
Så vil jeg bruge Date.AddDays -funktionen igen, som også bruger cDate . Jeg vil også bruge DayOffset, jeg oprettede tidligere.
Alt hvad fxUpdateDate gør er at tage datoen. Så hvis jeg sender det videre til funktionen Table.TransformColumns , begynder den at tjekke for hver optaget dato.
Så hvis jeg for eksempel arbejder på 1. række her, vil den betragte 1. juni 2014 som cDatoen.
Og hver gang funktionen bliver kaldt, vil den tilføje det DayOffset, som jeg oprettede.
Nu dukker trinnet Table.Transform op i Calculated Absolute Value .
Jeg vil først omdøbe det og kalde det UpdateOrderDate.
Dette UpdateOrderDate- trin involverer min Table.TransformColumns, som er lig med Kilden.
Den angivne indledende tabel er leveringsregionindekset . Men der er ingen grund til at ændre det. Så jeg vil ændre den første kolonne, der henvises til, til kolonnen OrderDate .
Det står også her, at transformationen kommer til at være i absolutte værdier.
Da jeg ikke ønsker det, vil jeg ændre det til fxUpdateDate .
Typen kommer heller ikke til at være en absolut værdi, så jeg skal også ændre denne del.
Jeg ændrer det til en date .
Jeg har kun brug for én transformation, så jeg sletter den anden liste sammen med transformationstrinnet, der følger med det sæt...
…så det er kun en transformation for kolonnen OrderDate.
Fordi jeg omdøbte trinnet til beregnet absolut værdi, er jeg også nødt til at ændre det i min erklæring.
Nu viser den også UpdateOrderDate .
Så kolonnen OrderDate vil nu kalde denne funktion for hver post i Table.TransformColumns .
Når jeg ser i kolonnen Ordredato, kan jeg se, at denne er blevet opdateret.
Og hvis jeg sorterer det i faldende rækkefølge, viser det 7. juli 2020 som den aktuelle dato.
Så jeg har tænkt mig at fjerne det sorteringstrin, fordi jeg ikke rigtig har brug for det. Det gjorde jeg kun for at tjekke, om den aktuelle dato også var blevet opdateret.
Anvendelse af tidsintelligens ved hjælp af M-kode
Min model handler udelukkende om salgsdata . Da jeg har tænkt mig at lave noget tidsintelligens, ville jeg have brug for en Datotabel .
Så jeg går til. I M-code Showcase går jeg ind på Extended Date Table- emnet.
Rul op til toppen af siden og kopier hele koden .
Når jeg går tilbage til min model, vil jeg oprette en ny tom forespørgsel og indsætte den M-kode i . Tryk på Udført.
Jeg omdøber den forespørgsel til fxCalendar .
Til mine parametre vil jeg bruge den 1. januar til Startdatoen og den 31. januar til Slutdatoen . Tryk derefter på Invoke.
Once the table comes up, I’m going to rename it as Dates.
Remember that I already created the start and end dates by looking at the 1st date on the sample dataset and offsetting that by my DayOffset. So the fxStartDate here shows up as January 1st, 2017.
As for the fxEndDate, it returns the 31st of December, 2020.
I can go back to the Dates table and update that Source step there as well.
It lists the parameters in the order that they were called. The first parameter should show the start date.
I’m going to change that into fxStartDate.
I’m also going to replace the second parameter.
I’ll put in the fxEndDate.
Once I press Enter, the transformation is complete. I now have a fully up-to-date practice dataset that will always remain current.
I’ll just click on Close & Apply to lock all of those steps in.
Conclusion
As I mentioned earlier, having your own dynamic practice dataset will definitely level up your game when it comes to LuckyTemplates. It allows you to practice your skills and knowledge while pretending that you’re working on a real-life scenario.
If you want to learn more about making your start and end dates dynamic especially for a practice dataset you’re using, you can check out the LuckyTemplates Forum. There are a lot of conversations there about this as well as other relevant topics. You may even find other approaches that would work for you.
Alt det bedste,
Melissa
I denne øvelse lærer du, hvordan du kæder funktioner sammen ved hjælp af dplyr-røroperatoren i programmeringssproget R.
RANKX fra LuckyTemplates giver dig mulighed for at returnere rangeringen af et specifikt tal i hver tabelrække, der udgør en del af en liste over tal.
Lær, hvordan du adskiller en PBIX-fil for at udtrække LuckyTemplates-temaer og -billeder fra baggrunden og bruge den til at oprette din rapport!
Excel Formler Snydeark: Mellemvejledning
LuckyTemplates kalendertabel: Hvad er det, og hvordan man bruger det
Lær, hvordan du installerer programmeringssproget Python i LuckyTemplates, og hvordan du bruger dets værktøjer til at skrive koder og vise billeder.
Lær, hvordan du beregner dynamiske fortjenstmargener ved siden af LuckyTemplates, og hvordan du kan få mere indsigt ved at grave dybere ned i resultaterne.
Lær, hvordan du sorterer felterne fra kolonner med udvidet datotabel korrekt. Dette er en god strategi at gøre for vanskelige felter.
I denne artikel gennemgår jeg, hvordan du kan finde dine topprodukter pr. region ved hjælp af DAX-beregninger i LuckyTemplates, herunder funktionerne TOPN og CALCUATE.
Lær, hvordan du bruger en uønsket dimension til flag med lav kardinalitet, som du ønsker at inkorporere i din datamodel på en effektiv måde.