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.
Låt oss ta en ny titt på problemet som diskuteras i , som dynamiskt jämförde de första N arbetsdagarna i varje månad. Det här problemet var baserat på en fråga från en LuckyTemplates-medlem på vårt forum, där han dynamiskt ville titta och jämföra de första 5, 10, 15 och 20 fakturerbara dagarna (de icke-helger och icke helgdagar) för en given månad med föregående månad.
Istället för att använda power query kommer vi med en DAX-kodningsspråkslösning. Du kan se hela videon av denna handledning längst ner på den här bloggen.
I den första videon kom jag på en lösning för energifrågan om hur man löser det här problemet. Men så kom en av våra LuckyTemplates-experter, Antriksh Sharma, på en briljant effektiv åtgärd som också är värd att ta en djupare dykning in i. Vi kommer att diskutera några av de tekniker han använde för att utveckla ett mått, som kommer att förse dig med ytterligare verktyg i din DAX-verktygslåda.
Det gjorde det verkligen för mig och för några av de andra experterna som tittade på detta. Jämförelsen av jämförbara arbetsdagar över månader är ett värdefullt mönster i allmänhet som kan användas i många situationer.
Låt oss dyka in i maktfrågan och ta en titt på vad Antriksh gjorde här. Vi har månad och år , total försäljning och slutligen den totala försäljningen för N arbetsdagar som vi valde med hjälp av power-query baserat på vad-om-parametern som vi utvecklade.
Antriksh tog ett helt annat tillvägagångssätt, där han använde en chockerande kort åtgärd för att lösa hela detta problem. Det första jag märkte med detta var användningen av kommandot.
Detta är en DAX-funktion som jag inte använder så ofta, men som passar perfekt för den här typen av problem. Om vi tar en titt på SQL BI DAX-guiden står det att GENERATE-funktionen är en tabellfunktion som använder två olika tabeller som indata, och sedan gör en motsvarighet till SQL-kommandot CROSS APPLY.
Så den tar en bastabell (Tabell1) och itererar på den, och tar sedan ett andra tabelluttryck och utvärderar det för varje rad i den första tabellen, och återgår sedan till tabellen som utdata.
Låt oss ta på oss Antrikshs mått och släppa det i bordet. Vi kan se att den ger exakt samma resultat som den power query-lösning som vi gjorde förra gången. Så det är bra och validerar båda måtten ganska bra.
Låt oss ta isär denna åtgärd. Det första filtret som används här är Dates[IsBusinessDay] = TRUE. Detta tar bort alla icke-helger och helgfria datum baserat på den utökade datumtabellen IsBusinessDay-fältet.
Vi pratar mycket mer om detta i , där vi också gick igenom hur man knyter det till vårt julbord.
Den intressanta delen av detta kommer verkligen i de två tabellingångarna. Den första tabellen är bara en kolumntabell i fältet Månad och år i tabellen Datum.
Men den andra tabellinmatningen är där det intressanta händer. Antriksh använde a och använde sedan vår dynamiska parameter som antalet rader i TOPN.
Måttet Total försäljning kopplas till den andra tabellen och tillämpas sedan på den första tabellen.
Innehållsförteckning
Förstå en komplex åtgärd med hjälp av DAX-kodningsspråk
Ett av de enklaste sätten att ta reda på vad en komplex åtgärd som denna gör är att gå in i tabellredigeraren . Vi kan ta en titt på detta uttryck och ta reda på vad detta TOPN-uttryck gör först.
Låt oss kopiera TOPN-delen och skapa en ny. Kom ihåg att DAX-frågor börjar med EVALUATE.
När vi klistrar in TOPN-delen ser vi att detta drar de första 5 datumen från försäljningsordertabellen. Det finns en tabell i TOPN som är sammansatt av värdena för alla orderdatum i försäljningstabellen.
Denna TOPN-funktion tar värdet på what-if-parametern (som i det här fallet är 5) och tillämpar det på fältet för försäljningsorderdatum. Sedan drar den de första 5 datumen inom filterkontexten i stigande ordning baserat på det fältet.
Med tanke på att det inte finns något extra filterkontext, är det bara att dra de första 5 datumen från hela tabellen.
Kolumnen @Sales lägger bara till den totala försäljningen inom rätt filterkontext till TOPN-tabellen.
Hittills har vi den första tabellen för månaden och året, den andra tabellen i TOPN för de första N-datumen från försäljningstabellen och sedan den totala försäljningen i samband med det.
Använda tabellen GENERATE i DAX-kodningsspråk
Låt oss ta en titt på vad denna GENERATE-tabell gör. Vi hoppar tillbaka till Tabular Editor och skapar en ny DAX-fråga.
Vi börjar som vi alltid gör med EVALUATE, klistra in GENERATE-delen av koden och klicka på 5.
Vi kan se att för varje rad i den första tabellen itereras och sammanfogas med de 5 raderna från TOPN-tabellen som utvärderas i sammanhang med @Sales-funktionen.
Det har tagit de första 5 arbetsdagarna i april, de första 5 arbetsdagarna i maj, de första 5 arbetsdagarna i juni och så vidare tills det kommer till slutet av den första tabellen.
Det är precis vad vi behöver, och nu blir det en relativt enkel fråga att lägga till dessa värden. Vi har resultatet (som är tabellvariabeln för GENERATE-resultaten) och sedan måste vi summera @Sales-funktionen.
I sammanhanget summerar vi nu de första 5 arbetsdagarna i april, de första 5 arbetsdagarna i maj, och så vidare tills vi kommer ner till vårt totala 23 737 430 USD, i vilket fall det inte har någon kontext av månad och år att fungera .
Detta summerar hela kolumnen @Sales och ger oss exakt samma summa som vi hade i vår lösning för power-query.
Du kan se att om vi ändrar slicern till 10 får vi dynamiskt samma resultat med DAX-kodningsspråk som vi gjorde i power-frågan.
Vi har också stapeldiagrammet längst ner som justeras dynamiskt för att återspegla de ändringar vi har gjort.
Justera dynamiskt mättitel
Det finns ytterligare ett knep jag ville visa dig. Du kan skapa en dynamisk justering på din vad-om-parameter och binda den dynamiskt till en måtttitel.
Om vi till exempel ändrar utsnittet överst till 15, kommer det dynamiskt att ändra namnet på måttet längst ned till Total försäljning för de första 15 arbetsdagarna i varje månad .
Det finns ett enkelt sätt att göra detta i DAX med . Vi tar i princip bara tre strängar. Den första är Total Sales for First , och sedan sammanfoga det med värdet som vi skördar från parametern what-if, och sedan bara knyta det till resten av titeln.
Sedan går vi in i det visuella, går till villkorlig formatering av titeln och klickar på fx .
Vi formaterar efter fältvärde och väljer det dynamiska titelmåttet. Detta kommer att ändra valet av vad-om-parametern.
Slutsats
Det vi har nu är en komplett lösning med DAX-kodningsspråk. Vi har diskuterat ett riktigt kreativt och effektivt sätt att göra det med funktionen GENERERA. Jag vill tacka Antriksh för att han delade med sig av hans briljanta DAX-kunskap med oss. Jag lärde mig mycket när jag gick igenom hans DAX-lösning, och jag hoppas att du också gjorde det.
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.