Automationscribe.com
  • Home
  • AI Scribe
  • AI Tools
  • Artificial Intelligence
  • Contact Us
No Result
View All Result
Automation Scribe
  • Home
  • AI Scribe
  • AI Tools
  • Artificial Intelligence
  • Contact Us
No Result
View All Result
Automationscribe.com
No Result
View All Result

Why You Ought to Not Exchange Blanks with 0 in Energy BI

admin by admin
June 21, 2025
in Artificial Intelligence
0
Why You Ought to Not Exchange Blanks with 0 in Energy BI
399
SHARES
2.3k
VIEWS
Share on FacebookShare on Twitter


watching Jeffrey Wang as a stay stream visitor with Reid Havens, and one of many dozen great issues that Jeffrey shared with the viewers was the record of optimizations that the DAX engine performs when creating an optimum question plan for our measures.

And, the one which caught my consideration was relating to the so-called “Sparse measures”:

Screenshot from the stay stream on YouTube

To make it easy, when you outline the measure, Components Engine in VertiPaq will add an implicit NonEmpty filter to the question, which ought to allow the optimizer to keep away from full cross-join of dimension tables and scan solely these rows the place data for the mix of your dimension attributes actually exist. For folk coming from the MDX world, the NonEmpty perform might look acquainted, however let’s see the way it works in DAX.

The factor that the majority resonated with me was when Jeffrey suggested towards changing BLANKs with zeroes (or no matter specific values) in Energy BI calculations. I’ve already written how one can deal with BLANKs and change them with zeroes, however on this article, I need to give attention to the doable efficiency implications of this choice.

Setting the stage

Earlier than we begin, one necessary disclaimer: the advice to not change BLANK with 0 is simply that — a advice. If the enterprise request is to show 0 as a substitute of BLANK, it doesn’t essentially imply that you must refuse to do it. In most eventualities, you’ll in all probability not even discover a efficiency lower, however it can rely upon a number of various factors…

Let’s begin by writing our easy DAX measure:

Gross sales Amt 364 Merchandise =
CALCULATE (
    [Sales Amt],
    FILTER ( ALL ( 'Product'[ProductKey] ), 'Product'[ProductKey] = 364 )
)

Utilizing this measure, I need to calculate the whole gross sales quantity for the product with ProductKey = 364. And, if I put the worth of this measure within the Card visible, and activate Efficiency Analyzer to verify the occasions for dealing with this question, I get the next outcomes:

Picture by writer

DAX question took solely 11ms to execute, and as soon as I switched to DAX Studio, the xmSQL generated by the Components Engine was fairly easy:

Picture by writer

And, if I check out the Question plan (bodily), I can see that the Storage Engine discovered just one current mixture of values to return our knowledge:

Picture by writer

Including extra components…

Nevertheless, let’s say that the enterprise request is to investigate knowledge for Product Key 364 on a day by day stage. Let’s go and add dates to our report:

Picture by writer

This was once more very quick! I’ll now verify the metrics inside the DAX Studio:

Picture by writer

This time, the question was expanded to incorporate a Dates desk, which affected the work Storage Engine wanted to do, as as a substitute of discovering just one row, this time, the quantity is completely different:

Picture by writer

In fact, you’ll not discover any distinction in efficiency between these two eventualities, because the distinction is only some milliseconds.

However that is only the start; we’re simply warming up our DAX engine. In each of those circumstances, as you may even see, we see solely “crammed” values — that mixture of rows the place each of our necessities are happy — product secret’s 364 and solely these dates the place we had gross sales for this product — for those who look completely within the illustration above, dates will not be contiguous and a few are lacking, resembling January twelfth, January 14th to January twenty first and so forth.

It’s because Components Engine was sensible sufficient to get rid of the dates the place product 364 had no gross sales utilizing the NonEmpty filter, and that’s why the variety of data is 58: we have now 58 distinct dates the place gross sales of product 364 weren’t clean:

Picture by writer

Now, let’s say that enterprise customers additionally need to see these dates in-between, the place product 364 hadn’t made any gross sales. So, the concept is to show 0$ quantity for all these dates. As already described within the earlier article, there are a number of other ways to switch the BLANKs with zeroes, and I’ll use the COALESCE() perform:

Gross sales Amt 364 Merchandise with 0 = COALESCE([Sales Amt 364 Products],0)

Principally, the COALESCE perform will verify all of the arguments offered (in my case, there is just one argument) and change the primary BLANK worth with the worth you specified. Merely mentioned, it can verify if the worth of the Gross sales Amt 364 Merchandise is BLANK. If not, it can show the calculated worth; in any other case, it can change BLANK with 0.

Picture by writer

Wait, what?! Why am I seeing all of the merchandise, after I filtered every thing out, besides product 364? Not to mention that, my desk now took greater than 2 seconds to render! Let’s verify what occurred within the background.

Picture by writer

As a substitute of producing one single question, now we have now 3 of them. The primary one is precisely the identical as within the earlier case (58 rows). Nevertheless, the remaining queries goal the Product and Dates tables, pulling all of the rows from each tables (The product desk accommodates 2517 rows, whereas the Dates desk has 1826). Not simply that, check out the question plan:

Picture by writer

4.6 million data?! Why on Earth does it occur?! Let me do the mathematics for you: 2.517 * 1.826 = 4.596.042…So, right here we had a full cross-join between Product and Dates tables, forcing each single tuple (mixture of date-product) to be checked! That occurred as a result of we compelled the engine to return 0 for each single tuple that will in any other case return clean (and consequentially be excluded from scanning)!

This can be a simplistic overview of what occurred:

Picture by writer

Imagine it or not, there may be a chic answer to point out clean values out-of-the-box (however, not with 0 as a substitute of BLANK). You possibly can simply merely click on on the Date subject and select to Present gadgets with no knowledge:

Picture by writer

It will show the clean cells too, however with out performing a full cross-join between the Product and Dates tables:

Picture by writer

We will now see all of the cells (even blanks) and this question took half the time of the earlier one! Let’s verify the question plan generated by the Components Engine:

Picture by writer

Not all eventualities are catastrophic!

Reality to be mentioned, we might’ve rewritten our measure to exclude some undesirable data, however it might nonetheless not be an optimum manner for the engine to get rid of empty data.

Moreover, there are specific eventualities wherein changing BLANKs with zero is not going to trigger a big efficiency lower.

Let’s study the next scenario: we’re displaying knowledge in regards to the complete gross sales quantity for each single model. And I’ll add my gross sales quantity measure for product 364:

Picture by writer

As you would possibly count on, that was fairly quick. However, what is going to occur after I add my measure that replaces BLANKs with 0, which precipitated havoc within the earlier situation:

Picture by writer

Hm, seems like we didn’t should pay any penalty by way of efficiency. Let’s verify the question plan for this DAX question:

Picture by writer

Conclusion

As Jeffrey Wang prompt, you must avoid changing blanks with zeroes (or with every other specific values), as it will considerably have an effect on the question optimizer’s skill to get rid of pointless knowledge scanning. Nevertheless, if for any purpose you should substitute a clean with some significant worth, watch out when and how you can do it.

As normal, it is determined by many various facets — for columns with low cardinality, or while you’re not displaying knowledge from a number of completely different tables (like in our instance, after we wanted to mix knowledge from Product and Dates tables), or visible sorts that don’t have to show numerous distinct values (i.e. card visible) — you will get away with out paying the efficiency worth. Then again, for those who use tables/matrices/bar charts that present a variety of distinct values, ensure to verify the metrics and question plans earlier than you deploy that report back to a manufacturing setting.

Thanks for studying!

Tags: BlanksPowerreplace
Previous Post

Constructing belief in AI: The AWS method to the EU AI Act

Next Post

Replace on the AWS DeepRacer Pupil Portal

Next Post
Replace on the AWS DeepRacer Pupil Portal

Replace on the AWS DeepRacer Pupil Portal

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Popular News

  • How Aviva constructed a scalable, safe, and dependable MLOps platform utilizing Amazon SageMaker

    How Aviva constructed a scalable, safe, and dependable MLOps platform utilizing Amazon SageMaker

    401 shares
    Share 160 Tweet 100
  • Diffusion Mannequin from Scratch in Pytorch | by Nicholas DiSalvo | Jul, 2024

    401 shares
    Share 160 Tweet 100
  • Unlocking Japanese LLMs with AWS Trainium: Innovators Showcase from the AWS LLM Growth Assist Program

    401 shares
    Share 160 Tweet 100
  • Proton launches ‘Privacy-First’ AI Email Assistant to Compete with Google and Microsoft

    401 shares
    Share 160 Tweet 100
  • Streamlit fairly styled dataframes half 1: utilizing the pandas Styler

    400 shares
    Share 160 Tweet 100

About Us

Automation Scribe is your go-to site for easy-to-understand Artificial Intelligence (AI) articles. Discover insights on AI tools, AI Scribe, and more. Stay updated with the latest advancements in AI technology. Dive into the world of automation with simplified explanations and informative content. Visit us today!

Category

  • AI Scribe
  • AI Tools
  • Artificial Intelligence

Recent Posts

  • Replace on the AWS DeepRacer Pupil Portal
  • Why You Ought to Not Exchange Blanks with 0 in Energy BI
  • Constructing belief in AI: The AWS method to the EU AI Act
  • Home
  • Contact Us
  • Disclaimer
  • Privacy Policy
  • Terms & Conditions

© 2024 automationscribe.com. All rights reserved.

No Result
View All Result
  • Home
  • AI Scribe
  • AI Tools
  • Artificial Intelligence
  • Contact Us

© 2024 automationscribe.com. All rights reserved.