No video

Formula engine and storage engine in DAX

Understanding the differences between the formula engine and the storage engine is the first step to understand the performance metrics and optimize a DAX formula.
Article and download: sql.bi/684038?aff=yt
How to learn DAX: www.sqlbi.com/guides/dax/?aff=yt
The definitive guide to DAX: www.sqlbi.com/books/the-defin...

Пікірлер: 37

  • @gulhermepereira249
    @gulhermepereira2493 жыл бұрын

    I'm a simple PBI developer, I see Maco Russo, I click like

  • @louism.4980
    @louism.49803 ай бұрын

    This is phenomenal, thank you so much! This video deserves at least 1 million views! :)

  • @samdasari7863
    @samdasari78633 жыл бұрын

    This is by far the most innovative technical video I have seen so far. Keep up the good work. Your knowledge is always a great treasure for the Power BI community.

  • @takuram4616
    @takuram46163 жыл бұрын

    Dropping knowledge bombs from start to finish, I feel smarter than I was 25mins before

  • @mwaltercpa
    @mwaltercpa3 жыл бұрын

    Great video, thank you Marco. I like how you drew it out on paper. I now view the SE like a math book... a collection of all of the figures and data required to perform math, however still requires the student (FE) to actually solve for the result.

  • @sue_bayes
    @sue_bayes3 жыл бұрын

    Really helpful in understanding the two different engines. Loved the way you used the book analogy and paper and pen before moving on to the code. It's helped me in understanding how to analyse queries when optimising code and reminds me of TCP protocol, for example, in that each process is efficient as it specialises in it's own job, storage engine gets the data, formula engine calculates and visualises. Thank you

  • @michaelmays9415
    @michaelmays94153 жыл бұрын

    Thanks for the excellent explanation! Looking forward to more of the videos on this topic

  • @Heshrodum89
    @Heshrodum893 жыл бұрын

    Excellent video. Thank you. I am a very visual learner and this explanation (along with your book) is incredibly helpful.

  • @NathanBlevins
    @NathanBlevins3 жыл бұрын

    Great video and hugely informative. Thank you! Although I spend a lot of time in DAX, this did a great job in breaking down concepts and filling in gaps in what I know. :)

  • @DanielADamico
    @DanielADamico3 жыл бұрын

    For each video you post, I always imagine that you won't be able to produce a better video than the last one you posted... But I'm always wrong! Each video is always better, and it's getting better and better each day! It's unbelievable! You are definitively the DAX Masters! Thanks for sharing! 👏👏👏

  • @SQLBI

    @SQLBI

    3 жыл бұрын

    Thanks!

  • @mau_lopez
    @mau_lopez3 жыл бұрын

    Excellent tutorial! Very interesting and useful to know! THX a lot Mr. Russo

  • @bisamurai
    @bisamurai3 жыл бұрын

    Thanks Marco! Great video which I will most likely forward to everybody whoever asks about this instead of trying to explain myself :-)

  • @jorgeeduardomoltenimoreno3048
    @jorgeeduardomoltenimoreno30483 жыл бұрын

    Great explanation, thanks

  • @AmdiSilword
    @AmdiSilword3 жыл бұрын

    Very helpfull explanation. Only heart the words but didn't know how it works. I'am greatful for your videos.

  • @tangtom2478
    @tangtom24783 жыл бұрын

    Wish more content on this! Thanks

  • @tomaskavicky
    @tomaskavicky3 жыл бұрын

    very good explanation

  • @sandipansarkar9211
    @sandipansarkar92115 ай бұрын

    Finished watching

  • @urielramos1
    @urielramos13 жыл бұрын

    Thanks!!! Really good explanation !! 5 stars XD

  • @Milhouse77BS
    @Milhouse77BS3 жыл бұрын

    A nice long video! Yeaa!

  • @user-js4gf4is7r
    @user-js4gf4is7r3 жыл бұрын

    thanks marco,I love this vedio......

  • @marcomori6907
    @marcomori69073 жыл бұрын

    Thx

  • @gavclark66
    @gavclark663 жыл бұрын

    Great explanation, thanks a lot for this great content ! Question - if you have more than one visual and a different measure, like Total Cost, would it re-use the SE values (and the FE aggregates at a higher level) or run another query ? .

  • @SQLBI

    @SQLBI

    3 жыл бұрын

    Every visual generates one or more query, regardless of the result of other visuals. If the visual request the same data requested before (same filters) it does not generate any query and reuse the previous result. Please note this is a cache at the report level and the engine does not receive any DAX query in this case. The FE does not cache any data. The SE has a cache for the last 512 queries per database. Different queries can reuse the result of previous SE queries. The SE cache is unaware of the original DAX query.

  • @danjarupath
    @danjarupath3 жыл бұрын

    Cool

  • @akhilannan
    @akhilannan3 жыл бұрын

    That is an innovative way of explaining the difference between formula engine and storage engine using the book analogy! 👍 Question: I understand FE needs the SE results materialized In-Memory in an uncompressed form to do it's computation. Is the same applicable to DirectQuery? Does the SQL output gets materialized in memory before formula engine acts on it? Also, if FE don't have to do any computation on SE results, still the materialization happens before sending the results to client ?

  • @SQLBI

    @SQLBI

    3 жыл бұрын

    Yes, the materialization always happens when SE moves data to FE, regardless of SE type (so DirectQuery does that, too) and FE processing (materialization happens even though there is no further calculation required).

  • @akhilannan

    @akhilannan

    3 жыл бұрын

    @@SQLBI Thanks for the response. Does this mean a simple Evaluate 'TableName' will have the results materialized In-Memory until the results are returned to the client?

  • @marcorusso7472

    @marcorusso7472

    3 жыл бұрын

    @@akhilannan Yes, definitely. For this reason, reports usually browse a window of rows in the result using TOPNSKIP.

  • @atdotarvind
    @atdotarvind2 жыл бұрын

    Hi Marco, Is there any way we can optimize export to excel data from the Power BI report?

  • @Bharath_PBI
    @Bharath_PBI3 жыл бұрын

    Thank you for taking up this topic. So when materialization happens that's when 1 million row limit is triggered with top 1000001. If there was no materialization then Direct query wouldn't have this limit.

  • @SQLBI

    @SQLBI

    3 жыл бұрын

    Correct!

  • @Bharath_PBI

    @Bharath_PBI

    3 жыл бұрын

    @@SQLBI 1 question: Is there a way to avoid materialization and let the entire query execute in underlying SQL server (as with other bi tools) ? Cos, even though the final returned resultset is 10 rows, group by on a column in a dim, which has 1.5M rows on a selected date, it throws this 1M limit error. Users expect to see the data without filters at first.

  • @Rrocker1405
    @Rrocker14053 жыл бұрын

    Thank you @sqlbi for the amazing tutorial as always about SE and FE along with calculation groups. I have implemented the calculation for a report but the complex nature of the requirement is to have 3 layers of drill down at row level and 3 layers of drill down at column level and all of them have time intelligence e.g., MTD, QTD, YOY against Actuals, Budget and Actuals v Budget information per selected criteria e.g., Net sales, Gross Sales, PBT et cetera. The performance just drags completely and just fails later after hitting threshold. Could there be anything that can be done to improve the performance? The measures uses keep filters, selected measure with time intelligence calculation. Needless to say it is a matrix view. Any tip, suggestion would help.

  • @SQLBI

    @SQLBI

    3 жыл бұрын

    As usual, it depends. Analyzing performance issues requires deeper evaluation of query plans. Knowing the difference between SE and FE is just the starting point. We have several chapters in The Definitive Guide to DAX ( www.sqlbi.com/books/ ) and an entire videocourse ( www.sqlbi.com/p/optimizing-dax-video-course/ ) to walk through the required steps! There could be just too many reasons - for example, time intelligence mixed to distinct count measures or bidirectional filters could have a big impact, but it's just one of the many possible reasons...

  • @90s_HipHop
    @90s_HipHop3 жыл бұрын

    If I am seeing 99% in the Formula Engine with 9 SE Queries but the total time is 87,357ms I know I have a problem. BUT where do I start looking? I assume its not a data issue due to the storage engine was fast (469ms) so I guess a DAX issue...?

  • @SQLBI

    @SQLBI

    3 жыл бұрын

    Probably yes. We have several chapters about DAX Optimization in The Definitive Guide to DAX (the book) and we have a specific video course about that. Links: www.sqlbi.com/p/optimizing-dax-video-course/ www.sqlbi.com/books/the-definitive-guide-to-dax-2nd-edition/