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
-
Presentation of Mastering DAX 3rd Edition
-
Exercises, labs, demos, and companion content
Added Apr 28, 2026-
Exercises, labs, slides, and demos
FREE
- Download the demo files
- Download the companion content
-
Exercises, labs, slides, and demos
-
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
-
Introduction to learning DAX
-
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 DAX calculations
-
Understanding calculated columns and measures
-
Introducing calculated columns
FREE
-
Introducing measures
FREE
- Introducing aggregators and iterators
- Choosing between calculated columns and measures
-
Introducing calculated columns
- 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
-
Exercises
Added Apr 29, 2026- Download exercises
- 02.01: Margin Calculations
- 02.02: Product Price Range
- 02.03: Margin Measure
- 02.04: Conditional Row Coloring
- 02.05: Year-over-Year Growth
-
Introducing DAX
-
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
-
Exercises
Added Apr 28, 2026- Download exercises
- 03.01: Matrix Filter Context
- 03.02: Contoso Sales Growth
- 03.03: Year Range Filter
- 03.04: European Sales
- 03.05: Sales Color
-
Introducing the filter context and CALCULATE
-
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
-
Exercises
Added Apr 28, 2026- Download exercises
- 04.01: Customer Count 2022–2023
- 04.02: Top Sellers in Category
- 04.03: Black OR Computer Sales
- 04.04: Yearly Percentage
- 04.05: Sales by Customer Country
-
Manipulating the filter context
-
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
-
Exercises
Added Apr 28, 2026- Download exercises
- 05.01: Max Discounted Sales
- 05.02: First Year Sales
- 05.03: Other Customers Sales
- 05.04: Product Cluster
- 05.05: Avg Sales
-
Introducing the row context and the context transition
-
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
-
Exercises
Added Apr 28, 2026- Download exercises
- 06.01: Loyal Customers
- 06.02: Pct Colors
- 06.03: Cashback
- 06.04: Colors Sold
- 06.05: Sales of Best Products
-
Understanding basic table functions
-
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
-
Exercises
Added May 1, 2026- Download exercises
- 07.01: Fix Best Customers
- 07.02: Avg Monthly Customers
- 07.03: ABC Class Columns
- 07.04: Referencing Columns of a Table Variable
-
Understanding variables
-
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
-
Exercises
Added May 1, 2026- Download exercises
- 08.01: Filter Syntax in CALCULATE
- 08.02: Delivered Amount
- 08.03: Colors by Country
- 08.04: Sales 1st Day
- 08.05: Fix Best Product Sales
- 08.06: Pct Over Category
- 08.07: Fix Discounted Sales
- 08.08: Filter vs. Filter and Remove Filters
- 08.09: Sales Red or Europe
-
Understanding the evaluation context
-
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
-
Exercises
Added May 1, 2026- Download exercises
- 09.01: % Large Sales over Contoso
- 09.02: Pct Over Category
- 09.03: MinSales and MaxSales
- 09.04: Brands Selected
- 09.05: Many‐to‐Many Sales Without Bidirectional Filter
-
Working with the evaluation context
-
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
-
Exercises
Added May 1, 2026- Download exercises
- 10.01: ComputeAmount Function
- 10.02: ComputeForUSA Function
- 10.03: WeightedAverage Function
- 10.04: Generic and Local Functions
-
Understanding user-defined functions
-
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
-
Exercises
Added May 1, 2026- Download exercises
- 11.01: Average Monthly Customers
- 11.02: Top 10 Products Sales
- 11.03: Top Products Every Year
- 11.04: Top Brand and Other Brands Sales
- 11.05: Sales of Returning Customers .
-
Working with tables
-
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
-
Exercises
Added May 5, 2026- Download exercises
- 12.01: Sales Running Total
- 12.02: Year‐over‐Year Growth
- 12.03: Customer Sales Rank
- 12.04: Best Brand Comparison
- 12.05: Sales of Best Two Products per Customer
-
Understanding window functions
-
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
-
Introducing time intelligence
-
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
-
Exercises
Added May 5, 2026- Download exercises
- 13.01: Same Period Last Year
- 13.02: YTD Without Future Dates
- 13.03: Growth Function
- 13.04: Sales Comparison Across Years
- 13.05: Gregorian Calendar Structure
- 13.06: Six‐Month Moving Average
-
Time intelligence calculations
-
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
-
Exercises
Added May 5, 2026- Download exercises
- 14.01: Percent of Parent
- 14.02: Average Customers per Brand
- 14.03: Rank over Rows and Columns
- 14.04: Sales vs Maximum Brand
- 14.05: Percentage of Contoso Sales14.05: Percentage of Contoso Sales
-
Understanding visual calculations
-
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
-
Exercises
Added May 5, 2026- Download exercises
- 15.01: Metric Selector with a Calculation Group
- 15.02: Unit of Measure Selector
- 15.03: Multiple Selection Error
-
Understanding calculation groups
-
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
-
Inspecting the filter context and managing hierarchies
-
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
-
Authoring queries
-
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
-
Advanced DAX concepts
-
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
-
Practicing DAX with advanced examples
-
Conclusions
- Conclusions
- georgy polskiy (Mar 30, 2022)
nice
- Sergei Kolomietc (Mar 25, 2022)
My dear teachers, thank you very much for a very competent, comprehensive course on DAX. This course, Youtube video tutorials, SQLBI blog, plus your books are a real fascinating journey into the world of DAX. I am happy to start your next course. I wish you success in your desired business, good health and peace!
- Terri Boyt (Mar 3, 2022)
excellent
- Jorge Dominguez (Mar 1, 2022)
I have done lots of courses; this is my favourite. The feeling is like coming back home from a delightful road trip that you wish it did not have to end.
- Terri Boyt (Feb 23, 2022)
it was great, they were very knowlegable!
- João Campelo Ribeiro (Feb 19, 2022)
I am still at 10% of the course, and will update the review as I go along. But so far the course is absolutely OUTSTANDING, I have done other DAX courses which were good, but nothing compares to this. The clarity in communication and understanding the Teachers have of the subject is unparalleled. This course is a must for everyone who want to understand DAX, because its not enough to make things work in every day job, which I am already able to. There are some subtle aspects in DAX that can make your results realistic at the naked eye, but wrong. The course is filled with good exercises and PDFs which you can use to take further notes of the video classes. The support which involves besides Marco and Alberto, other specialists like Sergio is also great. This course is a must for anyone serious about PowerBI / DAX
- Margarita Grigaleviciute (Jan 11, 2022)
Great course, a must for every Power BI developer!
- Dávid Petróczy (Jan 9, 2022)
Fantastic course and it is a must, if you want to really get serious with Power BI/SSAS Tabular, or Power Pivot. To really understand everything, I also suggest reading The Definitive Guide to DAX (second edition) a few times.
- Natallia Chashchevik (Jan 5, 2022)
Thank you for teaching how to "enjoy DAX"! I used to like SQL the most but now I see the power and beauty of DAX. The course is great - good structured, full of valuable content, comparisons, answers about "why???". Theory is just perfect. If you ask me what to improve my suggestions would be: - add more additional exercises at the end, a lot of them, - update it if something has changed a lot, for example CALCULATE limitations. I'm eager to start Optimizing DAX course and one more time open Mastering DAX to refresh knowledge or notice something I haven't noticed at the first run.
- Ihab ElAttar (Jan 1, 2022)
I am still going through the course and enjoying it. The most beneficial part is the exercises after the lessons. This is what really makes this course very valuable. Can you please add similar rich exercises to the other courses like the modelling one ? I'd like to enroll into more of your courses but right now they are mostly lectures. Thank you very much for the effort you put in this course !
- Priyanka K (Dec 24, 2021)
Absolutely Excellent. I really enjoyed it. But i am a bit confused with some functions. I need to repeat it multiple times to get more clarity
- Christian Volder (Dec 16, 2021)
A great course where you learn the theory and practices of DAX. The exercises and solutions are great, since they consider problems that I have met a lot of times when producing reports in Power BI. I wish that I had this course years ago!
- Tomasz Durka (Dec 15, 2021)
Excellent course!! I love the content and the way how the course is set-up (mix of demos and slides) - very useful!! I have learned so much...and I'm hungry for more :)
- Andres Sabogal (Nov 28, 2021)
Great course! It really goes into detail to explain how better implement solutions in reports using Dax. quite friendly fore newbies in Dax.
- John Thornton (Nov 26, 2021)
Outstanding course. Great presentation of all the important concepts in DAX, and well thought out exercises to work through
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!|
|
May 5-7, 2026 |
|
|
May 27-29, 2026 |
|
|
Jun 10-12, 2026 |
|
|
Jun 15-17, 2026 |
|
|
Jun 30-Jul 2, 2026 |