Marco Russo

Marco Russo

Business Intelligence Senior Consultant

  • @marcorus

Areas of Expertise:

  • PowerPivot
  • Analysis Services
  • SQL Server
  • MDX
  • Integration Services
  • SSIS
  • SSAS
  • LINQ
  • C#
  • .NET Framework
  • consulting
  • speaking
  • programming
  • training
Marco Russo ( is a founder of SQLBI.COM. He provides consultancy and training on Business Intelligence, with a particular specialization in the Microsoft Technologies related to BI. He has written several papers about these topics, with a particular mention for "SQLBI Methodology," which is a complete methodology for designing and implementing the back-end of a BI solution (from OLTP to OLAP cubes through Data Warehouse and Data Marts) using the Microsoft BI stack of technologies, and "The Many-to-Many Revolution," which is a paper dedicated to modeling patterns using many-to-many dimension relationships in Analysis Services. In 2009, he has co-authored Expert Cube Development with Microsoft SQL Server 2008 Analysis Services, which is considered an important set of guidelines and best practices for using Microsoft Analysis Services in the real world. He also wrote several books for .NET development, in Italian and English language. Marco is also regular speakers at major international conferences about Microsoft SQL Server PowerPivot for Excel, Microsoft SQL Server Analysis Services, and .NET Framework development.

Marco blogs at:

The ISEMPTY function in #dax #powerpivot #tabular

April 22 2014

Microsoft silently added the ISEMPTY function to the DAX language in Analysis Services build 11.00.3368 (SQL Server 2012 SP1 CU4). This function is particularly important in DAXMD (when you use DAX to query a Multidimensional model), because produces a much better execution plan in OLAP than the alternatives based on… read more

ABC Analysis in #dax: complete pattern and other links #powerpivot #tabular

April 17 2014

I recently published the ABC Classification article in, which is a more structured and organized way that recap what I already described in this blog a few years ago (see ABC Analysis in PowerPivot). The pattern describe how to implement the classification through calculated columns, so we consider it… read more

Create Excel Dashboards working on Excel for iPad #excel #ipad #dashboard

April 15 2014

I recently tried Excel for iPad and tried opening several workbooks. The results are pretty good, but I’ve found that it wasn’t possible to display certain workbooks. For example, opening a workbook that contains many CUBEVALUE formulas, I should have seen this result: However, sometime I’ve got an error saying… read more

Create Custom Time Intelligence Calculations in #dax #powerpivot #tabular

April 03 2014

The recent Time Patterns article published in contains many DAX formulas that I hope will be useful to anyone is interest in implementing time-related calculations in DAX without relying on the Time Intelligence functions. There are several reasons for doing that: Custom Calendar: if you have special requirement for… read more

Calculate Distinct Count in a Group By operation in Power Query #powerquery #powerbi

March 31 2014

The current version of Power Query does not have a user interface to create a Distinct Count calculation in a Group By operation. However, you can do this in “M” with a simple edit of the code generated by the Power Query window. Consider the following table in Excel: You… read more

Optimize DISTINCTCOUNT in #dax with SQL Server 2012 SP1 CU 9 #ssas #tabular

March 24 2014

If you use DISTINCTCOUNT measures in DAX, you know performance are usually great, but you might have also observed that the performance slow down when the resulting number is high (depending on other conditions, it starts decreasing between 1 and 2 million as a result). If you have seen that,… read more

Common Statistical #DAX Patterns for #powerpivot and #tabular

March 20 2014

DAX includes several statistical functions, such as average, variance, and standard deviation. Other common algorithms require some DAX code and we published an article about common Statistical Patterns on, including: Average Moving Average Variance Standard Deviation Median Mode Percentile Quartile I think that Median and Percentile implementation are the… read more

How to implement classification in #DAX #powerpivot #ssas #tabular

March 13 2014

In the last two weeks we published two new patterns of Static Segmentation Dynamic Segmentation These two patterns offers solutions to the general problem of classifying an item by the value of a measure or of a column in your Power Pivot or Tabular data model. For example, you… read more

Amsterdam PASS UG Meeting on March 18 #dax #tabular #powerpivot

March 07 2014

I will be in Amsterdam for the Advanced DAX Workshop on March 17-19, 2014 (hint: there are still a few seats available if you want to do a last-minute registration), and the evening of March 18 I will speak at a PASS Nederland UG meeting (between 18:30 and 21:00) that… read more

LASTDATE vs. MAX? CALCULATETABLE vs. FILTER? It depends! #dax #powerpivot #tabular

March 06 2014

A few days ago I published the article FILTER vs CALCULATETABLE: optimization using cardinality estimation, where I try to explain why the sentence “CALCULATETABLE is better than FILTER” is not always true. In reality, CALCULATETABLE internally might use FILTER for every logical expression you use as a filter argument. What… read more

Expert Cube Development new edition now available! #ssas #multidimensional

March 04 2014

It is available the new edition of the advanced OLAP book, now called “Expert Cube Development with SSAS Multidimensional Models”. The previous edition was titled “Expert Cube Development with Microsoft SQL Server 2008 Analysis Services” and the biggest issue of the book was… the title! In fact, there haven’t been… read more

Implement Parameters using Slicers in #powerpivot #dax #tabular

February 27 2014

Apparently you cannot pass an argument to a DAX measure. In reality, you can interact with a slicer that has the only purpose of representing a parameter used by a DAX formula. You just create a table in the Power Pivot or Tabular data model, without creating any relationship with… read more

Connecting to #powerpivot from an external program (such as #Tableau)

February 26 2014

Many people requested me how to connect to Power Pivot from an external program, without publishing the workbook on SharePoint or on Analysis Services Tabular. I always said it is not possible (for both technical and licensing reasons), but someone observed that Tableau is able to extract data from a… read more

How to pass a #DAX query to DAX Formatter

February 24 2014

In its first two months, DAX Formatter served 3,500 requests and I see the daily trend slowly raising. If you have observed carefully the first articles published on DAX Patterns, you might have seen that you can click the link”Code beautified with DAX Formatter”. When you click that link, you… read more

Distinct Count calculation on dimension attribute in #dax #powerpivot #tabular

February 21 2014

Creating Distinct Count calculations in DAX is pretty easy when the target of the operation is a column in the “fact table” of a star schema. When you want to apply the DISTINCTCOUNT function to a dimension attribute (such as Customer Country, Product Model, Employee Department, and so on), you… read more

The Cumulative Total #dax pattern

February 20 2014

The first pattern published on is the Cumulative Total. Another common name of this calculation is Running Total, but the reason why we named the pattern in this way is that we identify all those scenarios in which you want to obtain a value, at a certain date, that… read more

DAX Patterns website official launch! #dax #powerpivot #tabular

February 18 2014

I’m very proud to announce the official launch of the DAX Patterns website! I and Alberto Ferrari worked on this idea for a really long time. Many business scenarios can be solved in Power Pivot using always the same models, with just a few minor changes. This is especially… read more

"I learned a lot from this book about all the different types of programs and ways you can use this very useful data program."
--Stephaine Szostak, cybertron reviews

"Keep this baby close by. You'll be looking in it every eleven seconds."
--Jenilee, Kick Ass Book Reviews

"I would recommend this book to those who have to handle business analysis but are not looking for an extensive business intelligence solution."
--Susan Donnelly, eJournal of the Tucson Computer Society, March 2011, Volume 29, Number 3

"Authors Paolo Pialorsi and Marco Russo, have done an outstanding job of writing a book that covers Language Integrated Query (LINQ) both deeply and widely."
--John Vacca,