{"id":9464,"date":"2021-01-25T17:32:00","date_gmt":"2021-01-25T17:32:00","guid":{"rendered":"https:\/\/minova.nl\/?p=9464"},"modified":"2023-05-05T11:42:07","modified_gmt":"2023-05-05T11:42:07","slug":"power-bi-solve-performance-problems","status":"publish","type":"post","link":"https:\/\/minova.nl\/en\/power-bi-los-performance-problemen-op\/","title":{"rendered":"Power BI: solve performance problems"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"9464\" class=\"elementor elementor-9464\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-519dd79 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"519dd79\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5760595\" data-id=\"5760595\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-6b41ccd elementor-widget elementor-widget-heading\" data-id=\"6b41ccd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Performance problems in Power BI are usually caused by either the way the data in the model is structured or by inefficient DAX. When it comes to the data model, DAX studio is needed to find the cause. However, this blog post is about the optimization of DAX code. Which, by the way, also requires DAX Studio!<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-eeae83b elementor-widget elementor-widget-heading\" data-id=\"eeae83b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">What you need to know, simply put, is that the engine that processes your DAX is actually not one engine but two engines that work in close proximity: an extremely fast engine that can only process simple code, called the Storage Engine (SE). And a fast one, but certainly not as fast, that can process all code, called the Formula Engine (FE). This is how Microsoft managed to balance speed and complexity. What DAX performance tuning ultimately comes down to is shifting the workload from the FE to the SE. So that only requires using code that the Storage Engine can handle. There's a lot to say about the inner workings of these engines, but let me keep it as simple as possible by saying that the SE receives queries described in a language called xmSQL. Here is the xmSQL that the SE can handle.<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1c76141 elementor-widget elementor-widget-heading\" data-id=\"1c76141\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">List of available xm_SQL formulas<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e726abb elementor-widget elementor-widget-image\" data-id=\"e726abb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-1.png\" data-srcset=\"https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-1.png 602w, https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-1-300x124.png 300w\" width=\"602\" height=\"248\" class=\"attachment-full size-full wp-image-9466 lazyload\" alt=\"\" sizes=\"(max-width: 602px) 100vw, 602px\"><noscript><img decoding=\"async\" width=\"602\" height=\"248\" src=\"https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-1.png\" class=\"attachment-full size-full wp-image-9466\" alt=\"\" srcset=\"https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-1.png 602w, https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-1-300x124.png 300w\" sizes=\"(max-width: 602px) 100vw, 602px\"><\/noscript>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e8160ab elementor-widget elementor-widget-heading\" data-id=\"e8160ab\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">The code you have written now in your model s apparently slow, otherwise you wouldn t be reading this now \ud83d\ude09 . So how do you make sure you only use these formulas and therefore make it faster? Well, you probably fell into one of the \"performance pitfalls\" that you can get out of by following these optimization strategies.<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-121dee1 elementor-widget elementor-widget-heading\" data-id=\"121dee1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">1. Avoid using a FILTER table formula in a CALCULATE Boolean test (a true or false test). However, this first strategy has a few exceptions. You cannot avoid using a table filter with FILTER when:<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-177d5c9 elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"177d5c9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-circle\"><\/i>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Multiple columns are required for the test<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-circle\"><\/i>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">You must name a measure for the test<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-circle\"><\/i>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">You need to use another CALCULATE for the test<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-446b9cc elementor-widget elementor-widget-heading\" data-id=\"446b9cc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">2. If the use of FILTER cannot be avoided, use only the columns that are actually needed for the test instead of the entire table<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ed830ad elementor-widget elementor-widget-heading\" data-id=\"ed830ad\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">3. Avoid IF statements<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-61bc355 elementor-widget elementor-widget-heading\" data-id=\"61bc355\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">4. Avoid having to rely on the CallbackDataID<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-67715a8 elementor-widget elementor-widget-heading\" data-id=\"67715a8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">5. Avoid triggering a context transition when it is not needed<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1a6b982 elementor-widget elementor-widget-heading\" data-id=\"1a6b982\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">6. Avoid the use of double iterators whenever possible.<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bc849d9 elementor-widget-divider--view-line_text elementor-widget-divider--element-align-center elementor-widget elementor-widget-divider\" data-id=\"bc849d9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t\t<span class=\"elementor-divider__text elementor-divider__element\">\n\t\t\t\tExample:\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b844b04 elementor-widget elementor-widget-heading\" data-id=\"b844b04\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">You want to base a calculation on the NYC cab dataset. More specifically, you want the trip distance divided by the trip amount, but only for trips where the trip amount does not equal 0, otherwise you would get an error. Here is your first attempt and the statistics of this code in DAX studio.<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-52bdbf5 elementor-widget elementor-widget-image\" data-id=\"52bdbf5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-3.png\" data-srcset=\"https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-3.png 849w, https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-3-300x141.png 300w, https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-3-768x360.png 768w\" width=\"849\" height=\"398\" class=\"attachment-full size-full wp-image-9467 lazyload\" alt=\"\" sizes=\"(max-width: 849px) 100vw, 849px\"><noscript><img loading=\"lazy\" decoding=\"async\" width=\"849\" height=\"398\" src=\"https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-3.png\" class=\"attachment-full size-full wp-image-9467\" alt=\"\" srcset=\"https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-3.png 849w, https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-3-300x141.png 300w, https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-3-768x360.png 768w\" sizes=\"(max-width: 849px) 100vw, 849px\"><\/noscript>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c5e68ea elementor-widget elementor-widget-heading\" data-id=\"c5e68ea\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Now, I have the <b>List of available xm_SQL formulas<\/b> added for a reason \ud83d\ude09 . IF statements, for example, are not on it. And in this case, none are needed. You've already made sure that dividing by 0 doesn't result in an error by using the DIVIDE formula instead of the \/ operator.<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-222431a elementor-widget elementor-widget-heading\" data-id=\"222431a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">So let's rewrite this code and KISS (Keep It Simple Stupid!).<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8059229 elementor-widget elementor-widget-image\" data-id=\"8059229\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-4.png\" data-srcset=\"https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-4.png 700w, https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-4-300x113.png 300w\" width=\"700\" height=\"264\" class=\"attachment-full size-full wp-image-9469 lazyload\" alt=\"\" sizes=\"(max-width: 700px) 100vw, 700px\"><noscript><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"264\" src=\"https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-4.png\" class=\"attachment-full size-full wp-image-9469\" alt=\"\" srcset=\"https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-4.png 700w, https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-4-300x113.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\"><\/noscript>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a37ab9f elementor-widget elementor-widget-heading\" data-id=\"a37ab9f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">So that helped a little bit, but not as much as you probably hoped. So let's move on and see how the engine actually processes our code. Instead of looking at the statistics in DAX Studio, let's now look at the xmSQL in DAX Studio (at the bottom of this screenshot).<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-744948a elementor-widget elementor-widget-image\" data-id=\"744948a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-5.png\" data-srcset=\"https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-5.png 556w, https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-5-300x103.png 300w\" width=\"556\" height=\"190\" class=\"attachment-full size-full wp-image-9470 lazyload\" alt=\"\" sizes=\"(max-width: 556px) 100vw, 556px\"><noscript><img loading=\"lazy\" decoding=\"async\" width=\"556\" height=\"190\" src=\"https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-5.png\" class=\"attachment-full size-full wp-image-9470\" alt=\"\" srcset=\"https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-5.png 556w, https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-5-300x103.png 300w\" sizes=\"(max-width: 556px) 100vw, 556px\"><\/noscript>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fc19f64 elementor-widget elementor-widget-heading\" data-id=\"fc19f64\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">You don't have to read the entire xm_SQL in this case to see that a CallbackDataID is present. That means the SE can't do this all by itself and is asking for help from the FE, which is because the DIVIDE formula is not on the list of available xm_SQL formulas. And you do want to try to get the SE to do all the work. Now, what formulas can you find on the xmSQL formulas overview that could save the day? Exactly, FILTER and the \/ operator. So if you could manage to get rid of the trips where the fare_amount equals zero using FILTER, you could get rid of the DIVIDE formula by replacing it with the \/ operator and you would push the work to the SE. Let's give that a try.<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3b531e0 elementor-widget elementor-widget-image\" data-id=\"3b531e0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-6.png\" data-srcset=\"https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-6.png 516w, https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-6-300x120.png 300w\" width=\"516\" height=\"206\" class=\"attachment-full size-full wp-image-9471 lazyload\" alt=\"\" sizes=\"(max-width: 516px) 100vw, 516px\"><noscript><img loading=\"lazy\" decoding=\"async\" width=\"516\" height=\"206\" src=\"https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-6.png\" class=\"attachment-full size-full wp-image-9471\" alt=\"\" srcset=\"https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-6.png 516w, https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/image-6-300x120.png 300w\" sizes=\"(max-width: 516px) 100vw, 516px\"><\/noscript>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-174ae8d elementor-widget elementor-widget-heading\" data-id=\"174ae8d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Success! The DAX code no longer needs a CallbackDataID and we managed to reduce 62% of the initial processing time.<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b6e6897 elementor-widget elementor-widget-heading\" data-id=\"b6e6897\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Last words<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-781afad elementor-widget elementor-widget-heading\" data-id=\"781afad\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Writing faster DAX means achieving the same result in a faster and therefore different way. So you need to be able to write DAX at a decent level before you can start optimizing it. And even then, it won't be easy. But it is possible and you can learn it too! If only you... followed my DAX course through the Advanced Power BI course \ud83d\ude09 . You'll learn all about that and much more.<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2fa7790 elementor-widget elementor-widget-spacer\" data-id=\"2fa7790\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Performanceproblemen in Power BI worden meestal veroorzaakt door ofwel de manier waarop de gegevens in het model zijn gestructureerd of door ineffici\u00ebnte DAX. Als het gaat om het datamodel, is DAX studio nodig om de oorzaak te kunnen vinden. Deze blog post gaat echter over de optimalisatie van DAX code. Waar overigens ook DAX Studio [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":10279,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[54],"tags":[],"class_list":["post-9464","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-power-bi"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Power BI: los performance problemen op - Minova<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/minova.nl\/en\/power-bi-solve-performance-problems\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Power BI: los performance problemen op - Minova\" \/>\n<meta property=\"og:description\" content=\"Performanceproblemen in Power BI worden meestal veroorzaakt door ofwel de manier waarop de gegevens in het model zijn gestructureerd of door ineffici\u00ebnte DAX. Als het gaat om het datamodel, is DAX studio nodig om de oorzaak te kunnen vinden. Deze blog post gaat echter over de optimalisatie van DAX code. Waar overigens ook DAX Studio [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/minova.nl\/en\/power-bi-solve-performance-problems\/\" \/>\n<meta property=\"og:site_name\" content=\"Minova\" \/>\n<meta property=\"article:published_time\" content=\"2021-01-25T17:32:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-05-05T11:42:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/thumbnail.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"520\" \/>\n\t<meta property=\"og:image:height\" content=\"298\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Marnix Jansen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marnix Jansen\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/minova.nl\\\/power-bi-los-performance-problemen-op\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/minova.nl\\\/power-bi-los-performance-problemen-op\\\/\"},\"author\":{\"name\":\"Marnix Jansen\",\"@id\":\"https:\\\/\\\/minova.nl\\\/#\\\/schema\\\/person\\\/7c1b3b83cdb1ccdb93c0816dd157f20e\"},\"headline\":\"Power BI: los performance problemen op\",\"datePublished\":\"2021-01-25T17:32:00+00:00\",\"dateModified\":\"2023-05-05T11:42:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/minova.nl\\\/power-bi-los-performance-problemen-op\\\/\"},\"wordCount\":819,\"image\":{\"@id\":\"https:\\\/\\\/minova.nl\\\/power-bi-los-performance-problemen-op\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/minova.nl\\\/wp-content\\\/uploads\\\/2021\\\/01\\\/thumbnail.jpg\",\"articleSection\":[\"Power BI\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/minova.nl\\\/power-bi-los-performance-problemen-op\\\/\",\"url\":\"https:\\\/\\\/minova.nl\\\/power-bi-los-performance-problemen-op\\\/\",\"name\":\"Power BI: los performance problemen op - Minova\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/minova.nl\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/minova.nl\\\/power-bi-los-performance-problemen-op\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/minova.nl\\\/power-bi-los-performance-problemen-op\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/minova.nl\\\/wp-content\\\/uploads\\\/2021\\\/01\\\/thumbnail.jpg\",\"datePublished\":\"2021-01-25T17:32:00+00:00\",\"dateModified\":\"2023-05-05T11:42:07+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/minova.nl\\\/#\\\/schema\\\/person\\\/7c1b3b83cdb1ccdb93c0816dd157f20e\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/minova.nl\\\/power-bi-los-performance-problemen-op\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/minova.nl\\\/power-bi-los-performance-problemen-op\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/minova.nl\\\/power-bi-los-performance-problemen-op\\\/#primaryimage\",\"url\":\"https:\\\/\\\/minova.nl\\\/wp-content\\\/uploads\\\/2021\\\/01\\\/thumbnail.jpg\",\"contentUrl\":\"https:\\\/\\\/minova.nl\\\/wp-content\\\/uploads\\\/2021\\\/01\\\/thumbnail.jpg\",\"width\":520,\"height\":298},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/minova.nl\\\/power-bi-los-performance-problemen-op\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/minova.nl\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Power BI: los performance problemen op\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/minova.nl\\\/#website\",\"url\":\"https:\\\/\\\/minova.nl\\\/\",\"name\":\"Minova\",\"description\":\"Van data naar inzicht\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/minova.nl\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/minova.nl\\\/#\\\/schema\\\/person\\\/7c1b3b83cdb1ccdb93c0816dd157f20e\",\"name\":\"Marnix Jansen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d0f8a0914d9cb667d4a598e0006a394cbe920eb4ec6356d0657ebcb790de8779?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d0f8a0914d9cb667d4a598e0006a394cbe920eb4ec6356d0657ebcb790de8779?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d0f8a0914d9cb667d4a598e0006a394cbe920eb4ec6356d0657ebcb790de8779?s=96&d=mm&r=g\",\"caption\":\"Marnix Jansen\"},\"sameAs\":[\"https:\\\/\\\/minova.nl\"],\"url\":\"https:\\\/\\\/minova.nl\\\/en\\\/author\\\/marnix\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Power BI: solve performance problems - Minova","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/minova.nl\/en\/power-bi-solve-performance-problems\/","og_locale":"en_US","og_type":"article","og_title":"Power BI: los performance problemen op - Minova","og_description":"Performanceproblemen in Power BI worden meestal veroorzaakt door ofwel de manier waarop de gegevens in het model zijn gestructureerd of door ineffici\u00ebnte DAX. Als het gaat om het datamodel, is DAX studio nodig om de oorzaak te kunnen vinden. Deze blog post gaat echter over de optimalisatie van DAX code. Waar overigens ook DAX Studio [&hellip;]","og_url":"https:\/\/minova.nl\/en\/power-bi-solve-performance-problems\/","og_site_name":"Minova","article_published_time":"2021-01-25T17:32:00+00:00","article_modified_time":"2023-05-05T11:42:07+00:00","og_image":[{"width":520,"height":298,"url":"https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/thumbnail.jpg","type":"image\/jpeg"}],"author":"Marnix Jansen","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Marnix Jansen","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/minova.nl\/power-bi-los-performance-problemen-op\/#article","isPartOf":{"@id":"https:\/\/minova.nl\/power-bi-los-performance-problemen-op\/"},"author":{"name":"Marnix Jansen","@id":"https:\/\/minova.nl\/#\/schema\/person\/7c1b3b83cdb1ccdb93c0816dd157f20e"},"headline":"Power BI: los performance problemen op","datePublished":"2021-01-25T17:32:00+00:00","dateModified":"2023-05-05T11:42:07+00:00","mainEntityOfPage":{"@id":"https:\/\/minova.nl\/power-bi-los-performance-problemen-op\/"},"wordCount":819,"image":{"@id":"https:\/\/minova.nl\/power-bi-los-performance-problemen-op\/#primaryimage"},"thumbnailUrl":"https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/thumbnail.jpg","articleSection":["Power BI"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/minova.nl\/power-bi-los-performance-problemen-op\/","url":"https:\/\/minova.nl\/power-bi-los-performance-problemen-op\/","name":"Power BI: solve performance problems - Minova","isPartOf":{"@id":"https:\/\/minova.nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/minova.nl\/power-bi-los-performance-problemen-op\/#primaryimage"},"image":{"@id":"https:\/\/minova.nl\/power-bi-los-performance-problemen-op\/#primaryimage"},"thumbnailUrl":"https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/thumbnail.jpg","datePublished":"2021-01-25T17:32:00+00:00","dateModified":"2023-05-05T11:42:07+00:00","author":{"@id":"https:\/\/minova.nl\/#\/schema\/person\/7c1b3b83cdb1ccdb93c0816dd157f20e"},"breadcrumb":{"@id":"https:\/\/minova.nl\/power-bi-los-performance-problemen-op\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/minova.nl\/power-bi-los-performance-problemen-op\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/minova.nl\/power-bi-los-performance-problemen-op\/#primaryimage","url":"https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/thumbnail.jpg","contentUrl":"https:\/\/minova.nl\/wp-content\/uploads\/2021\/01\/thumbnail.jpg","width":520,"height":298},{"@type":"BreadcrumbList","@id":"https:\/\/minova.nl\/power-bi-los-performance-problemen-op\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/minova.nl\/"},{"@type":"ListItem","position":2,"name":"Power BI: los performance problemen op"}]},{"@type":"WebSite","@id":"https:\/\/minova.nl\/#website","url":"https:\/\/minova.nl\/","name":"Minova","description":"From data to insight","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/minova.nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/minova.nl\/#\/schema\/person\/7c1b3b83cdb1ccdb93c0816dd157f20e","name":"Marnix Jansen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/d0f8a0914d9cb667d4a598e0006a394cbe920eb4ec6356d0657ebcb790de8779?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d0f8a0914d9cb667d4a598e0006a394cbe920eb4ec6356d0657ebcb790de8779?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d0f8a0914d9cb667d4a598e0006a394cbe920eb4ec6356d0657ebcb790de8779?s=96&d=mm&r=g","caption":"Marnix Jansen"},"sameAs":["https:\/\/minova.nl"],"url":"https:\/\/minova.nl\/en\/author\/marnix\/"}]}},"_links":{"self":[{"href":"https:\/\/minova.nl\/en\/wp-json\/wp\/v2\/posts\/9464","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/minova.nl\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/minova.nl\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/minova.nl\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/minova.nl\/en\/wp-json\/wp\/v2\/comments?post=9464"}],"version-history":[{"count":5,"href":"https:\/\/minova.nl\/en\/wp-json\/wp\/v2\/posts\/9464\/revisions"}],"predecessor-version":[{"id":11032,"href":"https:\/\/minova.nl\/en\/wp-json\/wp\/v2\/posts\/9464\/revisions\/11032"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/minova.nl\/en\/wp-json\/wp\/v2\/media\/10279"}],"wp:attachment":[{"href":"https:\/\/minova.nl\/en\/wp-json\/wp\/v2\/media?parent=9464"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/minova.nl\/en\/wp-json\/wp\/v2\/categories?post=9464"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/minova.nl\/en\/wp-json\/wp\/v2\/tags?post=9464"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}