<?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 DDB in Quick Measures Gallery</title>
    <link>https://community.fabric.microsoft.com/t5/Quick-Measures-Gallery/DDB/m-p/1082637#M516</link>
    <description>&lt;P&gt;&lt;A title="" href="https://community.powerbi.com/t5/Community-Blog/Excel-to-DAX-Translation/ba-p/1060991" target="_self"&gt;In my recent quest to create or catalog as many DAX equivalents for Excel functions&lt;/A&gt;&lt;SPAN&gt;, as with &lt;A href="https://community.powerbi.com/t5/Quick-Measures-Gallery/DB/td-p/1082635" target="_self"&gt;DB&lt;/A&gt;,&amp;nbsp;because DDB involves recursion, there is no "clean" DAX solution, it's ugly and you have to use reasonable maximum. &lt;span class="lia-unicode-emoji" title=":disappointed_face:"&gt;😞&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;DDB = 
    VAR __Cost = [Cost]
    VAR __Salvage = [Salvage]
    VAR __Life = [Life] * MAX('Table'[Lifetime Multiplier])
    VAR __Period = MAX('Table'[Period])
    VAR __Factor = IF(ISBLANK(MAX('Table'[Factor])),2,MAX('Table'[Factor]))
    VAR __Rate = __Factor / __Life
    VAR __Table1 = { (1, MINX( { (__Cost - 0) * __Rate, __Cost - __Salvage - 0 },[Value]) ) }
    VAR __Table2 = { (2, MINX( { (__Cost - SUMX(__Table1,[Value2])) * __Rate, __Cost - __Salvage - SUMX(__Table1,[Value2]) },[Value])) }
    VAR __Table3 = { (3, MINX( { (__Cost - SUMX(UNION(__Table1,__Table2),[Value2])) * __Rate, __Cost - __Salvage - SUMX(UNION(__Table1,__Table2),[Value2]) },[Value])) }
    VAR __Table4 = { (4,  MINX( { (__Cost - SUMX(UNION(__Table1,__Table2,__Table3),[Value2])) * __Rate, __Cost - __Salvage - SUMX(UNION(__Table1,__Table2,__Table3),[Value2]) },[Value])) }
    VAR __Table5 = { (5, MINX( { (__Cost - SUMX(UNION(__Table1,__Table2,__Table3,__Table4),[Value2])) * __Rate, __Cost - __Salvage - SUMX(UNION(__Table1,__Table2,__Table3,__Table4),[Value2]) },[Value])) }
    VAR __Table6 = { (6, MINX( { (__Cost - SUMX(UNION(__Table1,__Table2,__Table3,__Table4,__Table5),[Value2])) * __Rate, __Cost - __Salvage - SUMX(UNION(__Table1,__Table2,__Table3,__Table4,__Table5),[Value2]) },[Value])) }
    VAR __Table7 = { (7, MINX( { (__Cost - SUMX(UNION(__Table1,__Table2,__Table3,__Table4,__Table5,__Table6),[Value2])) * __Rate, __Cost - __Salvage - SUMX(UNION(__Table1,__Table2,__Table3,__Table4,__Table5,__Table6),[Value2]) },[Value])) }
    VAR __Table8 = { (8, MINX( { (__Cost - SUMX(UNION(__Table1,__Table2,__Table3,__Table4,__Table5,__Table6,__Table7),[Value2])) * __Rate, __Cost - __Salvage - SUMX(UNION(__Table1,__Table2,__Table3,__Table4,__Table5,__Table6,__Table7),[Value2]) },[Value])) }
    VAR __Table9 = { (9, MINX( { (__Cost - SUMX(UNION(__Table1,__Table2,__Table3,__Table4,__Table5,__Table6,__Table7,__Table8),[Value2])) * __Rate, __Cost - __Salvage - SUMX(UNION(__Table1,__Table2,__Table3,__Table4,__Table5,__Table6,__Table7,__Table8),[Value2]) },[Value])) }
    VAR __Table10 = { (10, MINX( { (__Cost - SUMX(UNION(__Table1,__Table2,__Table3,__Table4,__Table5,__Table6,__Table7,__Table8,__Table9),[Value2])) * __Rate, __Cost - __Salvage - SUMX(UNION(__Table1,__Table2,__Table3,__Table4,__Table5,__Table6,__Table7,__Table8,__Table9),[Value2]) },[Value])) }
   VAR __Table11 = { (11, MINX( { (__Cost - SUMX(UNION(__Table1,__Table2,__Table3,__Table4,__Table5,__Table6,__Table7,__Table8,__Table9,__Table10),[Value2])) * __Rate, __Cost - __Salvage - SUMX(UNION(__Table1,__Table2,__Table3,__Table4,__Table5,__Table6,__Table7,__Table8,__Table9,__Table10),[Value2]) },[Value])) }
    VAR __Table = UNION(__Table11,__Table10, __Table9,__Table8,__Table7,__Table6,__Table5,__Table4,__Table3,__Table2,__Table1)
RETURN
    MAXX(FILTER(__Table,[Value1] = __Period),[Value2])&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="reportid hidden"&gt;eyJrIjoiODdiOTIyOGItMGIwMC00NDQ4LTkzNmUtMDcyNGM1MTMyZWZkIiwidCI6IjRhMDQyNzQzLTM3M2EtNDNkMi04MjdiLTAwM2Y0YzdiYTFlNSIsImMiOjN9&lt;/SPAN&gt;&lt;/P&gt;</description>
    <pubDate>Sun, 10 May 2020 05:23:32 GMT</pubDate>
    <dc:creator>Greg_Deckler</dc:creator>
    <dc:date>2020-05-10T05:23:32Z</dc:date>
    <item>
      <title>DDB</title>
      <link>https://community.fabric.microsoft.com/t5/Quick-Measures-Gallery/DDB/m-p/1082637#M516</link>
      <description>&lt;P&gt;&lt;A title="" href="https://community.powerbi.com/t5/Community-Blog/Excel-to-DAX-Translation/ba-p/1060991" target="_self"&gt;In my recent quest to create or catalog as many DAX equivalents for Excel functions&lt;/A&gt;&lt;SPAN&gt;, as with &lt;A href="https://community.powerbi.com/t5/Quick-Measures-Gallery/DB/td-p/1082635" target="_self"&gt;DB&lt;/A&gt;,&amp;nbsp;because DDB involves recursion, there is no "clean" DAX solution, it's ugly and you have to use reasonable maximum. &lt;span class="lia-unicode-emoji" title=":disappointed_face:"&gt;😞&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;DDB = 
    VAR __Cost = [Cost]
    VAR __Salvage = [Salvage]
    VAR __Life = [Life] * MAX('Table'[Lifetime Multiplier])
    VAR __Period = MAX('Table'[Period])
    VAR __Factor = IF(ISBLANK(MAX('Table'[Factor])),2,MAX('Table'[Factor]))
    VAR __Rate = __Factor / __Life
    VAR __Table1 = { (1, MINX( { (__Cost - 0) * __Rate, __Cost - __Salvage - 0 },[Value]) ) }
    VAR __Table2 = { (2, MINX( { (__Cost - SUMX(__Table1,[Value2])) * __Rate, __Cost - __Salvage - SUMX(__Table1,[Value2]) },[Value])) }
    VAR __Table3 = { (3, MINX( { (__Cost - SUMX(UNION(__Table1,__Table2),[Value2])) * __Rate, __Cost - __Salvage - SUMX(UNION(__Table1,__Table2),[Value2]) },[Value])) }
    VAR __Table4 = { (4,  MINX( { (__Cost - SUMX(UNION(__Table1,__Table2,__Table3),[Value2])) * __Rate, __Cost - __Salvage - SUMX(UNION(__Table1,__Table2,__Table3),[Value2]) },[Value])) }
    VAR __Table5 = { (5, MINX( { (__Cost - SUMX(UNION(__Table1,__Table2,__Table3,__Table4),[Value2])) * __Rate, __Cost - __Salvage - SUMX(UNION(__Table1,__Table2,__Table3,__Table4),[Value2]) },[Value])) }
    VAR __Table6 = { (6, MINX( { (__Cost - SUMX(UNION(__Table1,__Table2,__Table3,__Table4,__Table5),[Value2])) * __Rate, __Cost - __Salvage - SUMX(UNION(__Table1,__Table2,__Table3,__Table4,__Table5),[Value2]) },[Value])) }
    VAR __Table7 = { (7, MINX( { (__Cost - SUMX(UNION(__Table1,__Table2,__Table3,__Table4,__Table5,__Table6),[Value2])) * __Rate, __Cost - __Salvage - SUMX(UNION(__Table1,__Table2,__Table3,__Table4,__Table5,__Table6),[Value2]) },[Value])) }
    VAR __Table8 = { (8, MINX( { (__Cost - SUMX(UNION(__Table1,__Table2,__Table3,__Table4,__Table5,__Table6,__Table7),[Value2])) * __Rate, __Cost - __Salvage - SUMX(UNION(__Table1,__Table2,__Table3,__Table4,__Table5,__Table6,__Table7),[Value2]) },[Value])) }
    VAR __Table9 = { (9, MINX( { (__Cost - SUMX(UNION(__Table1,__Table2,__Table3,__Table4,__Table5,__Table6,__Table7,__Table8),[Value2])) * __Rate, __Cost - __Salvage - SUMX(UNION(__Table1,__Table2,__Table3,__Table4,__Table5,__Table6,__Table7,__Table8),[Value2]) },[Value])) }
    VAR __Table10 = { (10, MINX( { (__Cost - SUMX(UNION(__Table1,__Table2,__Table3,__Table4,__Table5,__Table6,__Table7,__Table8,__Table9),[Value2])) * __Rate, __Cost - __Salvage - SUMX(UNION(__Table1,__Table2,__Table3,__Table4,__Table5,__Table6,__Table7,__Table8,__Table9),[Value2]) },[Value])) }
   VAR __Table11 = { (11, MINX( { (__Cost - SUMX(UNION(__Table1,__Table2,__Table3,__Table4,__Table5,__Table6,__Table7,__Table8,__Table9,__Table10),[Value2])) * __Rate, __Cost - __Salvage - SUMX(UNION(__Table1,__Table2,__Table3,__Table4,__Table5,__Table6,__Table7,__Table8,__Table9,__Table10),[Value2]) },[Value])) }
    VAR __Table = UNION(__Table11,__Table10, __Table9,__Table8,__Table7,__Table6,__Table5,__Table4,__Table3,__Table2,__Table1)
RETURN
    MAXX(FILTER(__Table,[Value1] = __Period),[Value2])&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="reportid hidden"&gt;eyJrIjoiODdiOTIyOGItMGIwMC00NDQ4LTkzNmUtMDcyNGM1MTMyZWZkIiwidCI6IjRhMDQyNzQzLTM3M2EtNDNkMi04MjdiLTAwM2Y0YzdiYTFlNSIsImMiOjN9&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Sun, 10 May 2020 05:23:32 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Quick-Measures-Gallery/DDB/m-p/1082637#M516</guid>
      <dc:creator>Greg_Deckler</dc:creator>
      <dc:date>2020-05-10T05:23:32Z</dc:date>
    </item>
  </channel>
</rss>

