Close Menu
    Trending
    • How Smart Entrepreneurs Turn Mid-Year Tax Reviews Into Long-Term Financial Wins
    • Become a Better Data Scientist with These Prompt Engineering Tips and Tricks
    • Meanwhile in Europe: How We Learned to Stop Worrying and Love the AI Angst | by Andreas Maier | Jul, 2025
    • Transform Complexity into Opportunity with Digital Engineering
    • OpenAI Is Fighting Back Against Meta Poaching AI Talent
    • Lessons Learned After 6.5 Years Of Machine Learning
    • Handling Big Git Repos in AI Development | by Rajarshi Karmakar | Jul, 2025
    • National Lab’s Machine Learning Project to Advance Seismic Monitoring Across Energy Industries
    AIBS News
    • Home
    • Artificial Intelligence
    • Machine Learning
    • AI Technology
    • Data Science
    • More
      • Technology
      • Business
    AIBS News
    Home»Artificial Intelligence»Why You Should Not Replace Blanks with 0 in Power BI
    Artificial Intelligence

    Why You Should Not Replace Blanks with 0 in Power BI

    Team_AIBS NewsBy Team_AIBS NewsJune 20, 2025No Comments8 Mins Read
    Share Facebook Twitter Pinterest LinkedIn Tumblr Reddit Telegram Email
    Share
    Facebook Twitter LinkedIn Pinterest Email


    watching Jeffrey Wang as a live stream guest with Reid Havens, and one of many dozen great issues that Jeffrey shared with the viewers was the checklist 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, Formula 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 information 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 you can handle BLANKs and replace them with zeroes, however on this article, I need to give attention to the attainable efficiency implications of this determination.

    Setting the stage

    Earlier than we begin, one essential disclaimer: the advice to not change BLANK with 0 is simply that — a advice. If the enterprise request is to show 0 as an alternative of BLANK, it doesn’t essentially imply that you must refuse to do it. In most situations, you’ll in all probability not even discover a efficiency lower, however it would rely on 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 entire 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 examine 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 present mixture of values to return our knowledge:

    Picture by writer

    Including extra elements…

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

    Picture by writer

    This was once more very quick! I’ll now examine the metrics throughout 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 an alternative of discovering just one row, this time, the quantity is completely different:

    Picture by writer

    After all, you’ll not discover any distinction in efficiency between these two situations, 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 instances, as you may even see, we see solely “crammed” values — that mixture of rows the place each of our necessities are glad — product key’s 364 and solely these dates the place we had gross sales for this product — in the event you look completely within the illustration above, dates are usually not contiguous and a few are lacking, equivalent to January twelfth, January 14th to January twenty first and so forth.

    It is because Components Engine was sensible sufficient to eradicate the dates the place product 364 had no gross sales utilizing the NonEmpty filter, and that’s why the variety of information is 58: we’ve 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 thought is to show 0$ quantity for all these dates. As already described within the earlier article, there are a number of other ways to exchange the BLANKs with zeroes, and I’ll use the COALESCE() perform:

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

    Mainly, the COALESCE perform will examine 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 stated, it would examine if the worth of the Gross sales Amt 364 Merchandise is BLANK. If not, it would show the calculated worth; in any other case, it would change BLANK with 0.

    Picture by writer

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

    Picture by writer

    As a substitute of producing one single question, now we’ve 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 comprises 2517 rows, whereas the Dates desk has 1826). Not simply that, check out the question plan:

    Picture by writer

    4.6 million information?! Why on Earth does it occur?! Let me do the maths 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 may 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 an alternative of BLANK). You possibly can simply merely click on on the Date area 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 are able to now see all of the cells (even blanks) and this question took half the time of the earlier one! Let’s examine the question plan generated by the Components Engine:

    Picture by writer

    Not all situations are catastrophic!

    Fact to be stated, we may’ve rewritten our measure to exclude some undesirable information, however it could nonetheless not be an optimum approach for the engine to eradicate empty information.

    Moreover, there are specific situations by which changing BLANKs with zero is not going to trigger a major efficiency lower.

    Let’s look at the next scenario: we’re displaying knowledge concerning 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 may count on, that was fairly quick. However, what is going to occur once I add my measure that replaces BLANKs with 0, which triggered havoc within the earlier situation:

    Picture by writer

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

    Picture by writer

    Conclusion

    As Jeffrey Wang advised, you must keep away from changing blanks with zeroes (or with another specific values), as it will considerably have an effect on the question optimizer’s means to eradicate pointless knowledge scanning. Nevertheless, if for any motive you have to substitute a clean with some significant worth, watch out when and methods to do it.

    As traditional, it is determined by many alternative points — for columns with low cardinality, or if 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 varieties that don’t must show numerous distinct values (i.e. card visible) — you may get away with out paying the efficiency worth. Alternatively, in the event you use tables/matrices/bar charts that present a whole lot of distinct values, be sure to examine the metrics and question plans earlier than you deploy that report back to a manufacturing atmosphere.

    Thanks for studying!



    Source link

    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
    Previous ArticleFrom CSV to Web App: Building and Deploying My Titanic ML Model with Streamlit | by semaozylmz | Jun, 2025
    Next Article The Best Defense Against Uncertainty Isn’t a Single Strategy — It’s a Mindset
    Team_AIBS News
    • Website

    Related Posts

    Artificial Intelligence

    Become a Better Data Scientist with These Prompt Engineering Tips and Tricks

    July 1, 2025
    Artificial Intelligence

    Lessons Learned After 6.5 Years Of Machine Learning

    July 1, 2025
    Artificial Intelligence

    Prescriptive Modeling Makes Causal Bets – Whether You Know it or Not!

    June 30, 2025
    Add A Comment
    Leave A Reply Cancel Reply

    Top Posts

    How Smart Entrepreneurs Turn Mid-Year Tax Reviews Into Long-Term Financial Wins

    July 1, 2025

    I Tried Buying a Car Through Amazon: Here Are the Pros, Cons

    December 10, 2024

    Amazon and eBay to pay ‘fair share’ for e-waste recycling

    December 10, 2024

    Artificial Intelligence Concerns & Predictions For 2025

    December 10, 2024

    Barbara Corcoran: Entrepreneurs Must ‘Embrace Change’

    December 10, 2024
    Categories
    • AI Technology
    • Artificial Intelligence
    • Business
    • Data Science
    • Machine Learning
    • Technology
    Most Popular

    OpenAI launches Operator—an agent that can use a computer for you

    January 24, 2025

    Get 8 Microsoft Office Apps For One Low Price

    May 24, 2025

    Spotify Paid $100 Million to Podcasters as Creator Wars Heat Up

    April 28, 2025
    Our Picks

    How Smart Entrepreneurs Turn Mid-Year Tax Reviews Into Long-Term Financial Wins

    July 1, 2025

    Become a Better Data Scientist with These Prompt Engineering Tips and Tricks

    July 1, 2025

    Meanwhile in Europe: How We Learned to Stop Worrying and Love the AI Angst | by Andreas Maier | Jul, 2025

    July 1, 2025
    Categories
    • AI Technology
    • Artificial Intelligence
    • Business
    • Data Science
    • Machine Learning
    • Technology
    • Privacy Policy
    • Disclaimer
    • Terms and Conditions
    • About us
    • Contact us
    Copyright © 2024 Aibsnews.comAll Rights Reserved.

    Type above and press Enter to search. Press Esc to cancel.