An introduction to DAX
This chapters provides a introduction to the DAX language. Students will learn where DAX can be used, and will see some typical.
- DAX use cases
- Understanding calculated columns and measures
- Building tables with DAX
- DAX as a query language
- DAX for row level security
- DAX patterns
- LAB: Creating calculated columns, tables and measures in DAX
A good tools can make the job a lot easier. And DAX Studio is a super handy free tool for DAX developers, independant of whether you are using Power BI Desktop, Excel or Visual Studio in the end. This module explains why and how to use DAX Studio.
- Introducing DAX Studio
- Installing DAX Studio
- Writing DAX queries: EVALUATE, ORDER BY and START AT
- Constructing tables with FILTER, DISTINCT, ROW, SELECTCOLUMNS and SUMMARIZECOLUMNS
- Who’s eating up the resources: Querying meta-data
- Performance tuning
- Profiling DAX queries
- LAB: Running and profiling queries in DAX Studio
When writing scalar expressions a good understanding of the DAX data types, operators and functions is needed.
- DAX data types
- Getting started with constants
- Mathematical, boolean and string operators
- The most important scalar functions in DAX
- LAB: Evaluating and writing DAX expressions
Creating DAX measures
The CALCULATE function is probably the most used function in DAX when you are defining measures. To really understand how to use the CALCULATE function, you must have a good understanding of the concepts of row and filter contexts, which are also explained in the chapter.
- Introduction to evaluation context
- The CALCULATE function and the row and filter context
- Aggregation functions
- Defining table scopes
- Using ALL and VALUES
- LAB: Using CALCULATE
Using CALCULATE for time intelligence
DAX includes time intelligence functions that enable you to manipulate data using time periods, including days, months, quarters, and years, and then build and compare calculations over those periods.
- Creating calendar tables using CALENDAR and CALENDARAUTO
- Working with multiple data tables
- Mark as Data Table
- Computing YTD/QTD and MTD totals
- Comparing data over time using DAX
- Calculating Rolling Totals
- Calculating Moving Averages
- LAB: Implementing Time Intelligence
Working with calculation groups
Often measures such as a year-to-date (YTD) calculation have to be repeated for multiple base measures. Calculation groups provide as sort of template with which these repetitive measures can be easily created and maintained.
- The need for calculation groups
- Creating calculation groups
- Format strings in calculation groups
- Excluding measures from calculation items
- LAB: Implementing a calculation group and calculation items
More on measures: Iterators
When you need to iterate through data iterators such as SUMX become useful. This chapter discusses how to work with iterators, and how to apply context transitions within iterators.
- SUMX aggregation function
- Linking to different tables with RELATED
- More iterators: RANKX, CONCATENATEX, …
- Using variables in DAX
- Context transition
- LAB: Using iterators in measures
Inspecting and controlling the execution context
Often a measure only makes sense in a certain context (e.g. only relevant at the month level, but not the year level). In this chapter DAX functions are covered which allow you to inspect the current context such that you can protect your measures.
- Why do we need the context?
- Handling hierarchies in DAX
- Calculate ratio’s to a parent subtotals
- Raising errors in DAX
- LAB: Inspecting execution context
Advanced DAX constructs
In this last chapter some of the more advanced DAX topics are introduced.
- CALCULATE modifiers USERELATIONSHIP, CROSSFILTER, …
- Expanded tables
- Calculating cumulative percentages – pareto analysis
- ABC analysis
- Calculating customer churn – new customer, lost customers
- LAB: Implementing Pareto analysis (cumulative total percentage)
- LAB: DAX Workshop