After the SQLBI+ launch in November 2022, we released the first update with additional content: two sessions about Time Intelligence and one whitepaper about the new DAX window functions. This is much more than the single Time Intelligence session we had originally planned!

Window functions in DAX

Let’s start with the Windows functions in DAX whitepaper. At the end of 2022, Microsoft released three new DAX functions: INDEX, OFFSET, and WINDOW. We categorize these functions as “window functions”, because they can manipulate a table according to a specific sort order without relying on more complex and longer DAX code. As a side effect, there are many cases where this simpler syntax also provides better performance than “regular” DAX code.

Introducing window functions in DAX is a public article that shows you what you can do with these functions, like a comparison with the previous row in a table and calculating the first ranked member for each group of elements. You can generally manage a table more like an array in memory – rather than a set of records that can be iterated only one row at a time without relying on any sort order. These new features introduced a new DAX concept called “apply semantics”. We are already working on new content (articles and a video course) that we will release when we are ready and once these new features have stabilized. However, we decided to provide early access to the draft content of the whitepaper that will be the basis of any future content about window functions. SQLBI+ subscribers can already download the current draft version (54 pages) and will have access to all subsequent update(s) as well as to the final version.

The second update is a set of two sessions about Time Intelligence in DAX:

  • Introducing Time Intelligence DAX functions<Introducing Time Intelligence DAX functions introduces the standard DAX time intelligence functions to implement aggregations and comparisons over a range of dates. These functions work in standard Gregorian calendars for calculations at the month granularity level. The goal is to solve common use cases that do not require calculations at different granularities (weeks, days, and other attributes that segment a month’s content).
  • Understanding Time Intelligence with DAXUnderstanding Time Intelligence with DAX describes how to create a reference Date table and the limitations of the standard DAX time intelligence functions: The goal is to understand when you can use them and when you need other techniques based on your requirements.

We have delivered these two sessions at many conferences and events, and improved them over the years. You can now access the recorded version of the same content andenjoy all the features of our SQLBI Video Learning Platform.

We will continue to add content to SQLBI+ every 2-3 months.
You can subscribe to SQLBI+ today and get immediate access to the entire content library!


Retrieves a row at an absolute position (specified by the position parameter) within the specified partition sorted by the specified order or on the axis specified.

INDEX ( <Position> [, <Relation>] [, <OrderBy>] [, <Blanks>] [, <PartitionBy>] [, <MatchBy>] [, <Reset>] )


Retrieves a single row from a relation by moving a number of rows within the specified partition, sorted by the specified order or on the axis specified.

OFFSET ( <Delta> [, <Relation>] [, <OrderBy>] [, <Blanks>] [, <PartitionBy>] [, <MatchBy>] [, <Reset>] )


Retrieves a range of rows within the specified partition, sorted by the specified order or on the axis specified.

WINDOW ( <From> [, <FromType>], <To> [, <ToType>] [, <Relation>] [, <OrderBy>] [, <Blanks>] [, <PartitionBy>] [, <MatchBy>] [, <Reset>] )