DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

I dette blogindlæg vil vi tage et kig på et spørgsmål, der blev stillet på LuckyTemplates forum og bruge en LuckyTemplates-teknik i DAX-sproget til at løse det. Hvis du vil følge med og downloade filerne, skal du blot besøge LuckyTemplates forum og gå til . Du kan se den fulde video af denne tutorial nederst på denne blog.

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

For at forklare det scenarie, vi skal dække, har vi en simpel tabel som eksempel. I den første kolonne har vi Økonominiveau 1 . I den anden kolonne har vi en dato, der hedder Fuldført. I den sidste kolonne har vi kombinationen af ​​økonominiveau og afsluttet dato, som vi vil navngive Omsætning .

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Så har vi en udstikker til dato og kundenavn .

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Det, vi ønsker at gøre i en bestemt tidsperiode, er at identificere de tre bedste datoer, der ikke er nul. Og så vil vi på de tre bedste datoer identificere det økonomiske niveau.

I den første version af foranstaltningen listede jeg de datoer, der er mindre end den 29/4/2021, hvor vi har en vis indtægt.

Og på disse datoer ønsker vi at identificere de økonomiske niveauer, der har givet nogle indtægter. Jeg vil forklare dig, hvordan vi kan opnå den beregning.

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Indholdsfortegnelse

Datamodellering

Før du skriver den faktiske DAX, lad os tage et hurtigt kig på datamodellen, som indeholder flere tabeller. Vi er kun interesserede i datotabellen , datatabellen , jobkategoritabellen og kundetabellen .

Bemærk, at kundetabellen ikke er rigtig vigtig, fordi den kun bruges inde i en skæremaskine.

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Indtægtsmålet bliver beregnet i datatabellen. Jobkategorien indeholder det økonomiske niveau, som vi har på matricen. Så bruger vi Dato-kolonnen fra Dato-tabellen i vores slicer.

Version 1

Lad os slippe af med alt fra matrixen og starte fra bunden. Jeg vil oprette en ny foranstaltning og kalde den V1, fordi dette bliver version 1. Vi vil også se på to andre varianter.

Forberedelse af filterkonteksten

Den første ting, vi skal gøre, er at hente alle værdierne af det økonomiske niveau fra filterkonteksten. Vi opretter en og navngiver den som FinancialLevelInFilterContext .

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

For at hente værdierne fra filterkonteksten skal vi bruge tabellen på Jobkategorien, der indeholder kolonnen finansniveau. Så skal vi oprette en anden variabel og navngive den Resultat . Så skriv , og luk den også.

I det første argument har vi et udvalg over datoudsnitteren. På disse datoer ønsker vi at identificere de datoer, der ikke har et 0 og i det mindste har en vis omsætning.

Hvis du vil have adgang til alle de datoer, der er valgt i den slicer, skal vi bruge tabellen over Dato.

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Og da vi har det økonomiske niveau på matrixen, skal vi også sikre os, at vi fjerner den særlige værdi fra filterkonteksten. Vi kan bruge kategorien over Job og derefter skrive Økonominiveau 1.

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Nu hvor vores filterkontekst er forberedt, kan vi skrive den inderste beregning for BEREGN. Først erklærer vi en variabel, som vil være en kombination af finansniveauet og datokolonnen, som vi har set i den første tabel.

Derefter vil vi bruge og bruge tabellen Data til at opsummere disse to tabeller: Jobkategori og Dato-tabellen.

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Dette vil give kombinationen af ​​det økonomiske niveau og datokolonnen, der findes i datatabellen. Så skal vi oprette en anden variabel, hvor vi gemmer værdien af ​​indtægtsrækken for den første variabel, vi har oprettet.

Navnet på denne variabel vil være FinancialLevelAndDatesWithRevenue . Koden for denne variabel vil være over den forrige variabel. Derefter vil vi oprette en virtuel kolonne, der vil være Indtægt for at starte kontekstovergangen. Så for hver række af denne variabel har vi tildelt omsætningen.

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Denne tabel indeholder omsætningen, som også har nul. Vi skal filtrere de rækker fra med nul. For at gøre dette kan vi oprette en anden variabel og navngive den som RemoveZeroes .

Vi bruger på den forrige variabel, og sørg derefter for, at omsætningen ikke er lig med nul. Den kan være større end nul eller mindre end nul, men bør ikke være strengt lig nul.

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Og så skal vi hente datoen fra RemoveZeroes-variablen . For at gøre dette kan vi oprette en anden variabel og navngive den KeepOnlyDates .

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Jeg kan bruge til at slippe af med de duplikerede datoer, der bliver returneret af .

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Dernæst skal vi identificere de tre øverste datoer i faldende rækkefølge. Vi bruger en anden variabel og navngiver den Last3Dates , og bruger derefter .

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Så vil vi bruge over de sidste tre datoer i datokolonnen, og derefter bruge et skillemåler.

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Lad os trække og slippe vores nyoprettede mål inde i den matrix. Resultatet, vi får, er 31/03/2021, 07/04/2021 og 02/04/2021. Det betyder, at vores foranstaltning virker.

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Lad os gå tilbage til editoren og slippe af med RETURN CONCATENATEX-delen. For at hente de sidste tre datoer, hvad vi kan gøre, er at kontrollere, hvilke rækker fra RemoveZeroes -variablen faktisk er en del af de sidste tre datoer.

Og til det, vil vi oprette en anden variabel DatesInLast3Dates og bruge FILTER-funktionen på RemoveZeroes . Dette vil returnere en tabel, der består af en jobkategori og en dato.

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Vi vil opsummere indtægtskolonnen, som vi har oprettet i den tabel. Lad os returnere SUMX over DatesInLast3Dates, og opsummere derefter indtægtskolonnen.

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Med denne beregning får vi kun én enkelt værdi for hver række, fordi vi har fjernet Jobkategorien fra filterkonteksten.

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Vi bruger den variabel, vi har oprettet i starten, til at kontrollere, om hver række af DatesInLast3Dates -variablen er tilgængelig i filterkonteksten. Vi kan skrive en anden variabel og navngive den IsInFilterContext .

Dette vil filtrere datoerne i DatesInLast3Dates- variablen. Så vil jeg returnere SUMX over IsInFilter-konteksten og opsummere indtægtskolonnen.

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Når vi trykker på Enter , kan du se, at vi får det samme resultat, som vi havde i begyndelsen.

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Bekræftelse af resultatet af beregningen af ​​DAX Language Lucky Templates

For at verificere, at vi rent faktisk får det korrekte resultat, kan vi oprette en ny CALCULATE-tabel, der vil hjælpe os med at fejlsøge, identificere og verificere, at den kode, vi har skrevet indtil videre, faktisk returnerer det korrekte resultat.

Lad os lave en kopi af koden, som vi har skrevet indtil videre. Jeg vil simpelthen kopiere den del, der er fremhævet nedenfor, gå tilbage for at oprette en ny tabel og indsætte den fremhævede kode. Vi har ikke tænkt os at gider at navngive dette bord, fordi det ikke er interessant for os.

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Og vi kan simpelthen skrive RETURN DatesInLast3Dates . Hvis jeg klikker på Bekræft , får vi en tabel, men vi ved, at den faktisk ikke returnerer det korrekte resultat endnu, fordi vi faktisk skal efterligne udsnitsmaskinens opførsel.

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Vi kan pakke den kode ind i en CALCUATETABLE og indrykke alt. I den sidste del vil jeg skrive, at datoen skal være større end eller lig med 2021-03-15, og at kundenavnet skal være lig med DHL Supply Chain .

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Tabellen, som vi har lavet inde i det mål, returnerer stort set det korrekte resultat. Vi kan bruge en CALCULATETABLE til at verificere den virtuelle tabel, som du opretter i din beregning.

Andre DAX-sprog LuckyTemplates-beregninger

Nu hvor vi ved, at vores beregning virker og forstår, hvad der faktisk sker bag kulisserne, kan vi se på andre metoder til at beregne det samme problem. Først og fremmest, lad os oprette en duplikat af det mål, som vi allerede har oprettet.

Version 2

Denne gang vil vi ikke stole på funktionerne VÆRDIER og FILTER, så vi slipper af med dem. Vi fjerner returneringsresultatet samt den sidste variabel, som vi har oprettet inde i CALCULATE. Derefter konverterer vi CALCULATE til CALCULATETABLE.

Og i stedet for at returnere en skalarværdi, skal vi denne gang returnere DatesInLast3Dates . Dette vil returnere den samme CALCUATETABLE, som vi lavede tidligere. Vi skal bruge funktionen CALCULATE, og i det første argument skal vi beregne indtægtsmålet og injicere CALCULATETABLE som filterkontekst.

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Når jeg først har bragt det til matrixen, kan du se, at vi returnerer den samme samlede værdi for hver celle.

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Brug af KEEPFILTERS-funktionen

I øjeblikket ved vi, at regnestykket bagved fungerer korrekt, men hvordan kan vi med sikkerhed vide, at vi for hver celle kun rapporterer værdien for det økonomiske niveau?

Ved hjælp af CALCULATETABLE har vi lavet en tabel, der indeholder det økonomiske niveau, datokolonnen og indtægtskolonnen. Vi kan bruge nøglefilterfunktionen til at skabe et skæringspunkt mellem filterkonteksten, der eksisterer uden for CALCULATETABLE, og den, der oprettes af CALCULATETABLE.

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Når vi klikker på Bekræft, kan vi se, at vi rapporterer den korrekte værdi for hver celle, og at både version 1 og version 2 returnerer den korrekte værdi.

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Så hvordan virker dette? Tabellen CALCUATE returnerer vedligeholdelsesniveauet , derefter Leje , Service Ekstern og Reservedele . Det kommer til at skabe et skæringspunkt mellem vedligeholdelsen og det bord.

Udlejning vil skabe den indledende filterkontekst, derefter returnerer KALKULATTABELLEN alle værdierne i jobkategorien. Så vil der være et skæringspunkt mellem lejemålet og bordet returneret af BEREGNETABELLEN. Vi returnerer kun tabellerne eller rækkerne for den lejedel.

Og så endelig, når vi indsætter SUMMARIZE i filterkonteksten, beregner funktionen CALCUATE kun omsætningen for udlejning. Den samme proces sker for hver række.

Version 3

Lad os se på en anden måde at beregne den samme beregning ved hjælp af DAX-sproget LuckyTemplates. Lad os lave en kopi af Version 2-målet og oprette endnu et mål. Vi skal navngive denne version 3.

Ideen bag denne beregning er, at da vi beregner omsætningen ved hjælp af funktionen CALCULATE, behøver vi ikke bruge ADDCOLUMNS-delen, fordi vi dublerer det samme i og uden for CALCULATE. I stedet kan vi blot skrive, at omsætningen ikke skal være lig med 0.

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Når jeg klikker på Bekræft, skal vi sikre os, at koden fungerer, så lad os trække målingen ind i matrixen.

Du kan se, at koden faktisk returnerer den samme værdi for hver celle.

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Hvis jeg forsøger at ændre filterkonteksten ved at ændre datoen i Date slicer og vælge et par værdier fra Customer Name, kan du se, at alle tre mål faktisk returnerer den samme værdi for hver række.

DAX-sprog LuckyTemplates Tutorial på omvendt TOPN

Konklusion

I denne tutorial lærte vi, hvordan man bruger en kompleks logik med at gå tilbage i tiden fra slutdatoen til at identificere de tre bedste datoer. Baseret på denne DAX-sprog LuckyTemplates-teknik var vi i stand til at beregne omsætningen og kun vise de værdier, der findes i filterkonteksten. Det var alt for nu i denne tutorial.

Leave a Comment

Oplev unik indsigt ved hjælp af LuckyTemplates TOPN-funktion

Oplev unik indsigt ved hjælp af LuckyTemplates TOPN-funktion

Denne blog indeholder LuckyTemplates TOPN DAX-funktionen, som giver dig mulighed for at få unik indsigt fra dine data, hvilket hjælper dig med at træffe bedre markedsføringsbeslutninger.

Oprettelse af en datotabel i LuckyTemplates

Oprettelse af en datotabel i LuckyTemplates

Find ud af, hvorfor det er vigtigt at have en dedikeret datotabel i LuckyTemplates, og lær den hurtigste og mest effektive måde at gøre det på.

LuckyTemplates Mobile Reporting Tips og teknikker

LuckyTemplates Mobile Reporting Tips og teknikker

Denne korte vejledning fremhæver LuckyTemplates mobilrapporteringsfunktion. Jeg vil vise dig, hvordan du kan udvikle rapporter effektivt til mobilenheder.

Professionelle serviceanalyserapporter i LuckyTemplates

Professionelle serviceanalyserapporter i LuckyTemplates

I denne LuckyTemplates Showcase gennemgår vi rapporter, der viser professionel serviceanalyse fra et firma, der har flere kontrakter og kundeengagementer.

Microsoft Power Platform-opdateringer | Microsoft Ignite 2021

Microsoft Power Platform-opdateringer | Microsoft Ignite 2021

Gå gennem de vigtigste opdateringer til Power Apps og Power Automate og deres fordele og implikationer for Microsoft Power Platform.

Almindelige SQL-funktioner: En oversigt

Almindelige SQL-funktioner: En oversigt

Opdag nogle almindelige SQL-funktioner, som vi kan bruge, såsom streng, dato og nogle avancerede funktioner til at behandle eller manipulere data.

LuckyTemplates skabelonoprettelse: Guide og tips

LuckyTemplates skabelonoprettelse: Guide og tips

I denne tutorial lærer du, hvordan du opretter din perfekte LuckyTemplates-skabelon, der er konfigureret til dine behov og præferencer.

Feltparametre og små multipler i LuckyTemplates

Feltparametre og små multipler i LuckyTemplates

I denne blog vil vi demonstrere, hvordan man lagdelte feltparametre med små multipler for at skabe utrolig nyttig indsigt og visuals.

LuckyTemplates-rangering og brugerdefineret gruppering

LuckyTemplates-rangering og brugerdefineret gruppering

I denne blog vil du lære, hvordan du bruger LuckyTemplates rangerings- og brugerdefinerede grupperingsfunktioner til at segmentere et eksempeldata og rangordne det efter kriterier.

Viser kun kumulativ total op til en bestemt dato i LuckyTemplates

Viser kun kumulativ total op til en bestemt dato i LuckyTemplates

I denne tutorial vil jeg dække en specifik teknik omkring, hvordan du kun viser Kumulativ Total op til en bestemt dato i dine visuals i LuckyTemplates.