Wat is zelf in Python: voorbeelden uit de echte wereld
Wat is zelf in Python: voorbeelden uit de echte wereld
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.
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 .
Dan hebben we een slicer voor de datum en klantnaam .
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.
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.
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 .
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.
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.
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.
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.
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.
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 .
gebruiken om de dubbele datums te verwijderen die worden geretourneerd door de .
Vervolgens gaan we de top drie datums in aflopende volgorde identificeren. We gebruiken een andere variabele en noemen deze Last3Dates en gebruiken vervolgens de .
Vervolgens gebruiken we de over de laatste drie datums in de datumkolom en gebruiken we vervolgens een scheidingsteken.
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.
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.
We sommen de inkomstenkolom op die we in die tabel hebben gemaakt. Laten we SUMX retourneren over DatesInLast3Dates en vervolgens de omzetkolom samenvatten.
Met deze berekening krijgen we slechts één enkele waarde voor elke rij, omdat we de functiecategorie uit de filtercontext hebben verwijderd.
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.
Zodra we op Enter drukken , kunt u zien dat we hetzelfde resultaat krijgen als in het begin.
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.
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.
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 .
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.
Als ik het eenmaal naar de matrix heb gebracht, kun je zien dat we voor elke cel dezelfde eindtotaalwaarde retourneren.
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.
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.
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.
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.
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.
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
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.
In deze tutorial over DAX-coderingstaal leert u hoe u de functie GENERATE gebruikt en hoe u de titel van een maat dynamisch wijzigt.
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.
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.
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.
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.
Deze tutorial bespreekt de ideeën van materialisatie van datacaches en hoe deze de prestaties van DAX beïnvloeden bij het leveren van resultaten.
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