<?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: Calculate Recursively (?) in DAX Commands and Tips</title>
    <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Calculate-Recursively/m-p/3468840#M132425</link>
    <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="628892" data-lia-user-login="konselz" class="lia-mention lia-mention-user"&gt;konselz&lt;/a&gt;,&lt;/P&gt;&lt;P&gt;I think you can do without recursion or window functions here.&amp;nbsp;&lt;/P&gt;&lt;P&gt;2 calculated columns should do it for you.&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;&lt;P&gt;In plain text:&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;ColC = 
VAR CurDate = [Date]
RETURN SUM ( Data[ColA] ) - SUMX ( FILTER ( Data, [Date] &amp;lt;= CurDate ), [ColB] )

ColA_filled = 
VAR CurDate = [Date]
VAR PrevDate = MAXX ( FILTER ( Data, Data[Date] &amp;lt; CurDate ), [Date] )
RETURN COALESCE ( [ColA], MINX ( FILTER ( Data, Data[Date] = PrevDate ), [ColC] ) )&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT size="2"&gt;Best Regards, &lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT size="2"&gt;Alexander&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT size="2"&gt;&lt;A href="https://youtube.com/@powerbi-vlog" target="_blank"&gt;My YouTube vlog in English&lt;/A&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT size="2"&gt;&lt;A href="https://youtube.com/@pbi-vlog" target="_blank"&gt;My YouTube vlog in Russian&lt;/A&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;</description>
    <pubDate>Tue, 10 Oct 2023 12:55:38 GMT</pubDate>
    <dc:creator>barritown</dc:creator>
    <dc:date>2023-10-10T12:55:38Z</dc:date>
    <item>
      <title>Calculate Recursively (?)</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Calculate-Recursively/m-p/3468324#M132393</link>
      <description>&lt;P&gt;Hi everyone,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am kind of stuck with calculating values recursively.&lt;/P&gt;&lt;P&gt;See the attached pic.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Assume we only have / are provided with the first record (1 Jan 2023).&amp;nbsp;&lt;/P&gt;&lt;P&gt;The rule is ColC = ColA - ColB.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For Feb 23 onwards, the rule is: ColA is the previous value of ColC&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;From my understanding this requires DAX measure to do recursive calculation. Is that correct?&lt;/P&gt;&lt;P&gt;Are there any other ways to achieve this without recursion as DAX does not really support recursion, e.g. using EARLIER etc?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I had a look at this video&amp;nbsp;&lt;A href="https://www.youtube.com/watch?v=Kj4BPm-Kwvw" target="_blank"&gt;https://www.youtube.com/watch?v=Kj4BPm-Kwvw&lt;/A&gt;&amp;nbsp;which using OFFSET and WINDOW functions, but I can't get it to work &lt;span class="lia-unicode-emoji" title=":disappointed_face:"&gt;😞&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any guidance and help will be much appreaciated.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 10 Oct 2023 08:51:36 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Calculate-Recursively/m-p/3468324#M132393</guid>
      <dc:creator>konselz</dc:creator>
      <dc:date>2023-10-10T08:51:36Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate Recursively (?)</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Calculate-Recursively/m-p/3468840#M132425</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="628892" data-lia-user-login="konselz" class="lia-mention lia-mention-user"&gt;konselz&lt;/a&gt;,&lt;/P&gt;&lt;P&gt;I think you can do without recursion or window functions here.&amp;nbsp;&lt;/P&gt;&lt;P&gt;2 calculated columns should do it for you.&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;&lt;P&gt;In plain text:&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;ColC = 
VAR CurDate = [Date]
RETURN SUM ( Data[ColA] ) - SUMX ( FILTER ( Data, [Date] &amp;lt;= CurDate ), [ColB] )

ColA_filled = 
VAR CurDate = [Date]
VAR PrevDate = MAXX ( FILTER ( Data, Data[Date] &amp;lt; CurDate ), [Date] )
RETURN COALESCE ( [ColA], MINX ( FILTER ( Data, Data[Date] = PrevDate ), [ColC] ) )&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT size="2"&gt;Best Regards, &lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT size="2"&gt;Alexander&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT size="2"&gt;&lt;A href="https://youtube.com/@powerbi-vlog" target="_blank"&gt;My YouTube vlog in English&lt;/A&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT size="2"&gt;&lt;A href="https://youtube.com/@pbi-vlog" target="_blank"&gt;My YouTube vlog in Russian&lt;/A&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 10 Oct 2023 12:55:38 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Calculate-Recursively/m-p/3468840#M132425</guid>
      <dc:creator>barritown</dc:creator>
      <dc:date>2023-10-10T12:55:38Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate Recursively (?)</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Calculate-Recursively/m-p/3469933#M132484</link>
      <description>&lt;P&gt;Thank you Alexander. I think I can follow that.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;However, to complicate things more, actually ColB values are not provided, but needs to be calculated based on ColA from previous month * a given factor value.&lt;/P&gt;&lt;P&gt;See the picture attached.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So the rules are:&lt;/P&gt;&lt;P&gt;1. Jan 2023 record (ColA, ColB, ColC) values are provided&lt;/P&gt;&lt;P&gt;2. Factor value of 0.5 is provided&lt;/P&gt;&lt;P&gt;3. From 1 Feb 2023 onwards,&lt;/P&gt;&lt;P&gt;ColA = ColC from previous month&lt;/P&gt;&lt;P&gt;ColB = ColA from previous month * Factor value&lt;/P&gt;&lt;P&gt;ColC = ColA - ColC&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Is this possible using the approach you mentioned above, or need a different way of solving?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks again&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 10 Oct 2023 22:52:50 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Calculate-Recursively/m-p/3469933#M132484</guid>
      <dc:creator>konselz</dc:creator>
      <dc:date>2023-10-10T22:52:50Z</dc:date>
    </item>
    <item>
      <title>Re: Calculate Recursively (?)</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Calculate-Recursively/m-p/3471670#M132570</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="628892" data-lia-user-login="konselz" class="lia-mention lia-mention-user"&gt;konselz&lt;/a&gt;,&lt;/P&gt;&lt;P&gt;With the new rules it's better to solve task in Power Query I guess. If you want a clean solution, try asking gurus in the Power Query section of this forum.&lt;/P&gt;&lt;P&gt;The not-very-clean amateurish solution from me may look like this:&lt;/P&gt;&lt;P&gt;1) First, you go to Power Query and create an index column based on the Date column.&lt;/P&gt;&lt;P&gt;2) Then you create a function like this:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;= ( i as number, a as number, b as number ) =&amp;gt;
let 
    f = List.Generate(
        () =&amp;gt; [j = 1, x = a, y = a - b],
        each [j] &amp;lt; i,
        each [y = [y] - 0.5*[x],
        x = [y],
        j = [j] + 1 ],
        each [y] )
in
    if (i = 1) then a else List.Last(f)&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;3) Then you add a custom column like this:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;= MyFunction ( [Index], List.Max(#"Changed Type"[ColA]), List.Max(#"Changed Type"[ColB]) )&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You will have ColA after that (ColB and ColC can be generated either via Power Query or via DAX):&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;&lt;P&gt;Check the file here -&amp;nbsp;&lt;A href="https://www.dropbox.com/scl/fi/cjue59hlw4jrm8olxtoh9/community-no-recursion-2.pbix?rlkey=lt0bdlbolq97iqku0rtxz13s8&amp;amp;dl=0" target="_blank"&gt;https://www.dropbox.com/scl/fi/cjue59hlw4jrm8olxtoh9/community-no-recursion-2.pbix?rlkey=lt0bdlbolq97iqku0rtxz13s8&amp;amp;dl=0&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT size="2"&gt;Best Regards, &lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT size="2"&gt;Alexander&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT size="2"&gt;&lt;A href="https://youtube.com/@powerbi-vlog" target="_blank"&gt;My YouTube vlog in English&lt;/A&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT size="2"&gt;&lt;A href="https://youtube.com/@pbi-vlog" target="_blank"&gt;My YouTube vlog in Russian&lt;/A&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 11 Oct 2023 16:17:18 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Calculate-Recursively/m-p/3471670#M132570</guid>
      <dc:creator>barritown</dc:creator>
      <dc:date>2023-10-11T16:17:18Z</dc:date>
    </item>
  </channel>
</rss>

