Pipe In R: Koblingsfunksjoner med Dplyr
I denne opplæringen lærer du hvordan du kobler funksjoner sammen ved å bruke dplyr-røroperatøren i programmeringsspråket R.
Jeg skal vise deg hvordan du holder praksisdatasettet oppdatert hver gang du oppdaterer . Du kan se hele videoen av denne opplæringen nederst på denne bloggen.
Hvis du virkelig ønsker å forbedre DAX-ferdighetene dine, er måten å bruke det på og sette det i praksis. Og for å gjøre det, trenger du et øvelsesdatasett som hjelper deg med å visualisere og jobbe med mulige scenarier i det virkelige liv.
Problemet med praksisdatasett er at dataene vanligvis er statiske . For at du skal øve effektivt, må du gi inntrykk av at dataene er live.
Innholdsfortegnelse
Sette opp en filbane for praksisdatasettet
For eksempeldataene mine har jeg en Excel-fil som inneholder salgsdata fra 2014, 2015 og 2016.
Dette er dataene jeg trenger å oppdatere.
Dokumentplasseringen finner du her på verktøylinjen for hurtigtilgang.
Jeg trenger det for å sette opp en parameter for filbanen min. Så jeg skal kopiere dokumentplasseringen.
Det er et tilgangspunkt til hurtigtilgangsverktøylinjen på høyre side av den.
Når jeg trykker på den, får jeg opp denne skjermen.
Så jeg går for Alle kommandoer og velger deretter Dokumentplassering . Legg det til i hurtigtilgangsverktøylinjen og trykk OK.
Nå skal jeg gå inn påfor å lage parameteren som vil holde filbanen min. Dette trinnet er viktig fordi det lar alle spørringene inne i modellen gjenopprettes dersom en annen bruker endrer filplasseringen.
Så jeg oppretter en ny parameter .
Jeg skal kalle det FileLocation .
Under type skal jeg velge Tekst . Og for Current Value , limer jeg inn dokumentplasseringen jeg kopierte tidligere.
Jeg skal lage en ny spørring.
Deretter velger jeg eksempeldataene jeg skal bruke som mitt praksisdatasett.
En rekke forskjellige tabeller vil komme opp her siden jeg har Salgsdata fra 2014, 2015 og 2016. Jeg trenger bare å velge den første, som er Sales_2014 .
Nå som jeg har valgt Sales_2014-dataene, er det på tide å endre den hardkodede filplasseringen til en dynamisk filplassering .
Jeg går inn i Advanced Editor og velger alt som er relatert til filplasseringen .
Deretter vil jeg endre det til FileLocation-parameteren jeg opprettet tidligere.
Deretter trykker jeg på Ferdig for å låse disse endringene i Sales_2014-spørringen.
Opprette Data Prep-mappen
Når jeg ser på de anvendte trinnene for Sales_2014-søket, klikker jeg på navigasjonstrinnet . Dette viser meg at det refererer til kildetrinnet .
Den refererer også til Sales_2014 som vises som en tabell . Den viser også at den trekker ut data fra Data-kolonnen.
La meg nå se på kildetrinnet neste .
Kildetrinnet viser meg alt som ligger i Excel-filen min . Hvis jeg sjekker disse koordinatene, ser jeg Sales_2014 , og under Kind står det Tabell .
Når jeg slår opp datakolonnen, viser den tabellobjektet som ble trukket ut.
Så jeg kan duplisere denne spørringen for å komme opp med 2015-dataene . For å gjøre det trenger jeg bare å høyreklikke på Sales_2014 og deretter velge Dupliser.
Deretter går jeg tilbake til navigasjonstrinnet.
Jeg vil endre det året fra 2014 til 2015.
Jeg vil også gi nytt navn her under Egenskaper. Jeg kaller det Sales_2015.
Denne gangen skal jeg duplisere Sales_2015.
Deretter går jeg tilbake til navigasjonstrinnet og endrer året til 2016.
Jeg har nå mine fullstendige salgsdata. Men disse spørringene skal ikke lastes inn i modellen min . Jeg trenger bare å høyreklikke på hver av dem og fjerne merket for Aktiver innlasting .
Nå skal jeg velge alle søkene og plassere dem i en enkelt mappe for å gjøre ting mer organisert.
Jeg kaller denne mappen Data Prep .
Å få dagen forskjøvet
Eksempeldataene her under Data Prep kommer til å være statiske . Dette betyr at den første og siste datoen aldri endres .
Så jeg går inn i Sales_2016 , og jeg skal sortere ordredato- kolonnen i synkende rekkefølge for å få siste dato fra dette datasettet .
Siste dato i dette datasettet er 31. desember 2016 .
Nå skal jeg lage en ny spørring.
Deretter skal jeg sjekke hva dagforskyvningen er fra siste dato i datasettet til i dag. Dette betyr at jeg må finne ut hva i dag er. For å gjøre det bruker jeg funksjonen DateTime.FixedLocalNow . Dette vil gi meg dato og klokkeslett fra maskinen jeg jobber med.
Men jeg trenger egentlig ikke tidsdelen her. Jeg trenger bare datodelen av denne verdien.
Så jeg skal trekke ut datoen ved å bruke Date.From .
Så fra denne verdien skal jeg trekke den siste datoen i datasettet mitt . Siden dataene er statiske, kan jeg bruke den indre datoverdien . Så det er #dato og referanse 31. desember 2016.
Nå må jeg trekke ut tallet fra denne forskjellen . Så jeg legger til Number.From og lukker det med en parentes. Trykk deretter på enter.
Jeg vil gi dette nytt navn til DayOffset .
Sette opp dynamiske datoperioder
Jeg trenger også dynamiske datoperioder for datotabellen min. Jeg starter med å høyreklikke på Data Prep-mappen og lage en ny blank spørring.
Deretter skal jeg jobbe med startdatoen for datotabellen min.
Jeg vil alltid ha den første dagen i året som min startdato. Så jeg setter likhetstegnet og bruker funksjonen Date.StartOfYear .
Siden jeg må gi den en verdi, skal jeg oppveie den ved å bruke Date.AddDays .
Deretter bruker jeg den indre datoverdien igjen og bruker den første datoen på datasettet mitt , som er 1. juni 2014.
Jeg trenger også antall dager som jeg beregnet i DayOffset , så jeg skal legge til det.
Når jeg trykker enter, gir det meg 1. januar 2017 . Dette kommer til å være den første datoen i datotabellen min.
Jeg vil gi det nytt navn til fxStartDate .
Nå kan jeg sette opp sluttdatoen min. Jeg skal kopiere denne syntaksen jeg brukte på startdatoen min.
Jeg oppretter et nytt tomt søk.
Gi den nytt navn til fxEndDate .
Så skal jeg lime inn syntaksen fra startdatoen min .
I stedet for StartOfYear , vil jeg endre dette til EndOfYear.
Jeg kommer også til å bruke siste dato for datasettet mitt , som er 31. desember .
Når jeg trykker på enter, kommer den tilbake 31. desember 2020 .
Opprette en enkelt salgstabell
Jeg skal kombinere de 3 bordene til én enkelt salgstabell . For å gjøre det, skal jeg lage en ny spørring.
Jeg vil kalle dette salgstabellen min .
Deretter kombinerer jeg Salg_2014, Salg_2015 og Salg_2016 i én enkelt tabell.
Jeg vet at du kan gjøre det gjennom båndet, men det er også et alternativ å gjøre det direkte i formellinjen. Jeg velger det andre alternativet.
Jeg begynner med Table.Combine .
Table.Combine krever en liste over tabeller . Så jeg legger til en listeinitialiserer , som er de krøllete parentesene , så skal jeg nevne de tre spørringene . Trykk enter etter det.
Transformering av ordredatokolonnen
Nå som jeg har de fleste elementene jeg trenger, skal jeg generere en nøkkeldel av syntaksen som jeg skal bruke senere for å fullføre mitt dynamiske praksisdatasett.
Jeg starter med å velge to tallkolonner. Jeg kan bruke indeksen for leveringsområde og produktbeskrivelsesindeksen . På din side kan du trykke ned enten Shift eller Ctrl for å velge begge kolonnene.
Under Transform- fanen velger jeg Absolutt verdi .
Hvis jeg ser på formellinjen, vil den vise funksjonen Table.TransformColumns . Dette er nøkkelen til den endelige løsningen.
Funksjonen tar en liste over transformasjonslister . Som du kan se, er det 2 lister her nestet inne i hverandre.
Den refererer til kolonnenavnet som tekst. Det er derfor Delivery Region Index ble referert her på 1. sett.
Deretter legger den til et transformasjonstrinn .
Den gjør det samme i en egen liste for kolonnen Produktbeskrivelsesindeks .
Nå går jeg til .
Jeg vil ikke ha absolutte verdier . Så det første jeg skal gjøre er å utligne daten min . Jeg lager en funksjon kalt fxUpdateDate for å gjøre det. Den kommer til å bruke gjeldende dato, som jeg skriver inn som cDate .
Deretter skal jeg bruke Date.AddDays- funksjonen igjen, som også bruker cDate . Jeg vil også bruke DayOffset jeg opprettet tidligere.
Alt som fxUpdateDate gjør er å ta datoen. Så hvis jeg sender det til Table.TransformColumns -funksjonen, begynner den å sjekke for hver registrert dato.
Så hvis jeg for eksempel jobber med 1. rad her, vil den vurdere 1. juni 2014 som cDatoen.
Og hver gang funksjonen blir kalt, kommer den til å legge til DayOffset som jeg opprettet.
Nå vises Table.Transform-trinnet i Calculated Absolute Value .
Jeg skal gi det nytt navn først og kalle det UpdateOrderDate.
Dette UpdateOrderDate- trinnet involverer Table.TransformColumns som tilsvarer kilden.
Den første tabellen som er oppført er leveringsregionindeksen . Men det er ikke nødvendig å endre det. Så jeg skal endre den første kolonnen det refereres til til OrderDate- kolonnen.
Det står også her at transformasjonen kommer til å være i absolutte verdier.
Siden jeg ikke vil ha det, skal jeg endre det til fxUpdateDate .
Typen kommer heller ikke til å være en absolutt verdi, så jeg må også endre denne delen.
Jeg endrer det til en date .
Jeg trenger bare én transformasjon, så jeg sletter den andre listen sammen med transformasjonstrinnet som følger med det settet...
…så det er bare én transformasjon for OrderDate-kolonnen.
Fordi jeg ga nytt navn til trinnet for Beregnet absolutt verdi, må jeg også endre det i erklæringen min.
Nå viser den også UpdateOrderDate .
Så OrderDate-kolonnen vil nå kalle denne funksjonen for hver post i Table.TransformColumns .
Når jeg ser på ordredato-kolonnen, kan jeg se at denne er oppdatert.
Og hvis jeg sorterer det i synkende rekkefølge, viser det 7. juli 2020 som gjeldende dato.
Så jeg kommer til å fjerne det sorteringstrinnet fordi jeg egentlig ikke trenger det. Jeg gjorde det bare for å sjekke om gjeldende dato også var oppdatert.
Bruk av tidsintelligens ved å bruke M-kode
Min modell handler om salgsdata . Siden jeg skal gjøre litt tidsintelligens, trenger jeg en datotabell .
Så jeg går til. I M-code Showcase går jeg inn på Extended Date Table- emnet.
Rull opp til toppen av siden og kopier hele koden .
Når jeg går tilbake til modellen min, skal jeg lage en ny tom spørring og lime inn den M-koden i . Trykk på Ferdig.
Jeg vil gi nytt navn til den spørringen til fxCalendar .
For parametrene mine bruker jeg 1. januar for Startdato og 31. januar for Sluttdato . Trykk deretter på Invoke.
Når tabellen kommer opp, skal jeg gi den nytt navn til Datoer .
Husk at jeg allerede har opprettet start- og sluttdatoene ved å se på den første datoen på eksempeldatasettet og utligne det med DayOffset. Så fxStartDate her vises som 1. januar 2017 .
Når det gjelder fxEndDate, returnerer den 31. desember 2020 .
Jeg kan gå tilbake til Datoer- tabellen og oppdatere det kildetrinnet der også.
Den viser parameterne i den rekkefølgen de ble kalt. Den første parameteren skal vise startdatoen .
Jeg skal endre det til fxStartDate .
Jeg skal også erstatte den andre parameteren.
Jeg legger inn fxEndDate .
Når jeg trykker på Enter, er transformasjonen fullført. Jeg har nå et fullstendig oppdatert praksisdatasett som alltid vil være oppdatert.
Jeg klikker bare på Lukk og bruk for å låse alle disse trinnene.
Konklusjon
Som jeg nevnte tidligere, vil det å ha ditt eget dynamiske øvelsesdatasett definitivt øke spillet ditt når det kommer til LuckyTemplates. Den lar deg øve på dine ferdigheter og kunnskaper mens du later som om du jobber med et virkelighetsscenario.
Hvis du vil lære mer om å gjøre start- og sluttdatoene dine dynamiske, spesielt for et øvingsdatasett du bruker, kan du sjekke LuckyTemplates-forumet. Det er mange samtaler der om dette så vel som andre relevante temaer. Du kan til og med finne andre tilnærminger som vil fungere for deg.
Beste ønsker,
Melissa
I denne opplæringen lærer du hvordan du kobler funksjoner sammen ved å bruke dplyr-røroperatøren i programmeringsspråket R.
RANKX fra LuckyTemplates lar deg returnere rangeringen til et spesifikt tall i hver tabellrad som utgjør en del av en liste med tall.
Lær hvordan du demonterer en PBIX-fil for å trekke ut LuckyTemplates-temaer og bilder fra bakgrunnen og bruke den til å lage rapporten din!
Excel Formulas Cheat Sheet: Mellomveiledning
LuckyTemplates-kalendertabell: Hva er det og hvordan du bruker det
Lær hvordan du installerer programmeringsspråket Python i LuckyTemplates og hvordan du bruker verktøyene til å skrive koder og vise visuelle elementer.
Lær hvordan du beregner dynamiske fortjenestemarginer ved siden av LuckyTemplates og hvordan du kan få mer innsikt ved å grave dypere inn i resultatene.
Lær hvordan du sorterer feltene fra kolonner med utvidet datotabell på riktig måte. Dette er en god strategi å gjøre for vanskelige felt.
I denne artikkelen går jeg gjennom hvordan du kan finne de beste produktene dine per region ved å bruke DAX-beregninger i LuckyTemplates, inkludert TOPN- og CALCUATE-funksjonene.
Lær hvordan du bruker en søppeldimensjon for flagg med lav kardinalitet som du ønsker å inkludere i datamodellen din på en effektiv måte.