<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: DAX Query Optimization | Rolling customer % by feature and Period selection in DAX Commands and Tips</title>
    <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/DAX-Query-Optimization-Rolling-customer-by-feature-and-Period/m-p/1264112#M21128</link>
    <description>&lt;P&gt;Hi all!&lt;BR /&gt;&lt;BR /&gt;I just solved this problem myself &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;BR /&gt;&lt;BR /&gt;It turns out that it was&lt;/P&gt;&lt;LI-CODE lang="python"&gt;dimDates[Date] &amp;lt;= MaxDate&lt;/LI-CODE&gt;&lt;P&gt;that was turning the query slow.&lt;BR /&gt;So, to solve this, what I did was to create a calculated column (yes, I know calculated columns are bad to use! &lt;span class="lia-unicode-emoji" title=":face_with_tongue:"&gt;😛&lt;/span&gt; ) in my dimDates that returns true whenever I have dates in my fact table, so I basicly passed the above exression to a calculated column. After that, i removed the above expression from my metric and I filtered my visual by the calculated column = True.&lt;BR /&gt;&lt;BR /&gt;Please let me know if there is some better way to do this, but aparently my dax query is pretty quick now. &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;BR /&gt;Thanks.&lt;/P&gt;</description>
    <pubDate>Fri, 31 Jul 2020 07:27:03 GMT</pubDate>
    <dc:creator>SergioTorrinha</dc:creator>
    <dc:date>2020-07-31T07:27:03Z</dc:date>
    <item>
      <title>DAX Query Optimization | Rolling customer % by feature and Period selection</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/DAX-Query-Optimization-Rolling-customer-by-feature-and-Period/m-p/1264029#M21127</link>
      <description>&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In my data model, I have a fact table (named facRawDataPD_cat ) with the format below:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;dateID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; custID&amp;nbsp; variable&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;01/07/2020&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;variable1&lt;/TD&gt;&lt;TD&gt;variable1_category_1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/07/2020&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;variable1&lt;/TD&gt;&lt;TD&gt;variable1_category_2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/07/2020&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;variable1&lt;/TD&gt;&lt;TD&gt;variable1_category_3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/07/2020&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;variable1&lt;/TD&gt;&lt;TD&gt;variable1_category_4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/07/2020&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;variable2&lt;/TD&gt;&lt;TD&gt;variable2_category_1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/07/2020&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;variable2&lt;/TD&gt;&lt;TD&gt;variable2_category_2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/07/2020&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;variable2&lt;/TD&gt;&lt;TD&gt;variable2_category_3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/07/2020&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;variable2&lt;/TD&gt;&lt;TD&gt;variable2_category_3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/07/2020&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;variable3&lt;/TD&gt;&lt;TD&gt;variable3_category_1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/07/2020&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;variable3&lt;/TD&gt;&lt;TD&gt;variable3_category_2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/07/2020&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;variable3&lt;/TD&gt;&lt;TD&gt;variable3_category_3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;01/07/2020&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;variable3&lt;/TD&gt;&lt;TD&gt;variable3_category_4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;02/07/2020&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;variable1&lt;/TD&gt;&lt;TD&gt;variable1_category_1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;02/07/2020&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;variable1&lt;/TD&gt;&lt;TD&gt;variable1_category_2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;02/07/2020&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;variable1&lt;/TD&gt;&lt;TD&gt;variable1_category_3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;02/07/2020&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;variable1&lt;/TD&gt;&lt;TD&gt;variable1_category_4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;02/07/2020&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;variable2&lt;/TD&gt;&lt;TD&gt;variable2_category_1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;02/07/2020&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;variable2&lt;/TD&gt;&lt;TD&gt;variable2_category_2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;02/07/2020&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;variable2&lt;/TD&gt;&lt;TD&gt;variable2_category_3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;02/07/2020&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;variable2&lt;/TD&gt;&lt;TD&gt;variable2_category_3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;02/07/2020&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;variable3&lt;/TD&gt;&lt;TD&gt;variable3_category_1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;02/07/2020&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;variable3&lt;/TD&gt;&lt;TD&gt;variable3_category_2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;02/07/2020&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;variable3&lt;/TD&gt;&lt;TD&gt;variable3_category_3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;02/07/2020&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;variable3&lt;/TD&gt;&lt;TD&gt;variable3_category_4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;03/07/2020&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;variable1&lt;/TD&gt;&lt;TD&gt;variable1_category_1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;03/07/2020&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;variable1&lt;/TD&gt;&lt;TD&gt;variable1_category_2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;03/07/2020&lt;/TD&gt;&lt;TD&gt;11&lt;/TD&gt;&lt;TD&gt;variable1&lt;/TD&gt;&lt;TD&gt;variable1_category_3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;03/07/2020&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;variable1&lt;/TD&gt;&lt;TD&gt;variable1_category_4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;03/07/2020&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;variable2&lt;/TD&gt;&lt;TD&gt;variable2_category_1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;03/07/2020&lt;/TD&gt;&lt;TD&gt;11&lt;/TD&gt;&lt;TD&gt;variable2&lt;/TD&gt;&lt;TD&gt;variable2_category_2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;03/07/2020&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;variable2&lt;/TD&gt;&lt;TD&gt;variable2_category_3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;03/07/2020&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;variable2&lt;/TD&gt;&lt;TD&gt;variable2_category_1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;03/07/2020&lt;/TD&gt;&lt;TD&gt;11&lt;/TD&gt;&lt;TD&gt;variable3&lt;/TD&gt;&lt;TD&gt;variable3_category_1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;03/07/2020&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;variable3&lt;/TD&gt;&lt;TD&gt;variable3_category_2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;03/07/2020&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;variable3&lt;/TD&gt;&lt;TD&gt;variable3_category_3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;03/07/2020&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;TD&gt;variable3&lt;/TD&gt;&lt;TD&gt;variable3_category_4&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;and, of course i have also a calendar/dates table (named dimDates) that connects to this fact table by the dateID.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;I have built the following metric to return the rolling % of customer by variable category across time (dates in this case) and according a certain amount of days, which the user can select to calculate - for example, a user might want to know how was the rolling customer% in the last 7 days for each variable category, in other cases the user might want to know how was the same figure for the last 15 days and so on. I also have a seperate table for this (names dimPeriods). Also, the user is alowed to select the variable (in a slicer) that he wants to analyse:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;% Customers Selected Feature = 
VAR SelDays =
    SELECTEDVALUE ( dimPeriods[Days] )
VAR MaxDate =
    LASTDATE ( facRawDataPD_cat[dateID] )
VAR SelFeature = [SelectedFeature]

RETURN
    DIVIDE (
        CALCULATE (
            COUNT ( facRawDataPD_cat[value] ),
            facRawDataPD_cat[variable] = SelFeature,
            DATESINPERIOD ( dimDates[Date], LASTDATE ( dimDates[Date] ), - SelDays, DAY ),
            dimDates[Date] &amp;lt;= MaxDate
        ),
        CALCULATE (
            COUNT ( facRawDataPD_cat[value] ),
            facRawDataPD_cat[variable] = SelFeature,
            ALL ( facRawDataPD_cat[value] ),
            DATESINPERIOD ( dimDates[Date], LASTDATE ( dimDates[Date] ), - SelDays, DAY ),
            dimDates[Date] &amp;lt;= MaxDate
        )
    )&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;As you can see, the metric has the following parameters:&lt;/P&gt;&lt;P&gt;- a period - which consists in the number of days the user want the calculations done&lt;/P&gt;&lt;P&gt;- a variable selection - which consists in the names of the variables in the fact table&lt;/P&gt;&lt;P&gt;- a Maximum date - which consists in the maximum date for whitch there is data available for calculation&lt;/P&gt;&lt;P&gt;This metric, although is returning correct results, its a bit slow and I would like to speed it up but don't know where to start to optimize it.&lt;/P&gt;&lt;P&gt;Before coming for your help, I have tried to "pull out" the&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="python"&gt;DATESINPERIOD ( dimDates[Date], LASTDATE ( dimDates[Date] ), - SelDays, DAY ),
            dimDates[Date] &amp;lt;= MaxDate&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;but then the results weren't correct.&lt;/P&gt;&lt;P&gt;So, my question is, how can I optimize this metric given it is used to build a nice line chart with the dynamics (Period + variable selections) ?&lt;BR /&gt;&lt;BR /&gt;Thanks in advance and sorry if the post is a little confusing &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 31 Jul 2020 06:42:34 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/DAX-Query-Optimization-Rolling-customer-by-feature-and-Period/m-p/1264029#M21127</guid>
      <dc:creator>SergioTorrinha</dc:creator>
      <dc:date>2020-07-31T06:42:34Z</dc:date>
    </item>
    <item>
      <title>Re: DAX Query Optimization | Rolling customer % by feature and Period selection</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/DAX-Query-Optimization-Rolling-customer-by-feature-and-Period/m-p/1264112#M21128</link>
      <description>&lt;P&gt;Hi all!&lt;BR /&gt;&lt;BR /&gt;I just solved this problem myself &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;BR /&gt;&lt;BR /&gt;It turns out that it was&lt;/P&gt;&lt;LI-CODE lang="python"&gt;dimDates[Date] &amp;lt;= MaxDate&lt;/LI-CODE&gt;&lt;P&gt;that was turning the query slow.&lt;BR /&gt;So, to solve this, what I did was to create a calculated column (yes, I know calculated columns are bad to use! &lt;span class="lia-unicode-emoji" title=":face_with_tongue:"&gt;😛&lt;/span&gt; ) in my dimDates that returns true whenever I have dates in my fact table, so I basicly passed the above exression to a calculated column. After that, i removed the above expression from my metric and I filtered my visual by the calculated column = True.&lt;BR /&gt;&lt;BR /&gt;Please let me know if there is some better way to do this, but aparently my dax query is pretty quick now. &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;BR /&gt;Thanks.&lt;/P&gt;</description>
      <pubDate>Fri, 31 Jul 2020 07:27:03 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/DAX-Query-Optimization-Rolling-customer-by-feature-and-Period/m-p/1264112#M21128</guid>
      <dc:creator>SergioTorrinha</dc:creator>
      <dc:date>2020-07-31T07:27:03Z</dc:date>
    </item>
  </channel>
</rss>

