De BEREKEN DAX-functie: problemen en oplossingen

De BEREKEN DAX-functie: problemen en oplossingen

niet zou moeten gebruiken om het gemiddelde per categorie te verkrijgen en zullen we enkele alternatieve oplossingen bieden om dezelfde resultaten te krijgen als u wilt. Je kunt de volledige video van deze tutorial onderaan deze blog bekijken .

Een gemiddelde per categorie krijgen in DAX is vreemd ingewikkeld. Door de CALCULATE-functie te gebruiken om deze berekeningen op te lossen, kunnen nieuwe DAX-gebruikers de DAX-code moeilijker te begrijpen vinden dan zou moeten. Het goede nieuws is dat er eenvoudigere oplossingen voor dit probleem zijn. 

Inhoudsopgave

Overzicht van de DAX-functie BEREKENEN

Een paar maanden geleden presenteerde ik op de voor LuckyTemplates. Het heette de DAX-tegencultuur, waar ik enkele alternatieve opvattingen over DAX gaf. 

Een van de belangrijkste heeft betrekking op het gebruik van de CALCULATE-functie. Ik had het over waarom je CALCULATE niet zou moeten gebruiken, vooral als DAX nieuw voor je is. 

CALCULATE is een heel complexe functie om te begrijpen en te gebruiken. Het maakt bepaalde aannames over uw datamodel en kan u in de problemen brengen. 

Ik heb me ook verdiept in de snelle maatregel van Microsoft voor Running Total, omdat het niet werkt in situaties met één tabel en het een sterschema nodig heeft om goed te werken.

Dus liet ik een eenvoudiger alternatief zien dat werkt, of het nu een sterschema is of een model met een enkele tabel, zonder dat CALCULATE nodig is. 

BEREKEN DAX-formule

Deze blog gaat dieper in op een snelle meting genaamd Gemiddelde per categorie . Als u zich in de LuckyTemplates-desktop bevindt, gaat u eerst naar het deelvenster Velden en maakt u een Nieuwe snelle meting .

De BEREKEN DAX-functie: problemen en oplossingen

Kies in het pop-upvenster Snelle meting de optie Gemiddelde per categorie in de vervolgkeuzelijst Berekening . Sleep dan ? Waarde in het tekstveld Basiswaarde en Maand in het veld Categorie .

De BEREKEN DAX-functie: problemen en oplossingen

Klik vervolgens op OK en je krijgt een visual die er zo uitziet. 

De BEREKEN DAX-functie: problemen en oplossingen

Op de x-as staan ​​de kwartalen: Kwartaal 1, 2, 3 en 4. 

En wat u wilt doen, is de waarden voor elke hieronder weergegeven maand optellen en vervolgens het gemiddelde nemen over die waarden. Kortom, het Gemiddelde Per Categorie, dat is het onderwerp van onze blog. 

De BEREKEN DAX-functie: problemen en oplossingen

Ons datamodel hiervoor is heel eenvoudig. We hebben een tabel met Datums , Waarden die willekeurig worden gegenereerd en Maand , Maandsortering en Kwartalen in afzonderlijke kolommen. 

De BEREKEN DAX-functie: problemen en oplossingen

En we hebben hetzelfde in onze datumtabel met de kalendertabel, maand, maandsortering en kwartaal. Dit betekent dat we het kwartaal of de maand kunnen kiezen uit de datumtabel of de eerste tabel. 

De BEREKEN DAX-functie: problemen en oplossingen

Het goede nieuws met Average Per Category is dat het echt werkt, ongeacht of u een enkelvoudig tabelmodel of een sterschema heeft.

In deze visuals gebruiken we het kwartaal van de eerste tabel...

De BEREKEN DAX-functie: problemen en oplossingen

 …terwijl deze het kwartaal uit onze datumtabel gebruikt. Het werkt hoe dan ook. 

De BEREKEN DAX-functie: problemen en oplossingen

Maar het probleem met het Gemiddelde Per Categorie is simpelweg de DAX-code. 

De BEREKEN DAX-functie: problemen en oplossingen

Deze DAX-code is raar, want zelfs als je een DAX-expert bent, zal het je waarschijnlijk op het eerste gezicht verwarren. Het is vreemd genoeg geconstrueerd met een CALCULATE-instructie zonder filterclausule en bevat alleen een som-instructie. 

Sterker nog, het is een van die stokpaardjes van mij als ik mensen op de forums zie die CALCULATE gebruiken die zomaar een som omschrijven zonder reden. Maar in dit geval heeft het eigenlijk een reden.

Het verbaast me elke keer als ik die zie, omdat het slechts een onmiddellijke indicatie is dat ze geen idee hebben wat ze doen met de CALCULATE-functie. Dus ik raad aan om er gewoon vanaf te blijven. 

DAX-code voor gemiddelde per categorie

De bovenstaande DAX-code gebruikt . Deze functie staat niet in een CALCULATE-segment, wat het weer vreemd maakt. Vermoedelijk is deze functie gebouwd voor gebruik in CALCULATE-statements op basis van de bijbehorende documentatie.

De code gebruikt ook , waar ik het niet mee eens ben. Ze mogen nooit WAARDEN gebruiken, omdat verschillende waarden de neiging hebben om een ​​lege rij te retourneren als er een niet-overeenkomende rij is. Dat kan je in de problemen brengen, maar dat is een onderwerp voor een andere video.

Wat hier in wezen aan de hand is, is dat ze een VALUES-functie gebruiken om al onze categorieën te krijgen. In kwartaal 1 zijn dat bijvoorbeeld januari, februari en maart. VALUES retourneert ook een tabel, maar ze gebruiken een KEEPFILTER-instructie om deze geldig te maken als eerste parameter in . 

Ze behouden ook de CALCULATE-functie om uit te voeren binnen de context van KEEPFILTERS. Vanwege de manier waarop AVERAGEX werkt, neemt het de tweede uitdrukking en voert deze uit binnen de context van de eerste uitdrukking. 

Wat is dan het probleem?

Over het algemeen werkt het goed, maar niet voor iemand die nieuw is bij DAX. Ik geloof dat Microsoft de boot echt heeft gemist toen ze deze snelle maatregel creëerden, omdat snelle maatregelen zogenaamd bedoeld zijn voor mensen die nieuw zijn bij DAX.

Snelle meetwaarden zijn een goed idee, zoals "Laten we een aantal algemene meetwaarden met verschillende berekeningen voor u opschrijven, want u bent nieuw bij DAX en u weet niet alles wat er te weten valt over DAX." Maar waarom zouden ze ze op zulke rare, gecompliceerde manieren construeren? 

Hoe moet iemand die nieuw is bij DAX hier naar kijken en uitzoeken wat er aan de hand is als zelfs waarschijnlijk DAX-professionals hun hoofd een beetje krabben over deze? 

Dus voor mij hebben ze een gouden kans gemist om mensen te helpen DAX te leren met hun snelle maatregelen door erop te staan ​​dat ze CALCULATE bevatten en door hoepels te springen om de CALCULATE erin te krijgen. 

De gemakkelijkere oplossing

De SUMMARIZE-functie gebruiken

Zoals ik eerder heb vermeld, is er een betere en eenvoudigere manier om het te doen.

Maak eerst een tabelvariabele met VAR_Table . Vervolgens gebruiken we om de tabel te nemen, deze samen te vatten per maand, een waardekolom te maken en onze waarden op te tellen.

Ten slotte nemen we het gemiddelde van onze waarden met behulp van de functie GEMIDDELDE EX

De BEREKEN DAX-functie: problemen en oplossingen

Deze code is eenvoudiger en zoveel logischer. Het bevat geen CALCULATE, die je sowieso niet nodig hebt. 

U kunt een blogartikel tegenkomen waarin SUMMARIZE wordt bekritiseerd. De blog zegt dat de manier waarop SUMMARIZE intern werkt behoorlijk ingewikkeld is.

Het suggereert ook dat je in een specifiek geval in de problemen kunt komen, maar dat je er nooit in terecht zult komen. Dat zou alleen gebeuren als uw berekening een zeer complexe berekening en een zeer grote tabel betreft. Alleen dan zal SAMENVATTEN u wankele resultaten opleveren. 

Dat beweert althans het blogartikel. En het is prima als je SAMENVATTEN uit de weg wilt gaan. Gebruik in dat geval de functie .

De GROUPBY-functie gebruiken

Niemand heeft een probleem met het gebruik van de GROUPBY-functie, dus laten we leren hoe we die ook kunnen gebruiken. Maak opnieuw een tabelvariabele met VAR_Table. Vervolgens groeperen we per maand en maken we een kolom Waarde.

Vervolgens passen we toe met behulp van de CURRENTGROUP , en dat is hoe GROUPBY werkt. Laten we onze Waarde optellen en opnieuw de AVERAGEX nemen . 

Onze code zou er zo uit moeten zien.

De BEREKEN DAX-functie: problemen en oplossingen

Vergelijking van de resultaten: SAMENVATTEN versus GROUPBY versus BEREKEN DAX-functies

Laten we nu eens kijken of de sneltoetsen die we hebben gebruikt dezelfde resultaten opleveren. 

Zoals u in de onderstaande afbeeldingen kunt zien, geven zowel SAMENVATTEN met het label Beter Gemiddeld Per Categorie als GROUPBY met het label Beter Gemiddeld Per Categorie 2 dezelfde getallen terug. 

De BEREKEN DAX-functie: problemen en oplossingen

Onze beide formules retourneren 3,4K voor Q1, 3,6K voor Q2, 3,4K voor Q3 en 3,5K voor Q4. En nogmaals, ze werken in een enkel tabelgegevensmodel met behulp van Quarters voor onze tabel.

Ze werken ook in een sterrenschema waarbij we kwartalen gebruiken in onze datumtabel. 

De BEREKEN DAX-functie: problemen en oplossingen


Snelle maatregelen – hoe ze te gebruiken in LuckyTemplates-modellen
De functie Calculate gebruiken in LuckyTemplates
Effectieve manieren om de GROUPBY-functie te gebruiken in LuckyTemplates

Conclusie

We hoeven onszelf niet te forceren in een verwrongen contextlogica om CALCULATE in onze formules te krijgen. Gebruik gewoon eenvoudige standaard DAX-functies en u kunt dezelfde dingen bereiken. 

In feite, waarschijnlijk in 80% - 90% van de gevallen, is er absoluut geen reden om de moeite te nemen om CALCULATE voor wat dan ook te gebruiken. In plaats daarvan kunt u de functies SUMMARIZE en GROUPBY gebruiken, die eenvoudiger en logischer zijn.

Als je dit PBIX-bestand wilt verkennen, heb ik het al gepubliceerd in de Quick Measures Gallery en heb ik het bestand Better Average Per Category genoemd . Scroll gewoon helemaal naar beneden op de pagina om het PBIX-bestand te vinden dat je kunt downloaden en speel met jezelf. 

Al het beste,

Greg Decker


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