DAX is simple, but it is not easy

Inspired by this great video and as a follow up to my last post regarding the Mastering DAX workshop I want to tell you about my findings regarding the DAX language:

DAX is simple,

but it is not easy.

This is so true. When I was sitting in the classroom, I realized in every example we did how true this statement is. If you see a working DAX formula you are tempted to say: “OK, no problem, this is easy”. But making a working DAX measure – which is really working all the time – no matter what the user is doing in terms of filtering and grouping is hard work.

If your measure is working in one situation but not in all situations

then your measure was wrong from the beginning.

Again, in many cases it seems that a measure is working. But as soon as you are changing some parameters or add an extra step of complexity it is not working at all. In many cases this means go back to start and do your work again.

Stick with the basics

Don’t bother about sophisticated functions.

Put all your efforts into filter context, row context, iterations, and context transition.  I am still learning the hard way that this is the only way to success.

You can’t learn DAX by copying formulas

or patterns from the internet or books.

I tend to learn new things by browsing the internet. If I find a solution which is pointing me in the right direction, I usually succeed in solving my problem. With DAX I first thought ok cool do it in the same way at sometimes it seems to work but unfortunately other times not. So learning the basics is so important not just insert some CALUCULATE command here and there.

You can’t learn DAX by reading books

Only by practicing.

I have bought quite a few books in the past and by studying them I was fooling myself. I thought I know enough about DAX now. But the truth is I knew nothing. As soon as you are doing real live examples you will realize that without a solid understanding of the basics you are caught in an endless try and error loop.

So having learned all of this I feel at least in a position which points me in the right direction.

With every project I will gain confidence but nevertheless frustration will be my good companion for quite some time.

Stick to the basics

and try to think the DAX way.

Mastering DAX workshop

Obwohl ich nun schon wirklich lange möglichst viele Bereiche zum Thema Power BI verfolge, ist die DAX Sprache nach wie vor herausfordernd für mich. Wobei mittlerweile denke ich, das geht jedem so…

Daher habe ich als Auffrischung unlängst den Mastering DAX workshop der allseits bekannten SQLBI Helden besucht.

https://www.sqlbi.com/cert/yjlt1zzu-211003/

Ich habe nun den Vergleich zum ebenfalls angebotenen Online Course und einer Schulung in „echt“.

Ich muss sagen, da liegen wirklich Welten dazwischen. So viele Kleinigkeiten, die in DAX aber sehr große Auswirkungen haben, können einfach nur face to face bewusst gemacht werden.

Die für mich wichtigsten Erkenntnisse sind zwar nichts Neues, aber man muss sie diese egal auf welchem Level man sich in DAX bewegt immer wieder vor Auge führen:

Obey the rules

Es gibt zwar oft mehrere Wege, um eine DAX Formel zu erstellen, aber im Prinzip fast immer nur eine richtige Lösung.

  • The filter context filters data
  • The row context computes data

 (nothing else)

Heißt einfach übersetzt, stimmt das Ergebnis einer Formel nicht, ist zu 99,99 % das die Ursache des Problemes.

CALCULATE löst viele Probleme

Entscheidend dabei ist aber, das man sich immer wieder vor Augen hält, wann CALCULATE was macht, warum CALCULATE das macht und wann CALCULATE allenfalls gar nicht erforderlich ist.

  • CACULATE schafft neue Herausforderungen
  • Stichwort Context transition
    • Überträgt den aktuellen Filter context in einen äquivalenten Row Context

NEVER filter a table, always filter fields

Selbsterklärend hier geht es vor allem um Performance

Dynamic Date Matrix

Wow, diese Time Matrix Tabelle sieht mal sehr gut aus. Wie im Beitrag erwähnt würde man solche Szenarien wohl eher mit Time-intelligence functions lösen, mir jedoch gefällt dieser klassische Ansatz sehr gut. Ok die DAX-Formeln sind jetzt nicht gerade sehr einfach nachzuvollziehen oder gar selber zu erstellen, aber dafür hat man ja solche Refernzartikel gespeichert, um bei Bedarf bei den Profis abzukupfern…

The Dynamic Time Matrix

DateDiff Equivalent in Power BI / DAX

Guter Tipp, wie man korrekt die Differenz in Tagen/Monaten/Jahren mittels DAX ermittelt. Wichtig zu wissen, dass die DATEDIFF function in DAX hier „falsche“ Ergebnisse liefern kann:

https://blogs.msdn.microsoft.com/samlester/2017/04/06/calculating-the-difference-between-two-dates-in-years-months-and-days-in-power-bi-or-excel/

GuV mit Power BI und DAX

Man sieht, dass hier Finance-Leute mit Excel und Power BI  Know-How am Werke sind und so sehr gute Lösungansätze aufzeigen:

Easy Profit and Loss and other (account) scheme reports in Power BI and Power Pivot using DAX