It is with great joy that we want to share some awesome news with you!
The production of SQLBI’s second edition of the Mastering DAX video course is now complete!

The first edition of the Mastering DAX video course was recorded three years ago. It was our first course produced with a professional team of experts for audio and video recording, makeup and stage preparation.

Three years ago, Power Pivot was the most widely adopted product using DAX, while Power BI was just starting to gain market share. What has changed since then?

As far as DAX is concerned, not much. What really did evolve is our experience in training and in delivering the teaching of DAX to people coming from a business background, without prior knowledge of business intelligence concepts and modeling.

The basic DAX concepts are still the same. If you learned DAX using the first version of the Mastering DAX video course, you are equipped to write quality DAX code by now. However, new functions were added over time, new data modeling concepts were introduced – such as weak relationships – and a refresher was definitely needed.

Theoretically, we could have just added a few new modules to the previous course, to simply keep it up to date. Instead, we chose to record a complete new set of videos. Guided by the valuable feedback of many SQLBI students, we improved the lectures, reviewed the examples, and built a complete set of new exercises.

Requests for more exercises and opportunities to practice was by far the most frequent feedback we would receive on the initial edition. We heard you! Moreover, the course is much longer than the previous one: more time was dedicated to describing the practical usage of functions and providing more examples, while keeping the content very strong on the theoretical aspects of the language.

Here is a quick recap of what is new in the second edition:

  • 15 hours of recorded video lectures. This increases the content by 50% over the 10 hours of the first edition.
  • 70 brand-new exercises focused on applying DAX to the resolution of business problems. The estimated time required to complete the exercises is 15-20 hours.
  • Full coverage of any and all DAX features released all the way until January 2019.
  • Professionally reviewed English subtitles. Automatic translations to Chinese (Simplified and Traditional), French, German, Italian, Portuguese (Brazil), Russian, and Spanish.

Note on the subtitles – based on your feedback, we added subtitles in several languages obtained with automatic translations. Viewers will enjoy the maximum quality of subtitles in the English version, however it was not sustainable to provide the same quality in other languages. That said, many users did mention that there would be great value in offering automatic translations rather than having only the English version. This is why we also provided this feature for all other video courses at SQLBI.

We are proud of our second edition and we trust it will support your learning greatly. We did the work, but that was only made possible by the support of all our valued students who attended SQLBI courses. Students don’t just support us by purchasing the course – they also come with tremendous feedback, questions, and invaluable discussions. We want to thank all our alumni with a gift: the new edition is available immediately to all the students who purchased the first edition of the video course. Just log on to your account, and the new edition is there waiting for you. This is more than a free upgrade; this is an entire, brand-new course added to your account for free!

If you do not have access to the Mastering DAX video course yet, here is a terrific launch offer for you: a 20% discount valid until May 31, 2019. If you have been following us regularly, you know SQLBI does not frequently offer discounts. This is your chance to go to the next level in building your DAX expertise: get your own Mastering DAX video course today!

If you are new to DAX, we still suggest you start your journey with the free Introducing DAX video course and follow the suggestions in the How to learn DAX guide before enrolling into Mastering DAX. Before you ask, yes, you can still benefit from the launch offer now even though you will only get to it later!

If you have already completed the first edition of the Mastering DAX video course, should you watch all the videos of the second edition? Well, this is not strictly necessary, but some modules are worth watching even though you are proficient in DAX. We suggest the following as a minimum time investment for experienced DAX coders:

  • First, review these modules – we have changed the way we describe the filter context and we also provide better guidelines for how to use KEEPFILTERS:
    • Evaluation contexts
    • CALCULATE function
    • Advanced evaluation contexts
  • Later, watch these modules – we offer more examples using table functions, and we have included most of the new DAX functions here:
    • Querying with DAX
    • Data lineage and TREATAS
    • Expanded tables
    • Many-to-many relationships
    • Ambiguity and bidirectional filters
    • Relationships at different levels of granularity
  • Once you are ready to get into the more hidden details of DAX, watch these:
    • Arbitrarily shaped filters
    • ALLSELECTED and shadow filter contexts
  • Complete the exercises in each module and the additional exercises at the end of the course!

If you enroll into the Mastering DAX video course for the first time, just follow the lectures in the proposed order and make sure you gain practice with the exercises provided along your path. Remember: DAX is simple, but it is not easy. It takes time to learn it, but the power it unleashes for Power BI is amazing.

Have fun with DAX!

CALCULATE modifier

Changes the CALCULATE and CALCULATETABLE function filtering semantics.

KEEPFILTERS ( <Expression> )

Context transition

Evaluates an expression in a context modified by filters.

CALCULATE ( <Expression> [, <Filter> [, <Filter> [, … ] ] ] )


Treats the columns of the input table as columns from other tables.For each column, filters out any values that are not present in its respective output column.

TREATAS ( <Expression>, <ColumnName> [, <ColumnName> [, … ] ] )

CALCULATE modifier

Returns all the rows in a table, or all the values in a column, ignoring any filters that might have been applied inside the query, but keeping filters that come from outside.

ALLSELECTED ( [<TableNameOrColumnName>] [, <ColumnName> [, <ColumnName> [, … ] ] ] )