DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

In deze blogpost gaan we een vraag bekijken die op het LuckyTemplates-forum is gesteld en een DAX-taal LuckyTemplates-techniek gebruiken om deze op te lossen. Als je mee wilt doen en de bestanden wilt downloaden, ga dan naar het LuckyTemplates-forum en ga naar . Je kunt de volledige video van deze tutorial onderaan deze blog bekijken.

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

Om het scenario dat we gaan behandelen uit te leggen, hebben we een eenvoudige tabel als voorbeeld. In de eerste kolom hebben we Financieel niveau 1 . In de tweede kolom hebben we een datum met de naam Voltooid. In de laatste kolom hebben we de combinatie van financieel niveau en voltooiingsdatum, die we Omzet zullen noemen .

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

Dan hebben we een slicer voor de datum en klantnaam .

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

Wat we voor een specifieke periode willen doen, is de top drie datums identificeren die niet nul zijn. En dan willen we in die top drie data het financiële niveau identificeren.

In de eerste versie van de maatregel heb ik de datums vermeld die minder zijn dan 29-04-2021 waarop we wat inkomsten hebben.

En op deze data willen we de financiële niveaus identificeren die enige inkomsten hebben opgeleverd. Ik zal je uitleggen hoe we tot die berekening kunnen komen.

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

Inhoudsopgave

Gegevensmodellering

Laten we, voordat we de eigenlijke DAX gaan schrijven, even kijken naar het datamodel dat meerdere tabellen bevat. We zijn alleen geïnteresseerd in de Datumtabel , Gegevenstabel , Functiecategorietabel en Klantentabel .

Merk op dat de tabel Klanten niet echt belangrijk is, omdat deze alleen in een slicer wordt gebruikt.

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

De opbrengstmaatstaf wordt berekend in de gegevenstabel. De categorie Functie bevat het financiële niveau dat we op de matrix hebben. Dan gebruiken we de kolom Datum uit de tabel Datum in onze slicer.

Versie 1

Laten we alles uit de matrix verwijderen en helemaal opnieuw beginnen. Ik ga een nieuwe maat maken en deze V1 noemen, want dit wordt versie één. We gaan ook naar twee andere variaties kijken.

De filtercontext voorbereiden

Het eerste dat we gaan doen, is alle waarden van het financiële niveau ophalen uit de filtercontext. We maken een en noemen deze FinancialLevelInFilterContext .

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

Om de waarden uit de filtercontext op te halen, gaan we de gebruiken in de tabel Functiecategorie die de kolom op financieel niveau bevat. Vervolgens moeten we een andere variabele maken en deze de naam Resultaat geven . Schrijf vervolgens en sluit het ook.

In het eerste argument hebben we een selectie over de datumsnijder. Op die datums willen we de datums identificeren die geen 0 hebben en op zijn minst enige inkomsten hebben.

Als u toegang wilt tot alle datums die in die slicer zijn geselecteerd, moeten we de gebruiken in plaats van de datumtabel.

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

En aangezien we het financiële niveau op de matrix hebben, moeten we er ook voor zorgen dat we die specifieke waarde uit de filtercontext verwijderen. We kunnen de over de functiecategorie gebruiken en vervolgens Financieel niveau 1 schrijven.

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

Nu onze filtercontext is voorbereid, kunnen we de binnenste berekening voor CALCULATE schrijven. Eerst declareren we een variabele, die een combinatie zal zijn van het financiële niveau en de datumkolom, zoals we in de eerste tabel hebben gezien.

Vervolgens gebruiken we de en gebruiken we de gegevenstabel om deze twee tabellen samen te vatten: taakcategorie en datumtabel.

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

Dit geeft de combinatie van het financiële niveau en de datumkolom die bestaat in de gegevenstabel. Vervolgens gaan we een andere variabele maken waarin we de waarde van de inkomstenrij opslaan voor de eerste variabele die we hebben gemaakt.

De naam van deze variabele is FinancialLevelAndDatesWithRevenue . De code van deze variabele is de over de vorige variabele. Vervolgens maken we een virtuele kolom die Inkomsten zal zijn om de contextovergang te initiëren. Dus voor elke rij van deze variabele hebben we de opbrengst toegewezen.

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

Deze tabel bevat de omzet, die ook nul heeft. We moeten die rijen met nul eruit filteren. Om dit te doen, kunnen we een andere variabele maken en deze de naam RemoveZeroes geven .

We gebruiken de op de vorige variabele en zorgen er vervolgens voor dat de opbrengst niet gelijk is aan nul. Het kan groter zijn dan nul of kleiner dan nul, maar mag niet strikt gelijk zijn aan nul.

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

En dan gaan we de datum ophalen uit de variabele RemoveZeroes . Om dit te doen, kunnen we een andere variabele maken en deze KeepOnlyDates noemen .

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

gebruiken om de dubbele datums te verwijderen die worden geretourneerd door de .

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

Vervolgens gaan we de top drie datums in aflopende volgorde identificeren. We gebruiken een andere variabele en noemen deze Last3Dates en gebruiken vervolgens de .

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

Vervolgens gebruiken we de over de laatste drie datums in de datumkolom en gebruiken we vervolgens een scheidingsteken.

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

Laten we onze nieuw gecreëerde meting binnen die matrix slepen en neerzetten. Het resultaat dat we krijgen is 31/03/2021, 07/04/2021 en 02/04/2021. Dit betekent dat onze maatregel werkt.

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

Laten we teruggaan naar de editor en het gedeelte RETURN CONCATENATEX verwijderen. Om die laatste drie datums op te halen, kunnen we controleren welke rijen van de variabele RemoveZeroes daadwerkelijk deel uitmaken van die laatste drie datums.

En daarvoor maken we een andere variabele DatesInLast3Dates en gebruiken we de functie FILTER op RemoveZeroes . Dit gaat een tabel retourneren die bestaat uit een taakcategorie en datum.

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

We sommen de inkomstenkolom op die we in die tabel hebben gemaakt. Laten we SUMX retourneren over DatesInLast3Dates en vervolgens de omzetkolom samenvatten.

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

Met deze berekening krijgen we slechts één enkele waarde voor elke rij, omdat we de functiecategorie uit de filtercontext hebben verwijderd.

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

We gebruiken de variabele die we aan het begin hebben gemaakt om te controleren of elke rij van de DatesInLast3Dates -variabele beschikbaar is in de filtercontext. We kunnen een andere variabele schrijven en deze IsInFilterContext noemen .

Hiermee worden de datums in de variabele DatesInLast3Dates gefilterd . Vervolgens zal ik SUMX retourneren via de IsInFilter-context en de inkomstenkolom samenvatten.

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

Zodra we op Enter drukken , kunt u zien dat we hetzelfde resultaat krijgen als in het begin.

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

Het resultaat van de DAX Language LuckyTemplates-berekening verifiëren

Om te verifiëren dat we daadwerkelijk het juiste resultaat krijgen, kunnen we een nieuwe CALCULATE-tabel maken die ons zal helpen bij het debuggen, identificeren en verifiëren dat de code die we tot nu toe hebben geschreven daadwerkelijk het juiste resultaat retourneert.

Laten we een kopie maken van de code die we tot nu toe hebben geschreven. Ik kopieer gewoon het gedeelte dat hieronder is gemarkeerd, ga terug om een ​​nieuwe tabel te maken en plak de gemarkeerde code. We gaan niet de moeite nemen om deze tabel een naam te geven, omdat het ons niet interesseert.

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

En we kunnen gewoon schrijven RETURN DatesInLast3Dates . Als ik op Bevestigen klik, krijgen we een tabel, maar we weten dat deze nog niet het juiste resultaat oplevert, omdat we eigenlijk het gedrag van de slicer moeten nabootsen.

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

We kunnen die code in een CALCULATABEL verpakken en alles laten inspringen. In het laatste deel ga ik schrijven dat de datum groter moet zijn dan of gelijk moet zijn aan 15-03-2021 en dat de naam van de klant gelijk moet zijn aan DHL Supply Chain .

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

De tabel die we binnen die meting hebben gemaakt, geeft vrijwel het juiste resultaat terug. We kunnen een CALCULATABEL gebruiken om de virtuele tabel die u aan het maken bent in uw berekening te verifiëren.

Andere DAX-taal LuckyTemplates-berekeningen

Nu we weten dat onze berekening werkt en begrijpen wat er werkelijk achter de schermen gebeurt, kunnen we kijken naar andere methoden om hetzelfde probleem te berekenen. Laten we eerst een duplicaat maken van de meting die we al hebben gemaakt.

Versie 2

Deze keer gaan we niet vertrouwen op de functies VALUES en FILTER, dus die zullen we verwijderen. We zullen het retourresultaat verwijderen, evenals de laatste variabele die we binnen CALCULATE hebben gemaakt. Vervolgens converteren we CALCULATE naar CALCULATABEL.

En in plaats van een scalaire waarde te retourneren, gaan we deze keer de DatesInLast3Dates retourneren . Dit zal dezelfde CALCULATETABLE retourneren die we eerder hebben gemaakt. We gaan de CALCULATE-functie gebruiken en in het eerste argument gaan we de opbrengstmaatstaf berekenen en de CALCULATETABLE invoegen als de filtercontext.

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

Als ik het eenmaal naar de matrix heb gebracht, kun je zien dat we voor elke cel dezelfde eindtotaalwaarde retourneren.

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

De KEEPFILTERS-functie gebruiken

Op dit moment weten we dat de berekening achter de schermen correct werkt, maar hoe kunnen we zeker weten dat we voor elke cel alleen de waarde voor dat financiële niveau rapporteren?

Met behulp van CALCULATABEL hebben we een tabel gemaakt die het financiële niveau, de datumkolom en de omzetkolom bevat. We kunnen de sleutelfilterfunctie gebruiken om een ​​intersectie te maken tussen de filtercontext die buiten CALCULATETABLE bestaat en degene die wordt gemaakt door CALCULATETABLE.

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

Zodra we op Bevestigen klikken, kunnen we zien dat we de juiste waarde voor elke cel rapporteren en dat zowel versie 1 als versie 2 de juiste waarde retourneren.

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

Dus hoe werkt dit? De tabel BEREKENEN geeft het onderhoudsniveau weer , vervolgens verhuur , service extern en reserveonderdelen . De gaat een intersectie maken tussen het onderhoud en die tabel.

Rental gaat de initiële filtercontext maken, waarna de CALCULATABEL alle waarden van de categorie Job retourneert. Dan komt er een snijpunt tussen de Verhuur en de tabel die door de REKENTABEL wordt geretourneerd. We gaan alleen de tabellen of de rijen voor dat verhuurgedeelte retourneren.

En tot slot, wanneer we SUMMARIZE in de filtercontext injecteren, gaat de functie CALCULATE alleen de inkomsten voor Rental berekenen. Hetzelfde proces vindt plaats voor elke rij.

Versie 3

Laten we eens kijken naar een andere manier om dezelfde berekening te berekenen met behulp van DAX-taal LuckyTemplates. Laten we een kopie maken van de meting van versie 2 en een andere meting maken. We gaan deze versie 3 noemen.

Het idee achter deze berekening is dat aangezien we de opbrengst berekenen met behulp van de CALCULATE-functie, we het ADDCOLUMNS-gedeelte niet hoeven te gebruiken omdat we hetzelfde binnen en buiten CALCULATE dupliceren. In plaats daarvan kunnen we eenvoudig schrijven dat de omzet niet gelijk moet zijn aan 0.

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

Zodra ik op Bevestigen klik, moeten we ervoor zorgen dat de code werkt, dus laten we de meting binnen de matrix slepen.

U kunt zien dat de code in feite voor elke cel dezelfde waarde retourneert.

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

Als ik de filtercontext probeer te wijzigen door de datum in de datumslicer te wijzigen en een aantal waarden uit de klantnaam te selecteren, kun je zien dat alle drie de metingen in feite dezelfde waarde voor elke rij retourneren.

DAX Language LuckyTemplates-zelfstudie over omgekeerde TOPN

Conclusie

In deze zelfstudie hebben we geleerd hoe we een complexe logica kunnen gebruiken om vanaf de einddatum terug in de tijd te gaan om de drie belangrijkste datums te identificeren. Op basis van deze LuckyTemplates-techniek in de DAX-taal konden we de opbrengst berekenen en alleen die waarden weergeven die bestaan ​​in de filtercontext. Dat is alles voor nu in deze tutorial.


Wat is zelf in Python: voorbeelden uit de echte wereld

Wat is zelf in Python: voorbeelden uit de echte wereld

Wat is zelf in Python: voorbeelden uit de echte wereld

Een RDS-bestand opslaan en laden in R

Een RDS-bestand opslaan en laden in R

Je leert hoe je objecten uit een .rds-bestand in R opslaat en laadt. In deze blog wordt ook besproken hoe je objecten uit R naar LuckyTemplates importeert.

First N Business Days Revisited – Een DAX-coderingstaaloplossing

First N Business Days Revisited – Een DAX-coderingstaaloplossing

In deze tutorial over DAX-coderingstaal leert u hoe u de functie GENERATE gebruikt en hoe u de titel van een maat dynamisch wijzigt.

Breng inzichten onder de aandacht met behulp van de Multi Threaded Dynamic Visuals-techniek in LuckyTemplates

Breng inzichten onder de aandacht met behulp van de Multi Threaded Dynamic Visuals-techniek in LuckyTemplates

Deze zelfstudie behandelt hoe u de Multi Threaded Dynamic Visuals-techniek kunt gebruiken om inzichten te creëren op basis van dynamische gegevensvisualisaties in uw rapporten.

Inleiding tot het filteren van context in LuckyTemplates

Inleiding tot het filteren van context in LuckyTemplates

In dit artikel zal ik de filtercontext doornemen. Filtercontext is een van de belangrijkste onderwerpen waarover elke LuckyTemplates-gebruiker in eerste instantie zou moeten leren.

Beste tips voor het gebruik van de apps in LuckyTemplates Online Service

Beste tips voor het gebruik van de apps in LuckyTemplates Online Service

Ik wil laten zien hoe de online service LuckyTemplates Apps kan helpen bij het beheren van verschillende rapporten en inzichten die uit verschillende bronnen zijn gegenereerd.

Analyseer winstmargeveranderingen in de loop van de tijd - analyse met LuckyTemplates en DAX

Analyseer winstmargeveranderingen in de loop van de tijd - analyse met LuckyTemplates en DAX

Leer hoe u wijzigingen in uw winstmarge kunt berekenen met behulp van technieken zoals vertakking van metingen en het combineren van DAX-formules in LuckyTemplates.

Materialisatie-ideeën voor gegevenscaches in DAX Studio

Materialisatie-ideeën voor gegevenscaches in DAX Studio

Deze tutorial bespreekt de ideeën van materialisatie van datacaches en hoe deze de prestaties van DAX beïnvloeden bij het leveren van resultaten.

Zakelijke rapportage met behulp van LuckyTemplates

Zakelijke rapportage met behulp van LuckyTemplates

Als u tot nu toe nog steeds Excel gebruikt, is dit het beste moment om LuckyTemplates te gaan gebruiken voor uw zakelijke rapportagebehoeften.

Wat is LuckyTemplates Gateway? Alles wat u moet weten

Wat is LuckyTemplates Gateway? Alles wat u moet weten

Wat is LuckyTemplates Gateway? Alles wat u moet weten