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 håndterer en valutakurstabel, hvor nogle dage ikke tages i betragtning . Disse dage kan være weekender eller helligdage.
Dette er muligvis ikke et problem nogle gange, især hvis den virksomhed, du forbereder en rapport for, ikke åbner i weekender og på helligdage. Men hvis de gør det, kan du ende med forkerte totaler i slutningen af måneden.
At vide, hvordan man håndterer manglende data, vil give dig mulighed for retfærdigt at sammenligne salg, hvis der er brugt flere valutaer. Der kan for eksempel være dage, hvor du tror, at det samlede salg er faldende, fordi værdien af valutaen dykkede. I virkeligheden kan det samlede salg være lavt, fordi du ikke tager højde for alle dage i den givne periode.
I dette eksempel vil jeg tage den sidste tilgængelige valutakurs og bruge den på de manglende datoer til at fylde pladsen op. Du kan se den fulde video af denne tutorial nederst på denne blog.
Indholdsfortegnelse
Angivne data i valutakurstabellen
Nedenfor er faktatabellen, som er tabellen Valutakurser . Den bruger euroen som basisvaluta.
Den viser data fra januar 2016 med tilhørende Crossrate på hver dag.
Alt ser godt ud fra 1. januar. Men da jeg rammer den 26., er næste dato i den efterfølgende række den 29.
Det betyder, at jeg mangler data fra den 27. og 28. .
Bemærk, at nogle måske foretrækker at bruge Power Query til at håndtere denne situation. Indtil videre vil jeg kun fokusere på DAX.
Lad os nu sige, at jeg vil bruge 0,920 den 27. og 28. Dette er den krydsrate, der blev brugt den 26. Hvordan gør jeg det ved hjælp af DAX?
Nogle vil måske sige, at dette nemt kan gøres i Excel. De kan til en vis grad have ret.
Men fordelen, som LuckyTemplates har i forhold til Excel, er evnen til at dykke yderligere ned i dataene fra forskellige perspektiver uden at skulle lave om eller ændre noget, hvilket højst sandsynligt ville ske i Excel.
Jeg vil vise dig alle de foranstaltninger, du skal overveje, samt de forskellige trin, jeg ville tage for at dække eventuelle manglende data fra valutakurstabellerne.
Mål for valutakurs
Lad mig først vise dig min hovedtabel. Jeg har allerede nogle data her, inklusive datoen og valutakursen for euro .
I dette tilfælde bruger valutakursen blotfungere.
Da jeg har at gøre med én valutakurs om dagen, er det nemt at bruge funktioner som SUM ,,, eller noget lignende. De data, der vises pr. række, ville give fuldstændig mening.
Det eneste problem her er, hvad der kommer til at ske med Total .
Dette viser totalen som 26.693, hvilket overhovedet ikke giver nogen mening. Det er bogstaveligt talt bare at opsummere alle dagens valutakurser. På grund af dette ville jeg være nødt til at finde en måde at gentage dagene for at få den rigtige total .
Så jeg vil se på mit mål for valutadato for at prøve at løse det.
Aktuel datomål
Personligt laver jeg altid en Current Date- måling, der bringer den dato, jeg er på, i Current Filter- konteksten.
Jeg foretrækker også at bruge. I dette eksempel vil brug af MAX -funktionen give mig 1/31 ved totalen, hvilket ville give mere mening, da det er den sidste dato, der er givet.
Sidste valutadato
Min tabel indeholder også den sidste valutadato . Det får jeg ved at brugefunktion og referer til tabellerne FactCurrencyRates og Dato .
Selvom dette viser LASTDATE- funktionen, er det også muligt at bruge MAX . Dette bruger samme forudsætning som Current Date- tabellen, men angiver et specifikt tidspunkt i forhold til Valutakurstabellen .
Når jeg scroller ned, kan jeg se, at der ikke er nogen data for den 27. og 28. i måneden.
For at adressere de manglende dage, vil jeg tale om kolonnen Senest rapporteret valutadato .
Senest rapporteret valutadato
Den seneste rapporterede valutadato vil styre, hvilken kurs der skal bruges for de manglende dage. Konceptet er, at den sidst rapporterede valutakurs vil være den samme kurs, der skal bruges på de dage med manglende data .
Da der ikke er data både den 27. og den 28. betyder det, at dataene for den 26. vil blive anvendt.
Vores eksempel viser også, at den sidste rapporterede valutadato ikke nødvendigvis er den foregående dag. Da der heller ikke er nogen data for den 27., ville jeg stadig skulle tilbage til den 26. for at finde ud af, hvilken sats jeg skal bruge den 28..
Før jeg hopper ind i målingen, der viser, hvordan dette blev gjort, så husk, at alt her sker i sammenhæng med, hvordan et filter fungerer. Jeg skal tænke over, hvilke specifikke data jeg vil fokusere på.
Da jeg er på rækken den 27. i måneden, vil jeg fjerne enhver filterhenvisning og fokusere på den 26. i stedet. Det betyder at bringeellerda de giver mig mulighed for at ændre det anvendte filter. Bliv ikke så forvirret medfunktion, som kun kan begrænse dataene yderligere.
Så her er det mål, jeg brugte for den seneste rapporterede valutadato . Jeg brugte CALCUATE til dette eksempel.
Jeg prøver altid at finde så mange variabler som muligt. Jeg skal bare se på omfanget af hver variabel, da variabler antager værdien af, hvor de er defineret .
I dette tilfælde vil jeg bruge den aktuelle dato , da jeg ved, at denne variabel ikke vil ændre sig, uanset hvilke funktioner jeg bruger.
Bemærk, at det ikke er nødvendigt at finde denne variabel. Det er bare en vane, der giver mig mulighed for at kontrollere omfanget af hver variabel, jeg vil bruge i målingen.
For at gå tilbage til målingen, hvordan fortæller jeg DAX at fjerne filtrene for den aktuelle dato og give mig den sidst registrerede valutadato ?
Først vil jeg bruge FILTER til den(DimDate) tabel.
ALL - funktionen fjerner de anvendte filtre og åbner DimDate-tabellen for mig at bruge.
Derefter bruger jeg MIN til at fortælle DAX, at jeg vil bruge den del af DimDate-kolonnen, der er lig med enten den sidste valutadato eller den aktuelle dato .
Hvad hvis den sidste valutadato og den aktuelle dato ikke er ens? Brug derefter altid den sidste valutadato .
Dette er grunden til, at mellem 1/26 og 1/27 vil foranstaltningen tage 1/26. Herfra vil den rigtige dato blive anvendt på valutakurstabellen for at få den sidst rapporterede valutakurs .
Senest rapporterede valutakurs
Lad mig trække den sidste rapporterede valutakurs ind i min tabel.
Du vil se, at den 27. og 28. nu bruger 0,9200 som valutakurs, da det er den samme kurs, der blev brugt den 26.
Nedenfor er det mål, jeg brugte til den sidst rapporterede valutakurs .
Igen starter jeg altid med at definere nogle variabler. I dette tilfælde bruger jeg Valuta valgt og Senest rapporteret valutadato .
Jeg vil bruge Valuta valgt, fordi jeg her har at gøre med forskellige valutaer. Det er derfor, jeg er nødt til at finde ud af, hvilken specifik valuta der evalueres på et givet tidspunkt.
I dette eksempel kan de forskellige valutaer tilgås ved hjælp af den angivne slicer.
Det behøver selvfølgelig ikke være en pålægsmaskine, der er i brug. Det kan også komme fra et bord eller en visualisering. Det vigtige er, at der er et filter, der giver dig mulighed for at se dataene i forskellige valutaer.
Hvad angår LastReportedDate , er det det samme som Senest Rapporterede Valutadato , som jeg talte om tidligere.
Til Rate- variablen brugte jegfungere.
Jeg henter krydskursen fra faktatabellen for Valutakurser .
Da jeg har mange valutaer i en enkelt tabel, kan jeg ikke bare bruge datoen som et enkelt referencepunkt. Det skal være en kombination af den rigtige valuta og den rigtige dato.
Det er derfor, jeg også refererer til, at valutasymbolet er lig med den valgte valuta .
Jeg henviser også til LastReportedDate .
Det er derfor, når man ser på tabellen, viser den den 26. tre gange, før den hopper til den 29.
Konverteret salg ved hjælp af sidst rapporterede kurs versus ved hjælp af nuværende dato
Jeg er nu på det sidste stykke, som involverer konvertering af salget ved hjælp af den seneste rapporterede valutakurs .
Dybest set tager målingen bare denne sidst rapporterede valutakurs og multiplicerer den med basismålet , som i dette tilfælde er Samlet salg .
Når denne foranstaltning er anvendt, vil du se, at disse to datoer ender med at være tomme. Det betyder, at der ikke er salg på disse datoer .
Det viser sig også, at der er salg den 27. og 28. (hvor der tidligere ikke var valutadata).
Siden jeg henviste til den sidst indberettede valutakurs , er disse tal blevet omregnet til euro.
Denne gang vil jeg vise dig det konverterede salg ved hjælp af den aktuelle dato.
Denne gang ser den kun på den aktuelle dato i stedet for at tage den sidste rapporterede dato i betragtning.
Når jeg først har sat det mål i tabellen i en anden kolonne, viser det kun tomme mellemrum den 27. og 28.
Ved at sammenligne det konverterede salg mellem at bruge den sidste rapportrate i forhold til at bruge den aktuelle dato , viser totalen en enorm forskel.
Hvor det konverterede salg med den sidste rapporterede dato viser i alt over 4 millioner, viser det konverterede salg med den aktuelle dato kun 3,8 millioner i alt.
Det er derfor, det er meget vigtigt at forstå, hvilken variabel du bruger. Hvis du ser på totalen, ser det kun ud til, at euroen fik et stort hit og trak værdien ned. Men i virkeligheden skyldes faldet i Total ikke-rapporterede data i Valutakurstabellen.
Oprydning af data
Nu hvor jeg har udfyldt de manglende data, vil jeg rydde op i tabellen.
Jeg har lige tilføjet en kolonne med formateret salg her, der tydeligt viser tallene i euro.
Siden jeg gik igennem så mange trin, har jeg samlet en hel del kolonner her.
Men ikke alle disse er nødvendige for at præsentere dataene. Så jeg vil gå videre og slippe af med dem ved at fjerne dem under værdiruden .
Når disse er blevet fjernet, ender jeg med en renere tabel med kun de nødvendige data, der vises.
Bemærk, at jeg stadig kan ændre valuta ved at bruge sliceren her til højre.
For at gøre mit bord mere grundigt, tilføjer jeg alle de andre valutaer ved at deaktivere Single Select- indstillingen.
Dette vil vise mine tal i USD, Euro og britiske pund.
Jeg ser også nogle tomme felter her, der repræsenterer de dage, hvor der ikke er noget salg.
Jeg fjerner dem ved at slå " Vis elementer uden data " fra.
Nu indeholder tabellen kun rækker, der repræsenterer datoerne med salg.
Dette giver mig en god sammenligning af tallene baseret på de forskellige valutaer.
Totalerne viser også de korrekte tal, fordi jeg brugteat gentage hver af rækkerne.
Dette er meget vigtigt. Hvis du ikke bruger SUMX , ender det med blot at tilføje alle kolonnerne uden at tænke på, om den rigtige valutakurs bliver brugt.
Konklusion
Som jeg nævnte tidligere, er dette ikke nødvendigvis den eneste måde at håndtere manglende data på. Der er faktisk et væld af andre måder at gøre dette på.
I nogle tilfælde kan du f.eks. bruge dataene fra begyndelsen af måneden og anvende det samme tal i hele din valutakurstabel. Jeg vil diskutere disse andre tilgange i fremtiden i separate blogs.
Indtil videre brugte jeg denne tilgang, fordi det giver mest mening for mig at bruge den sidste rapporterede sats. Jeg tror, det er den mest intuitive mulighed.
En ting jeg også gerne vil understrege er behovet for at forstå alt ud fra en filterkontekst. Hvordan overskriver jeg filteret? Hvordan henter jeg de sidst indberettede data? Disse vil hjælpe dig med at forstå, hvordan du får de rigtige tal i sidste ende.
Alt det bedste,
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.