Mastering DAX Video Course

This is the video course version of the Mastering DAX workshop.
DAX is the native language of the semantic model in Microsoft Fabric, Power BI, Analysis Services, and Power Pivot for Excel. The training is aimed at users and developers of these products who want to learn and master the DAX language.

The goal of the course is to teach all the features of DAX, providing the knowledge to write formulas for common and advanced business scenarios. The video course consists of 32 hours of lectures, including demo files to reproduce the steps shown in the videos. You can watch the videos at anytime and the system will keep track of your progress. In the course, you can download the materials for all demos and exercises.

Students have access to a private discussion area where they can interact with the instructors and ask questions about the lectures and exercises.

Collapse allCurriculum

  • Presentation of Mastering DAX 3rd Edition

    • Presentation of Mastering DAX 3rd Edition
      FREE
  • Exercises, labs, slides, and demos

    • Exercises, labs, slides, and demos
    • Download the demo files
  • Introduction to learning DAX

    • Introduction to learning DAX
      FREE
    • Why is DAX even a thing?
      FREE
    • Understanding how the data model affects your DAX code
    • Introducing the demo data model
    • Conclusions
    • Links
  • Introducing DAX

    • Introducing DAX
      FREE
    • Introduction
      FREE
    • Understanding DAX calculations

      • Understanding DAX calculations
        FREE
      • DAX data types
        FREE
      • DAX Operators
        FREE
      • Conditional statements
      • Tables and tuples constructors and the IN operator
    • Understanding calculated columns and measures

      • Introducing calculated columns
        FREE
      • Introducing measures
        FREE
      • Introducing aggregators and iterators
      • Choosing between calculated columns and measures
    • Introducing variables
    • Formatting DAX code
    • Using common DAX functions

      • Aggregation functions
      • Logical functions
      • Table functions
      • Information functions
      • Mathematical and trigonometric functions
      • Statistical and financial functions
      • Text functions
      • Conversion functions
      • Date and time functions
      • Relational functions
      • Window functions
      • Time intelligence functions
    • Introducing visual calculations
      FREE
    • Introducing user-defined functions
      FREE
    • Handling errors in DAX expressions

      • Conversion errors
      • Arithmetic operations errors
      • Empty or missing values
      • Intercepting and generating errors
    • Conclusions
    • Links
  • Introducing the filter context and CALCULATE

    • Introducing the filter context and CALCULATE
      FREE
    • Introduction
    • Introducing axis and coordinates
    • Introducing the filter context
    • Introducing CALCULATE
    • Introducing KEEPFILTERS
    • VALUES as an alternative to KEEPFILTERS
    • Introducing REMOVEFILTERS
    • Understanding how totals are computed in Power BI
    • Conclusions
  • Manipulating the filter context

    • Manipulating the filter context
      FREE
    • Introduction
    • Country as a percentage of the continent
    • Percentage over a selected brand
    • Highlighting the best brands
    • Choosing how to remove filters
    • Computing percentage and visually representing growth compared to the previous year
    • Computing returning customers
    • Conclusions
  • Introducing the row context and the context transition

    • Introducing the row context and the context transition
      FREE
    • Introduction
    • Introducing the row context

      • Introducing the row context
      • Using the row context with iterators
      • Understanding column values and column references
      • Using aggregators inside the row context
    • Introducing the context transition

      • Introducing the context transition
      • Computing customers who purchased more than two products
      • Understanding automatic CALCULATE around measures
    • Using the row context with relationships

      • Using the row context with relationships
      • Computing sales in the first week
      • Computing the total order out of a denormalized model
    • Understanding nested row contexts

      • Nested row contexts
      • Nested row contexts on different tables
      • Nested row contexts on the same table
      • Nested row contexts using EARLIER
    • Understanding the differences between FILTER and CALCULATE
    • Conclusions
  • Understanding basic table functions

    • Understanding basic table functions
      FREE
    • Introduction
    • Introducing table functions
    • Introducing the EVALUATE syntax
    • Understanding FILTER
    • Understanding ALL and ALLEXCEPT
    • Computing Top categories and subcategories
    • Understanding VALUES, DISTINCT, and the blank row
    • Understanding SELECTCOLUMNS and ADDCOLUMNS
    • Understanding SUMMARIZE
    • Introducing SUMMARIZECOLUMNS
    • Computing the best store by product
    • Using tables as scalar values
    • Introducing ALLSELECTED
    • Conclusions
    • Links
  • Understanding variables

    • Understanding variables
      FREE
    • Introduction
    • Introducing the VAR syntax
    • The importance of variable names
    • Understanding that variables are constant
    • Understanding the scope of variables
    • Using table variables
    • Understanding when variables are evaluated
    • Common patterns using variables
    • Conclusions
  • Understanding the evaluation context

    • Understanding the evaluation context
      FREE
    • Introduction
    • CALCULATE filters are tables
    • Introducing expanded tables
    • Introducing data lineage and TREATAS
    • Understanding the context transition

      • Understanding the context transition
      • Row context and filter context, a recap
      • Understanding how the context transition works
      • Using the context transition with duplicated rows
      • Using the context transition in calculated columns
      • Understanding active and inactive columns in the row context
      • Summing up the context transition
    • Using the context transition with iterators

      • Using the context transition with iterators
      • Using iterators
      • Understanding iterator cardinality
      • Leveraging context transitions in iterators
    • Introducing CALCULATE modifiers

      • Introducing CALCULATE modifiers
      • Understanding USERELATIONSHIP
      • Understanding CROSSFILTER
      • Understanding KEEPFILTERS
    • Introducing the ALL* family of functions
    • Understanding the evaluation order of CALCULATE
    • Understanding circular dependencies
    • Conclusions
    • Links
  • Working with the evaluation context

    • Working with the evaluation context
      FREE
    • Introduction
    • Using different ways to express a filter
    • Using CALCULATE in different contexts
    • Filtering columns versus filtering tables
    • Understanding the active relationship
    • Understanding KEEPFILTERS with iterators
    • Managing selections using SELECTEDVALUE and VALUES
    • Computing end-of-year gifts for top customers
    • Using many-to-many relationships
    • Conclusions
    • Links
  • Understanding user-defined functions

    • Understanding user-defined functions
      FREE
    • Introduction
    • Introducing functions
    • Understanding parameter-passing modes
    • Understanding dynamic binding of columns
    • Model-dependent and model-independent functions
    • Naming conventions for user-defined functions
    • Examples of using functions

      • Currency conversion
      • Customers in a year
      • Global variables
    • Conclusions
    • Links
  • Working with tables

    • Working with tables
      FREE
    • Introduction
    • Using CALCULATETABLE
    • Using ADDCOLUMNS
    • Using SELECTCOLUMNS
    • Using SUMMARIZE and SUMMARIZECOLUMNS
    • Using GROUPBY
    • Reading Power BI queries
    • Using CROSSJOIN
    • Using UNION
    • Using INTERSECT
    • Using EXCEPT
    • Using TOPN
    • Using GENERATE and GENERATEALL
    • Using NATURALINNERJOIN and NATURALLEFTOUTERJOIN
    • Using tables as filters

      • Implementing OR conditions
      • Narrowing sales computation to customers from the first year
      • Computing the number of new customers
    • Creating calculated tables with ROW, DATATABLE and GENERATESERIES
    • Conclusions
    • Links
  • Understanding window functions

    • Understanding window functions
      FREE
    • Introduction
    • Understanding INDEX

      • Understanding INDEX
      • Handling ties
      • Introducing PARTITIONBY
      • Omitting the source table
    • Introducing OFFSET
    • Introducing apply semantics
    • Understanding OFFSET
    • Understanding WINDOW
    • Understanding WINDOW and apply semantics
    • Understanding apply semantics
    • Understanding MATCHBY
    • Understanding RANK and ROWNUMBER
    • Common window function errors

      • Duplicate rows in the source table
      • Circular dependency in calculated columns
      • Ambiguous row context
    • Conclusions
    • Links
  • Time intelligence calculations

    • Time intelligence calculations
      FREE
    • Introduction
    • Introducing time intelligence

      • Introducing time intelligence
        FREE
      • Introducing the behavior of classic time intelligence functions
      • Understanding the automatic REMOVEFILTERS over Date
      • Understanding filter-keep columns
      • Introducing calendars
      • Time intelligence functions are table functions
    • Building a date table

      • Building a date table
      • Building a Date table for a Gregorian calendar
      • Building a Date table for a monthly calendar
      • Building a Date table for fiscal calendars based on months
      • Building a Date table for weekly calendars
      • Working with multiple date columns
    • Using calendars

      • Using calendars
      • Defining calendars
      • Introducing time-related columns
    • Understanding the behavior of time intelligence functions

      • Understanding the behavior of time intelligence functions
      • Understanding the behavior of classic time intelligence
      • Understanding the behavior of calendar-based time intelligence
      • Understanding filter clearing
      • Understanding lateral shift and hierarchical shift
    • Understanding time intelligence functions

      • Understanding time intelligence functions
      • Understanding DATEADD and SAMEPERIODLASTYEAR
      • Understanding the same-distance-from-parent algorithm
      • Time-related columns with DATEADD and SAMEPERIODLASTYEAR
      • Understanding PARALLELPERIOD and whole period functions
      • Using interval-to-date calculations
      • Mixing time intelligence functions
      • Using semi-additive measures with FIRSTDATE and LASTDATE
      • Working with opening and closing balances
    • Conclusions
    • Links
  • Understanding visual calculations

    • Understanding visual calculations
      FREE
    • Introduction
    • Introducing visual calculations
    • Understanding the visual shape

      • Understanding the visual shape
      • Understanding densification
    • Understanding the visual context

      • Understanding the visual context
      • Understanding EXPAND, COLLAPSE, EXPANDALL, and COLLAPSEALL
      • Navigating the lattice of the virtual table
      • Accessing the virtual table through ROWS, COLUMNS, and ROWPAGES
      • Using ROWS, COLUMNS, and ROWPAGES together
      • Understanding reset and direction
      • Using CALCULATE in visual calculations
    • Understanding PREVIOUS, NEXT, FIRST, LAST
    • Understanding LOOKUP, LOOKUPWITHTOTALS, and auto-expand
    • Understanding RUNNINGSUM
    • Understanding ISATLEVEL
    • Understanding MOVINGAVERAGE
    • Understanding RANGE
    • Computing the moving average over the last six months
    • Computing growth over the same period last year
    • Comparing sales over the average of siblings
    • Conclusions
    • Links
  • Understanding calculation groups

    • Understanding calculation groups
      FREE
    • Introduction
    • Introducing calculation groups
    • Understanding calculation group precedence
    • Using ISSELECTEDMEASURE and SELECTEDMEASURENAME
    • Intercepting multiple selections and no selection
    • Activating calculation items in DAX
    • Using calculation groups to apply global filters
    • Visual calculations and calculation groups
    • Conclusions
    • Links
  • Inspecting the filter context and managing hierarchies

    • Inspecting the filter context and managing hierarchies
      FREE
    • Introduction
    • Using HASONEVALUE and ISINSCOPE
    • Introducing ISFILTERED and ISCROSSFILTERED
    • Understanding the differences between VALUES and FILTERS
    • Using ISEMPTY
    • Understanding arbitrarily shaped filters
    • Computing Percentages over Hierarchies
    • Handling parent/child hierarchies
    • Conclusions
  • Authoring queries

    • Authoring queries
      FREE
    • Introduction
    • Understanding EVALUATE

      • Understanding EVALUATE
      • Introducing the EVALUATE syntax
      • Using DEFINE VAR
      • Using DEFINE MEASURE
      • Using DEFINE TABLE
      • Using DEFINE COLUMN
      • Using DEFINE FUNCTION
      • Using DEFINE VISUAL SHAPE and MPARAMETER
    • Using ROW to test measures
    • Using SUMMARIZECOLUMNS
    • Using ISONORAFTER and ISAFTER
    • Using ADDMISSINGITEMS
    • Using SUBSTITUTEWITHINDEX
    • Using SAMPLE
    • Conclusions
  • Advanced DAX concepts

    • Advanced DAX concepts
      FREE
    • Introduction
    • Understanding expanded tables

      • Understanding RELATED
      • Using RELATED in calculated columns
      • Understanding the difference between table filters and column filters
      • Using table filters in measures
      • Understanding the difference between table expansion and filtering
      • Context transition in expanded tables
    • Understanding ALLSELECTED and shadow filter contexts

      • Understanding ALLSELECTED and shadow filter contexts
      • ALLSELECTED in SUMMARIZECOLUMNS
      • Introducing shadow filter contexts
      • Learning best practices for ALLSELECTED
    • Understanding bidirectional relationships and ambiguity

      • Understanding bidirectional relationships and ambiguity
      • Understanding ambiguity in active relationships
        FREE
      • Solving ambiguity in non-active relationships
    • Understanding auto-exists and non-empty

      • Understanding auto-exists and non-empty
      • Introducing auto-exists
      • Introducing non-empty
      • Introducing value filter behavior
      • SUMMARIZECOLUMNS best practices
    • Conclusions
    • Links
  • Practicing DAX with advanced examples

    • Practicing DAX with advanced examples
      FREE
    • Introduction
    • Working with a budget and different granularities

      • Working with a budget and different granularities
      • Using static allocation
      • Using a newly-created dimension
      • Using a many-to-many cardinality relationship
      • Understanding calculations at different granularities
      • Using dynamic allocation for all the dimensions
      • Showing budget and sales together
    • Working with semi-additive calculations

      • Working with semi-additive calculations
      • Scenario 1: Using LASTDATE
      • Scenario 2: Using the last date of any customer in the current period
      • Scenario 3: Using the last date of any customer, including previous time periods
      • Scenario 4: Using the last date for each customer, including previous time periods
    • Computing same-store sales

      • Filtering stores open on every year selected
      • Filtering stores open in the first or last selected year
      • Using calculation groups to select the filter algorithm
    • Conclusions
    • Links
  • Conclusions

    • Conclusions
Student Rating
4.9
592 ratings
Student Reviews (300)
  • Stefan Taranchokov (Mar 3, 2026)

    Excellent course teaching you the most important mechanics of DAX.

  • Marek Busch (Feb 25, 2026)

    It was very helpful to understand DAX better. Yet I think a bit more focus on syntax is needed. Especially as in the end the reality always requires a span of solutions for one problem. But I must say with the help of the course I was able to simplify a lot my existing PBI solutions.

  • Benjamin Swift (Feb 9, 2026)

    This is a fantastic course that I would recommend to anyone interested in understanding how DAX works and developing their skills. It's a great starting point for anyone serious about implementing Power BI Reports based on best practices.

  • Pierre Alexandre Laulan (Jan 5, 2026)

    Bonjour. J'ai beaucoup appris durant ces vidéos. Autant sur le langage DAX que sur la manière de l'expliquer et de le présenter. Alberto et Marco sont de supers formateurs. Je suis vraiment ravi de cet achat. Merci à vous et bonne continuation.+++

  • Joscha Frischherz (Dec 8, 2025)

    Great course that goes deep into the subject matter. The exercises are challenging and insightful. I recommend this course without hesitation.

  • jochen de craene (Dec 1, 2025)

    Dear Alberto, I attended both the DAX and Modeling training courses in Amsterdam. The most important feedback I would like to give is that these trainings mainly helped me to learn how to think in DAX. Thanks to your expert explanations and the fact that we built the algorithms step by step together, it became clear to me that learning how to translate human logic into the DAX language is the very first crucial step to becoming truly proficient in DAX. I now apply this way of working to every piece of code I write: What is the question? Which actions would I, as a human, take to find the answer? How do I translate this into DAX? This approach ensures, on the one hand, a solid analysis of the problem and the scenario, and on the other hand, a deep understanding of the DAX functions and the way the engine works. These trainings have truly been a game changer for me! Thank you for your expertise, and hopefully you will continue to provide us with excellent trainings, books, and videos for many years to come. Kind regards, Jochen De Craene

    • Thank you Jochen for taking the time :) CC
      Reply by Claire Costa (Dec 1, 2025)
  • Alexey Fokin (Nov 28, 2025)

    Very useful course for me

  • Adrian Łęgocki (Nov 21, 2025)

    This course was intensive. Thank you for the example exercises. Thanks to them, I was able to learn quickly

  • Juliane Yadav (Nov 7, 2025)

    I remember when I first worked with Power BI in 2020 and not being able to make sense of the logic behind DAX made me very frustrated. Nevertheless, I refused to be defeated. I started gathering pieces of information here and there, watch YouTube videos and one day I came across a workshop hosted by Marco Russo. That was the very first time I watched someone talking about the concepts rather than just teaching me ready formulas. I immediately fell in love and thought: I need to learn with these guys! I have since learned a lot following the SQL BI YouTube channel, however, when I started this video course, I knew my life would not be the same. I wasn't wrong. This course is life-changing and the way that Marco and Alberto delivers the knowledge is very structured, detailed and comprehensive. There is no cheating here. They will uncover everything. Yes, sometimes we need to watched more than once to follow their thought process, but this is the amazing feature of a video course. You can watch and rewatch, pause and think along. All I can say is Thank you Marco and Alberto! I would like to extend my gratitude to Sergio, who has patiently and kindly answered all my questions. You guys are true stars!!!!

    • Thank you Julia. I will make sure they see this. Claire
      Reply by Claire Costa (Nov 7, 2025)
  • Steven Camacho (Sep 25, 2025)

    I would say that half of the course is no good and that is because Marco Russo is a terrible instructor. The way he speaks and explains things is so convoluted and difficult to follow. Alberto Ferrari should do the whole course to be honest as his explanations are much better.

    • Hi Steven, While we appreciate the honesty, and while your review gives us something to think about for the upcoming new version, let's keep in mind that Marco has taught more than 200 classroom classes so far, presented sessions in countless conferences and pre-cons, and has always received enthusiastic feedback. To each their own learning style, for sure, but "terrible” isn't the word that's being used by his thousands of students. Claire
      Reply by Claire Costa (Sep 29, 2025)
  • Ruben Balderrama Barbeitia (Sep 24, 2025)

    Overall Verdict Mastering DAX stands out as a comprehensive, detail‑rich, and highly actionable resource. Its blend of theory, real‑world scenarios, and hands‑on labs equips analysts and developers with the expertise needed to solve complex business problems using DAX. With a modest refresh of the Calculation Groups and inclusion of User‑Defined Functions, the course will remain at the cutting edge of Power BI analytics. Bottom line: an excellent course that delivers deep value today and, with the suggested tweaks, will stay relevant for the foreseeable future.

    • Hi Ruben, Thank you for your review. You're right, and we are working on refreshing the video course at the moment! Stay tuned. CC
      Reply by Claire Costa (Sep 25, 2025)
  • Marek Cudny (Sep 15, 2025)

    Best DAX course You can get!

  • Mijalis Alexandros Méndiz Pazos (Sep 11, 2025)

    Excellent course to learn the foundations of the DAX language and go beyond the basics. Every video, every exercise is a learning experience, and revisiting it many times really helps to understand the core concepts in a way that will increase your ability to author DAX objects. It is an essential part of any Power BI (and other DAX-related tools) learning path. There aren't enough words to express my gratitude to Marco and Alberto for sharing their experience and knowledge. I'll just say thanks to you both and to all the SQLBI team that helps make these courses, blog posts, and videos possible. I'll promise to keep enjoying DAX!

  • Massimiliano De Rossi (Sep 2, 2025)

    Great course to perfect Dax skills

  • Gines Pagan (Aug 13, 2025)

    Una inversión de alto valor para dominar DAX.

Would you prefer a classroom course?

This video course is based on a classroom course we teach all around the world. If you prefer a classroom learning experience, take a look at the dates below for a list of our upcoming classroom courses!
 Houston, TX, US Mar 30-Apr 1, 2026
Houston
 New York City, NY, US Apr 8-10, 2026
New York City
 Copenhagen, DK May 5-7, 2026
Copenhagen
 Baltimore, MD, US May 27-29, 2026
Baltimore
 Zürich, CH Jun 10-12, 2026
Zürich
 Berlin, DE Jun 15-17, 2026
Berlin
 Amsterdam, NL Jun 30-Jul 2, 2026
Amsterdam