By Lukas Hillesheim, 5 February, 2024
The following article shows how cascading calls of CALCULATETABLE can be used to transport a filter over multiple hops. Use cases for this pattern are tables within a Galaxy schema or tables that are part of a more complex Snowflake schema.
By Lukas Hillesheim, 18 August, 2023
Internet articles usually show a simplified use of the RANKX function, in which only arguments 1, 2 and 4 of the 5 possible arguments are used. Therefore the purpose of argument 3 (value) may be unclear. The following article shows the effect of using argument 3 and how the internals of the RANKX function can be thought of.
By Lukas Hillesheim, 8 August, 2023
Shrinking the log file is an occasional administrative task in SQL Server. In some cases the logfile can only be shrinked by temporarily applying the SIMPLE recovery mode. The measures to solve the problem can harm the backup chain and - depending on your point of view - can be seen as a bug or an annoying behavior. With AlwaysOn Availability Group an additional problem arises, because a database that is part of AON cannot be switched to the SIMPLE recovery mode without resetting the AON cluster configuration. The following article shows a solution.
By Lukas Hillesheim, 21 July, 2023
In the DAX language, sorting can only be applied at the end - when the data is ready for delivery - but not as an intermediate step, for example, to save sorted data in a variable. The following article shows how this goal can be achieved with the help of GENERATE and GENERATESERIES.
By Lukas Hillesheim, 18 March, 2023
The first article of this series is intended to explain the complex language DAX from the point of view of other concepts, on the internet the term projection is often used for this. Other concepts can be set concepts, OOP concepts and concepts from SQL. Concepts from other languages can make DAX more transparent.
By Lukas Hillesheim, 17 March, 2023
How hard is it to learn DAX? The article deals with the challenges of learning DAX as a BI language for the tabular model and the difference to the MDX language.
By Lukas Hillesheim, 4 January, 2023
Attribute relationships are internal objects of the Analysis Services MultiDimensional Engine. They are not visible for the MDX client, can only be used indirectly and can only be configured in the development environment. However, they affect MDX objects and implicit behaviors. Understanding relationships is therefore essential for understanding MDX.
By Lukas Hillesheim, 31 December, 2022
This article describes how the Analysis Services Multidimensional engine implicitly expands an incomplete tuple such as ([East]) to a complete tuple such as ([East], [2018], [Amount], etc.). This knowledge is crucial to understand which automatic behaviors affect the way a cell value is computed.
By Lukas Hillesheim, 30 August, 2022
Article 3 of this series covers "List.Generate". "List.Generate" is one of the most important Power Query functions. As in other languages, "List.Generate" encapsulates a loop and is the equivalent of a For-loop. Understanding List.Generate requires knowledge of lambda expressions.
By Lukas Hillesheim, 30 August, 2022
Part 1 of this series shows how lambda expressions work within Power Query iterators. Lambda expressions placed inside an Power Query function will be executed repeatedly. With each call, the iterator passes different data to the lambda expression.
By Lukas Hillesheim, 30 August, 2022
In part 1 of this series i mentioned that the MSDN does not provide information about the concrete (data) traffic between the lambda expression and the iterator that the lambda expression is part of. Part 2 of this series shows three examples of how Power Query iterator and lambda expression interact with each other.