Pipe In R: Anslutningsfunktioner med Dplyr
I den här handledningen kommer du att lära dig hur du kopplar ihop funktioner med hjälp av dplyr-röroperatorn i programmeringsspråket R.
Då och då kommer vi att behöva tillgången till en anpassad visualisering av ett stapeldiagram eller linjediagram som ger en möjlighet att rita diagrammet antingen veckovis, månadsvis, kvartalsvis eller årligen. I den här handledningen ska jag demonstrera hur du kan skapa en dynamisk tidsskala, med hjälp av beräknade kolumner som kan låta dig ändra granularitetsnivån beroende på ditt datum eller tid. Du kan se hela videon av denna handledning längst ner på den här bloggen.
En tidsskala låter dig visa en granulär detaljnivå vid den viktigaste aktuella informationen. Det visar mindre granularitet för tidigare datum.
Detta är användbart i många fall. Jag har sett detta i tillverkningen, till exempel vill de få en lång historia av informationen. Detta gör att de kan visa mycket mer information på skärmen och få hela historien om vad som händer. Men för det aktuella kvartalet tillåter det dem att se exakt vad som händer på en detaljnivå per vecka.
Innehållsförteckning
Hur man skapar en dynamisk tidsskala
Som du kan se här har jag min R10 Date-tabell, där jag bara använder kalenderfunktionen för 2016 till idag. Och sedan genererar jag slumpmässigt några lagernivåer.
Det första steget är att skapa detta IsCurrentQuarter . Det finns olika sätt att göra detta. I det här måttet tar jag tag i vad som är datum idag, vad som är mitt innevarande år och mitt nuvarande kvartal. Och sedan tar jag tag i året för den nuvarande raden jag är på, kör fjärdedelen av den nuvarande raden jag är på.
Om året matchar innevarande år och kvartalet matchar innevarande kvartal, returnera sant. Annars, returnera falskt. Så det är allt det här gör. För vilket datum som helst under innevarande kvartal, kommer det att återgå till sant. När vi passerar innevarande kvartal kommer vi att börja returnera falskt.
Nästa steg är att skapa vad jag kallar DTS-kolumnen , vilket är ganska enkelt. Allt vi gör är att säga att om det är det aktuella kvartalet kommer vi att returnera ett värde som börjar med bokstaven W för vecka. Vi tar veckonumret för den aktuella radens datum, och vi tar årtalet, och sedan lägger vi det i detta format, t.ex. W16-2022.
Och sedan när vi börjar gå tillbaka förbi det nuvarande kvartalet, om det inte är i det aktuella kvartalet, så returnerar vi bara Q för kvartalet, sedan kvartalet och året. Så vi kommer att ha Q1-2022, Q2-2022, etc.
Det sista steget är att vi måste sortera detta rätt. Vi kommer att göra något liknande och vi kommer att skapa den här DTS-sorteringskolumnen . Och återigen, vi kollar bara om det är innevarande år. Om så är fallet returnerar vi ett värde på bara år, kvartal och sedan veckonummer. Om det inte är i innevarande kvartal återkommer vi bara året och kvartalet.
Sedan skulle vi ställa in denna sortering efter kolumn för att vara vår DTS Sortera efter kolumn.
När vi väl har gjort det kan vi använda DTS-kolumnen på vår X-axel. Så här är vår X-axel DTS . Vår Y-axel är. Det andra trevliga med att ha den beräknade kolumnen är att vi kan använda den för att till exempel skilja färgerna på det här kolumndiagrammet. Så jag kan använda IsCurrentQuarter som min legend.
Slutsats
Du kan utöka denna dynamiska tidsskalateknik med några ytterligare kolumner. Låt oss säga att om det är den aktuella veckan vill du visa det efter dag. Om det är den aktuella månaden, visa den per vecka. Om det är innevarande kvartal, visa det per månad, och om det är innevarande år, visa det per kvartal. Och sedan om det har gått år sedan, bara dyka upp ett år, till exempel. Så du kan ha många olika varianter på hur du kan göra detta.
Om du lade till ytterligare kolumner skulle du behöva ytterligare några kolumner för att få olika granularitetsnivåer, som dag, månad, vecka och år. Men alla är möjliga med samma teknik, du behöver bara lite extrakoda.
Förmodligen skulle vi ersätta denna IF med en SWITCH -sats för annars kommer vi att komma in i Nested IFs och ingen gillar dem.
En nackdel med att implementera detta som kvartal är att du lägger till data i din datamodell och alla missförhållanden som folk hävdar med beräknade kolumner (vilket jag håller med om, varav vissa inte).
Men det är inte så illa. Det finns ingen hög nivå av kardinalitet med dessa extra kolumner som vi har här. Detta har bara ett eller två värden. Det är inte så att vi lägger till tusentals unika föremål med dessa olika kolumner som vi har.
Detta är förmodligen det enklaste sättet att implementera denna dynamiska tidsskala. Jag hoppas att detta har varit värdefullt. Kolla in länkarna nedan för mer relaterat innehåll.
Med vänliga hälsningar!
Greg
**** * Relaterade supportforuminlägg *****
I den här handledningen kommer du att lära dig hur du kopplar ihop funktioner med hjälp av dplyr-röroperatorn i programmeringsspråket R.
RANKX från LuckyTemplates låter dig returnera rankningen av ett specifikt nummer i varje tabellrad som utgör en del av en lista med nummer.
Lär dig hur du tar isär en PBIX-fil för att extrahera LuckyTemplates-teman och bilder från bakgrunden och använda den för att skapa din rapport!
Excel Formler Fuskblad: Mellanvägledning
LuckyTemplates Kalendertabell: Vad är det och hur man använder det
Lär dig hur du installerar programmeringsspråket Python i LuckyTemplates och hur du använder dess verktyg för att skriva koder och visa bilder.
Lär dig hur du beräknar dynamiska vinstmarginaler vid sidan av LuckyTemplates och hur du kan få fler insikter genom att gräva djupare i resultaten.
Lär dig hur du sorterar fälten från en utökad datumtabells kolumner korrekt. Detta är en bra strategi att göra för svåra fält.
I den här artikeln går jag igenom hur du kan hitta dina toppprodukter per region med hjälp av DAX-beräkningar i LuckyTemplates, inklusive TOPN- och CALCULATE-funktionerna.
Lär dig hur du använder en skräpdimension för flaggor med låg kardinalitet som du vill infoga i din datamodell på ett effektivt sätt.