<?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: SUMX returning blanks (BonusPoints: avoiding circular logic) in DAX Commands and Tips</title>
    <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/SUMX-returning-blanks-BonusPoints-avoiding-circular-logic/m-p/3273075#M121372</link>
    <description>&lt;P&gt;I don't believe it is as hopeless a situation as you describe.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;I was able to make some progress - though I admit I still don't have the full solution.&amp;nbsp;&lt;BR /&gt;After calculating the demand referred out, and calculating the demand remaining at the PSA, I have a measure for the demand referred in for each PSA as follows:&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;REFERRED_IN = &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;VAR&lt;/SPAN&gt; &lt;SPAN&gt;__currentPSA&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;MAX&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;SDP_OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;[PSA_NAME]&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;VAR&lt;/SPAN&gt; &lt;SPAN&gt;__currentSTOP&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;MAX&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;SDP_OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;[STOP_CODE]&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;RETURN&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;CALCULATE&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SUMX&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;SDP_OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;[REFERRED_OUT]&lt;/SPAN&gt;&lt;SPAN&gt;),&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;REMOVEFILTERS&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;SDP_OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;), &lt;/SPAN&gt;&lt;SPAN&gt;SDP_OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;[REFERRAL_LOCATION]&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;__currentPSA&lt;/SPAN&gt;&lt;SPAN&gt; &amp;amp;&amp;amp; &lt;/SPAN&gt;&lt;SPAN&gt;SDP_OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;[STOP_CODE]&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;__currentSTOP&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&lt;BR /&gt;This resolves the first issue I originally posted about. I then took it a step further, by simply writing another measure that adds the Referred In demand and the "Adjusted Demand" - which probably isn't the best name for the field but it represents the demand originated at the PSA minus the portion that was referred out.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;I think of this as the first cycle of referral. For any PSA that receives no Referred In demand, this is the end of the calculation but the problem is that some PSAs continue to refer their new adjusted demand onto another location. And the important part to remember is that it may not always be sending on 100% of it's demand.&amp;nbsp;&lt;BR /&gt;To calculate this, I wrote a measure that subtracts the demand that the PSA already referred out from its Adjusted Demand, and then multiplie by the referral percentage. I subtract the referred out demand from the first cycle first so that I don't double dip on the referral percentage. Also, some PSAs will have already referred out 100% of their demand, so the subtraction will result in a negative number. I handle that with a conditional statement that just returns zero.&amp;nbsp;&lt;BR /&gt;The measure looks like this:&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;2nd Reff = &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;VAR&lt;/SPAN&gt; &lt;SPAN&gt;__remainder&lt;/SPAN&gt;&lt;SPAN&gt; = (&lt;/SPAN&gt;&lt;SPAN&gt;[1st_ADJUSTED_DEMAND]&lt;/SPAN&gt;&lt;SPAN&gt; - &lt;/SPAN&gt;&lt;SPAN&gt;[REFERRED_OUT]&lt;/SPAN&gt;&lt;SPAN&gt;) * &lt;/SPAN&gt;&lt;SPAN&gt;SUM&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;SDP_OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;[REFERRAL_PERC]&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;VAR&lt;/SPAN&gt; &lt;SPAN&gt;__solution&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;IF&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;__remainder&lt;/SPAN&gt;&lt;SPAN&gt; &amp;gt; &lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;__remainder&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;RETURN&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&lt;SPAN&gt;__solution&lt;BR /&gt;&lt;BR /&gt;This is the new demand that each PSA has to send on to another PSA for the second cycle.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;To get to the demand at the end of the second cycle of referral, I have a measure like this:&lt;BR /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;2nd_ADJUSTED_DEMAND = &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;VAR&lt;/SPAN&gt; &lt;SPAN&gt;__currentPSA&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;MAX&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;SDP_OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;[PSA_NAME]&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;VAR&lt;/SPAN&gt; &lt;SPAN&gt;__currentSTOP&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;MAX&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;SDP_OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;[STOP_CODE]&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;VAR&lt;/SPAN&gt; &lt;SPAN&gt;__currentRefL&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;MAX&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;SDP_OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;[REFERRAL_LOCATION]&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;VAR&lt;/SPAN&gt; &lt;SPAN&gt;__solution&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;CALCULATE&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SUMX&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;SDP_OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;, (&lt;/SPAN&gt;&lt;SPAN&gt;[2nd Reff]&lt;/SPAN&gt;&lt;SPAN&gt;)),&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;REMOVEFILTERS&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;SDP_OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;), &lt;/SPAN&gt;&lt;SPAN&gt;SDP_OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;[REFERRAL_LOCATION]&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;__currentPSA&lt;/SPAN&gt;&lt;SPAN&gt; &amp;amp;&amp;amp; &lt;/SPAN&gt;&lt;SPAN&gt;SDP_OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;[STOP_CODE]&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;__currentSTOP&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;RETURN&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;IF&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;__currentPSA&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;__currentRefL&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;[1st_ADJUSTED_DEMAND]&lt;/SPAN&gt;&lt;SPAN&gt; + &lt;/SPAN&gt;&lt;SPAN&gt;__solution&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;[1st_ADJUSTED_DEMAND]&lt;/SPAN&gt;&lt;SPAN&gt; - &lt;/SPAN&gt;&lt;SPAN&gt;[2nd Reff]&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;I get the sum of all of the demand I calculated for the second cycle, and add it to the demand calculated in at the end of the first cycle, but only for each PSA where it is programmed not to refer demand on to any location other than its-self (this is the default setting for PSA referral locations if they are not referring demand on). If the PSA dose have a referral location, then I subtract this second cycle of referred out demand from the first cycle of demand.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;This solution with a series of measures works. However, it is predicated on the fact that at most there are 2 cycles of referral. Either the demand goes from A to B, or from A to B to C.&amp;nbsp;&lt;BR /&gt;I am certain there has to be a way to combine all of these measures into a single calculation - someone better than me in writing DAX could figure out... Then, if I could just&amp;nbsp;have the measure understand the referral pattern first... If I could calculate the number of referrals/relationships... that would be the final solution.&lt;/DIV&gt;&lt;/DIV&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
    <pubDate>Wed, 07 Jun 2023 15:59:05 GMT</pubDate>
    <dc:creator>nickc_innova</dc:creator>
    <dc:date>2023-06-07T15:59:05Z</dc:date>
    <item>
      <title>SUMX returning blanks (BonusPoints: avoiding circular logic)</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/SUMX-returning-blanks-BonusPoints-avoiding-circular-logic/m-p/3269353#M121112</link>
      <description>&lt;P&gt;I am performing an analysis on referral patterns.&amp;nbsp;&lt;BR /&gt;I have a single table of data named SDP_OUTPUT that contains locations named [PSA_NAME] for which there are 13 distinct values.&amp;nbsp;&lt;BR /&gt;The table contains a column of IDs named [STOP_CODE]. For each [PSA_NAME] + [STOP_CODE] the row in the table is unique.&amp;nbsp;&lt;BR /&gt;Other fields are [REFERRAL_LOCATION], [REFERRAL_PERC] and [STOP_TOTAL_DEMAND].&lt;BR /&gt;The Referral Location represents where the demand for the STOP code is being sent. Each PSA+STOP code only sends its demand to one location, but a location can receive demand from multiple locations. The Referral_Perc is the percentage being referred on to the referral location (between 0% and 100%). And finally, the STOP_total_demand is the demand generated at the PSA location before any referral.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;My objective is to calculate all of the demand being referred out, referred in, and the final adjusted demand after referrals.&amp;nbsp;&lt;BR /&gt;I have to be careful to stage out the calculation or end up in a mathematical loop.&amp;nbsp;&lt;BR /&gt;I first created a measure to calculate all of the workload being referred out, but set a condition for the calculation to first check that for the given PSA+STOP code, no workload is being referred in.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;REFERRED_OUT = &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;VAR&lt;/SPAN&gt; &lt;SPAN&gt;CurrentPSAName&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;MAX&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;'SDP_OUTPUT'&lt;/SPAN&gt;&lt;SPAN&gt;[PSA_NAME]&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;VAR&lt;/SPAN&gt; &lt;SPAN&gt;CurrentStopCode&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;MAX&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;'SDP_OUTPUT'&lt;/SPAN&gt;&lt;SPAN&gt;[STOP_CODE]&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;VAR&lt;/SPAN&gt; &lt;SPAN&gt;CurrentStopDemand&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;MAX&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;'SDP_OUTPUT'&lt;/SPAN&gt;&lt;SPAN&gt;[STOP_TOTAL_DEMAND]&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;VAR&lt;/SPAN&gt; &lt;SPAN&gt;CurrentRefPerc&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;MAX&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;'SDP_OUTPUT'&lt;/SPAN&gt;&lt;SPAN&gt;[REFERRAL_PERC]&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;VAR&lt;/SPAN&gt; &lt;SPAN&gt;ReferredInRowCount&lt;/SPAN&gt;&lt;SPAN&gt; =&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;CALCULATE&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;COUNTROWS&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;'SDP_OUTPUT'&lt;/SPAN&gt;&lt;SPAN&gt;),&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;'SDP_OUTPUT'&lt;/SPAN&gt;&lt;SPAN&gt;[REFERRAL_LOCATION]&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;CurrentPSAName&lt;/SPAN&gt;&lt;SPAN&gt; &amp;amp;&amp;amp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;'SDP_OUTPUT'&lt;/SPAN&gt;&lt;SPAN&gt;[PSA_NAME]&lt;/SPAN&gt;&lt;SPAN&gt; &amp;lt;&amp;gt; &lt;/SPAN&gt;&lt;SPAN&gt;CurrentPSAName&lt;/SPAN&gt;&lt;SPAN&gt; &amp;amp;&amp;amp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;'SDP_OUTPUT'&lt;/SPAN&gt;&lt;SPAN&gt;[STOP_CODE]&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;CurrentStopCode&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; )&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;RETURN&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;IF&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;ReferredInRowCount&lt;/SPAN&gt;&lt;SPAN&gt; &amp;gt; &lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;BLANK&lt;/SPAN&gt;&lt;SPAN&gt;(),&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;CurrentStopDemand&lt;/SPAN&gt;&lt;SPAN&gt; * &lt;/SPAN&gt;&lt;SPAN&gt;CurrentRefPerc&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; )&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&lt;BR /&gt;Next, I created a 2nd measure named Adjusted Direct Demand.&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;ADJUSTED_DIRECT_DEMAND = &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SUM&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;'SDP_OUTPUT'&lt;/SPAN&gt;&lt;SPAN&gt;[STOP_TOTAL_DEMAND]&lt;/SPAN&gt;&lt;SPAN&gt;) - &lt;/SPAN&gt;&lt;SPAN&gt;[REFERRED_OUT]&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;Now I am trying to create a 3rd measure named Referred In, but this is where I am running into trouble.&amp;nbsp;&lt;BR /&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;REFERRED_IN = &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;VAR&lt;/SPAN&gt; &lt;SPAN&gt;CurrentPSAName&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;MAX&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;'SDP_OUTPUT'&lt;/SPAN&gt;&lt;SPAN&gt;[PSA_NAME]&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;VAR&lt;/SPAN&gt; &lt;SPAN&gt;CurrentStopCode&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;MAX&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;'SDP_OUTPUT'&lt;/SPAN&gt;&lt;SPAN&gt;[STOP_CODE]&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;VAR&lt;/SPAN&gt; &lt;SPAN&gt;ReferredInTable&lt;/SPAN&gt;&lt;SPAN&gt; =&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;FILTER&lt;/SPAN&gt;&lt;SPAN&gt; (&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;'SDP_OUTPUT'&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;'SDP_OUTPUT'&lt;/SPAN&gt;&lt;SPAN&gt;[STOP_CODE]&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;CurrentStopCode&lt;/SPAN&gt;&lt;SPAN&gt; &amp;amp;&amp;amp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;'SDP_OUTPUT'&lt;/SPAN&gt;&lt;SPAN&gt;[REFERRAL_LOCATION]&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;CurrentPSAName&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; )&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;RETURN&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;SUMX&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;ReferredInTable&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;[REFERRED_OUT]&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;This measure is returning blank results.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;img /&gt;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;PSA_NAME&lt;/TD&gt;&lt;TD&gt;STOP_CODE&lt;/TD&gt;&lt;TD&gt;REFERRAL_LOCATION&lt;/TD&gt;&lt;TD&gt;REFERRAL_PERC&lt;/TD&gt;&lt;TD&gt;STOP_TOTAL_DEMAND&lt;/TD&gt;&lt;TD&gt;REFERRED_OUT&lt;/TD&gt;&lt;TD&gt;ADJUSTED_DIRECT_DEMAND&lt;/TD&gt;&lt;TD&gt;REFERRED_IN&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Antelope Valley&lt;/TD&gt;&lt;TD&gt;1002&lt;/TD&gt;&lt;TD&gt;Sepulveda&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;118575.7&lt;/TD&gt;&lt;TD&gt;118575.7&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Antelope Valley&lt;/TD&gt;&lt;TD&gt;104&lt;/TD&gt;&lt;TD&gt;Sepulveda&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;233.7255&lt;/TD&gt;&lt;TD&gt;233.7255&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Bakersfield&lt;/TD&gt;&lt;TD&gt;1002&lt;/TD&gt;&lt;TD&gt;Sepulveda&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;133481.7&lt;/TD&gt;&lt;TD&gt;133481.7&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Bakersfield&lt;/TD&gt;&lt;TD&gt;104&lt;/TD&gt;&lt;TD&gt;Sepulveda&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;190.7225&lt;/TD&gt;&lt;TD&gt;190.7225&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;East Los Angeles&lt;/TD&gt;&lt;TD&gt;1002&lt;/TD&gt;&lt;TD&gt;Los Angeles&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;34798.76&lt;/TD&gt;&lt;TD&gt;34798.76&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;East Los Angeles&lt;/TD&gt;&lt;TD&gt;104&lt;/TD&gt;&lt;TD&gt;West Los Angeles&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;73.47664&lt;/TD&gt;&lt;TD&gt;73.47664&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Lake Isabella&lt;/TD&gt;&lt;TD&gt;1002&lt;/TD&gt;&lt;TD&gt;Sepulveda&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;5988.846&lt;/TD&gt;&lt;TD&gt;5988.846&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Lake Isabella&lt;/TD&gt;&lt;TD&gt;104&lt;/TD&gt;&lt;TD&gt;Sepulveda&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;8.557033&lt;/TD&gt;&lt;TD&gt;8.557033&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Los Angeles&lt;/TD&gt;&lt;TD&gt;1002&lt;/TD&gt;&lt;TD&gt;West Los Angeles&lt;/TD&gt;&lt;TD&gt;0.5&lt;/TD&gt;&lt;TD&gt;149614&lt;/TD&gt;&lt;TD&gt;74807.02&lt;/TD&gt;&lt;TD&gt;74807.02&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Los Angeles&lt;/TD&gt;&lt;TD&gt;104&lt;/TD&gt;&lt;TD&gt;West Los Angeles&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;315.906&lt;/TD&gt;&lt;TD&gt;315.906&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Ridgecrest&lt;/TD&gt;&lt;TD&gt;1002&lt;/TD&gt;&lt;TD&gt;Sepulveda&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;20467.5&lt;/TD&gt;&lt;TD&gt;20467.5&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Ridgecrest&lt;/TD&gt;&lt;TD&gt;104&lt;/TD&gt;&lt;TD&gt;Sepulveda&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;29.24454&lt;/TD&gt;&lt;TD&gt;29.24454&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;San Gabriel&lt;/TD&gt;&lt;TD&gt;1002&lt;/TD&gt;&lt;TD&gt;Sepulveda&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;190845.9&lt;/TD&gt;&lt;TD&gt;190845.9&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;San Gabriel&lt;/TD&gt;&lt;TD&gt;104&lt;/TD&gt;&lt;TD&gt;Sepulveda&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;402.966&lt;/TD&gt;&lt;TD&gt;402.966&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;San Luis Obispo&lt;/TD&gt;&lt;TD&gt;1002&lt;/TD&gt;&lt;TD&gt;Sepulveda&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;51814.83&lt;/TD&gt;&lt;TD&gt;51814.83&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;San Luis Obispo&lt;/TD&gt;&lt;TD&gt;104&lt;/TD&gt;&lt;TD&gt;Sepulveda&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;70.79026&lt;/TD&gt;&lt;TD&gt;70.79026&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Santa Maria&lt;/TD&gt;&lt;TD&gt;1002&lt;/TD&gt;&lt;TD&gt;Sepulveda&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;84130.06&lt;/TD&gt;&lt;TD&gt;84130.06&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Santa Maria&lt;/TD&gt;&lt;TD&gt;104&lt;/TD&gt;&lt;TD&gt;Sepulveda&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;129.6575&lt;/TD&gt;&lt;TD&gt;129.6575&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Sepulveda&lt;/TD&gt;&lt;TD&gt;1002&lt;/TD&gt;&lt;TD&gt;Sepulveda&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;232407.9&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;232407.9&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Sepulveda&lt;/TD&gt;&lt;TD&gt;104&lt;/TD&gt;&lt;TD&gt;West Los Angeles&lt;/TD&gt;&lt;TD&gt;0.542&lt;/TD&gt;&lt;TD&gt;480.2137&lt;/TD&gt;&lt;TD&gt;260.2758&lt;/TD&gt;&lt;TD&gt;219.9379&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;South Los Angeles&lt;/TD&gt;&lt;TD&gt;1002&lt;/TD&gt;&lt;TD&gt;West Los Angeles&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;130810.3&lt;/TD&gt;&lt;TD&gt;130810.3&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;South Los Angeles&lt;/TD&gt;&lt;TD&gt;104&lt;/TD&gt;&lt;TD&gt;West Los Angeles&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;276.2024&lt;/TD&gt;&lt;TD&gt;276.2024&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Ventura&lt;/TD&gt;&lt;TD&gt;1002&lt;/TD&gt;&lt;TD&gt;Sepulveda&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;142020.2&lt;/TD&gt;&lt;TD&gt;142020.2&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Ventura&lt;/TD&gt;&lt;TD&gt;104&lt;/TD&gt;&lt;TD&gt;Sepulveda&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;240.2623&lt;/TD&gt;&lt;TD&gt;240.2623&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;West Los Angeles&lt;/TD&gt;&lt;TD&gt;1002&lt;/TD&gt;&lt;TD&gt;West Los Angeles&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;73635.01&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;73635.01&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;West Los Angeles&lt;/TD&gt;&lt;TD&gt;104&lt;/TD&gt;&lt;TD&gt;West Los Angeles&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;155.4783&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;155.4783&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;SPAN&gt;&lt;BR /&gt;For [PSA_NAME] Los Angeles, I expect [REFERRED_IN] to equal 347,983.76.&lt;BR /&gt;For [PSA_NAME] Sepulveda, I expected [REFERRED_IN] to equal 747,324.80.&lt;BR /&gt;For [PSA_NAME] West Los Angeles, I expected [REFERRED_IN] to equal 205,617.33.&lt;BR /&gt;For all other PSAs I expect&amp;nbsp;[REFERRED_IN] to return zero because no Referral Location matches that PSA.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;I need to move on from this calculation to create a 4th measure named 2ndADJUSTED_DIRECT_DEMAND by adding the&amp;nbsp; REFERRED_IN_DEMAND to the ADJUSTED_DIRECT_DEMAND.&amp;nbsp;&lt;BR /&gt;I say 2nd here because there could be a 3rd or 4th adjustment needed, each time check to see if the demand continues to be referred. For example, in the data I provided, East Los Angels sends 100% of its workload on to Los Angeles, but then Los Angeles sends 50% its workload on to West Los Angeles. On the first calculation, what ends up at West Los Angeles is just 50% of Los Angles, but it should really be (the total demand of Los Angles + the 100% of the total demand from East Los Angles) * 50%.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;If anyone can think of a way to do that more efficiently, without multiple measures and without running into circular logic, you win the grand prize. &lt;span class="lia-unicode-emoji" title=":grinning_face_with_smiling_eyes:"&gt;😄&lt;/span&gt;&lt;BR /&gt;&lt;BR /&gt;For now though, I'll be happy to know why my REFERRED_IN measures isn't returning the expected result.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;Thank you!&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 05 Jun 2023 21:58:38 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/SUMX-returning-blanks-BonusPoints-avoiding-circular-logic/m-p/3269353#M121112</guid>
      <dc:creator>nickc_innova</dc:creator>
      <dc:date>2023-06-05T21:58:38Z</dc:date>
    </item>
    <item>
      <title>Re: SUMX returning blanks (BonusPoints: avoiding circular logic)</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/SUMX-returning-blanks-BonusPoints-avoiding-circular-logic/m-p/3271452#M121270</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;a way to do that more efficiently, without multiple measures and without running into circular logic&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;- not really&lt;/P&gt;
&lt;P&gt;- no&lt;/P&gt;
&lt;P&gt;- heck no.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This is a closed loop control system that will require multiple runs to calm down and level in.&amp;nbsp; There is no chance at all that a deterministic single loop system like Power BI (which doesn't even have the concept of global variables) can handle this very complex process.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Can you add a timing component? Datetime stamps on when the referrals happened? So you can build a sequence?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I guess you could build a solution out of hydraulics, or with mycelium.&lt;/P&gt;</description>
      <pubDate>Wed, 07 Jun 2023 00:13:16 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/SUMX-returning-blanks-BonusPoints-avoiding-circular-logic/m-p/3271452#M121270</guid>
      <dc:creator>lbendlin</dc:creator>
      <dc:date>2023-06-07T00:13:16Z</dc:date>
    </item>
    <item>
      <title>Re: SUMX returning blanks (BonusPoints: avoiding circular logic)</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/SUMX-returning-blanks-BonusPoints-avoiding-circular-logic/m-p/3273075#M121372</link>
      <description>&lt;P&gt;I don't believe it is as hopeless a situation as you describe.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;I was able to make some progress - though I admit I still don't have the full solution.&amp;nbsp;&lt;BR /&gt;After calculating the demand referred out, and calculating the demand remaining at the PSA, I have a measure for the demand referred in for each PSA as follows:&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;REFERRED_IN = &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;VAR&lt;/SPAN&gt; &lt;SPAN&gt;__currentPSA&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;MAX&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;SDP_OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;[PSA_NAME]&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;VAR&lt;/SPAN&gt; &lt;SPAN&gt;__currentSTOP&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;MAX&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;SDP_OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;[STOP_CODE]&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;RETURN&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;CALCULATE&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SUMX&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;SDP_OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;[REFERRED_OUT]&lt;/SPAN&gt;&lt;SPAN&gt;),&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;REMOVEFILTERS&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;SDP_OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;), &lt;/SPAN&gt;&lt;SPAN&gt;SDP_OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;[REFERRAL_LOCATION]&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;__currentPSA&lt;/SPAN&gt;&lt;SPAN&gt; &amp;amp;&amp;amp; &lt;/SPAN&gt;&lt;SPAN&gt;SDP_OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;[STOP_CODE]&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;__currentSTOP&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&lt;BR /&gt;This resolves the first issue I originally posted about. I then took it a step further, by simply writing another measure that adds the Referred In demand and the "Adjusted Demand" - which probably isn't the best name for the field but it represents the demand originated at the PSA minus the portion that was referred out.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;I think of this as the first cycle of referral. For any PSA that receives no Referred In demand, this is the end of the calculation but the problem is that some PSAs continue to refer their new adjusted demand onto another location. And the important part to remember is that it may not always be sending on 100% of it's demand.&amp;nbsp;&lt;BR /&gt;To calculate this, I wrote a measure that subtracts the demand that the PSA already referred out from its Adjusted Demand, and then multiplie by the referral percentage. I subtract the referred out demand from the first cycle first so that I don't double dip on the referral percentage. Also, some PSAs will have already referred out 100% of their demand, so the subtraction will result in a negative number. I handle that with a conditional statement that just returns zero.&amp;nbsp;&lt;BR /&gt;The measure looks like this:&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;2nd Reff = &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;VAR&lt;/SPAN&gt; &lt;SPAN&gt;__remainder&lt;/SPAN&gt;&lt;SPAN&gt; = (&lt;/SPAN&gt;&lt;SPAN&gt;[1st_ADJUSTED_DEMAND]&lt;/SPAN&gt;&lt;SPAN&gt; - &lt;/SPAN&gt;&lt;SPAN&gt;[REFERRED_OUT]&lt;/SPAN&gt;&lt;SPAN&gt;) * &lt;/SPAN&gt;&lt;SPAN&gt;SUM&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;SDP_OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;[REFERRAL_PERC]&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;VAR&lt;/SPAN&gt; &lt;SPAN&gt;__solution&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;IF&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;__remainder&lt;/SPAN&gt;&lt;SPAN&gt; &amp;gt; &lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;__remainder&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;RETURN&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&lt;SPAN&gt;__solution&lt;BR /&gt;&lt;BR /&gt;This is the new demand that each PSA has to send on to another PSA for the second cycle.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;To get to the demand at the end of the second cycle of referral, I have a measure like this:&lt;BR /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;2nd_ADJUSTED_DEMAND = &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;VAR&lt;/SPAN&gt; &lt;SPAN&gt;__currentPSA&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;MAX&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;SDP_OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;[PSA_NAME]&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;VAR&lt;/SPAN&gt; &lt;SPAN&gt;__currentSTOP&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;MAX&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;SDP_OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;[STOP_CODE]&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;VAR&lt;/SPAN&gt; &lt;SPAN&gt;__currentRefL&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;MAX&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;SDP_OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;[REFERRAL_LOCATION]&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;VAR&lt;/SPAN&gt; &lt;SPAN&gt;__solution&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;CALCULATE&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SUMX&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;SDP_OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;, (&lt;/SPAN&gt;&lt;SPAN&gt;[2nd Reff]&lt;/SPAN&gt;&lt;SPAN&gt;)),&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;REMOVEFILTERS&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;SDP_OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;), &lt;/SPAN&gt;&lt;SPAN&gt;SDP_OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;[REFERRAL_LOCATION]&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;__currentPSA&lt;/SPAN&gt;&lt;SPAN&gt; &amp;amp;&amp;amp; &lt;/SPAN&gt;&lt;SPAN&gt;SDP_OUTPUT&lt;/SPAN&gt;&lt;SPAN&gt;[STOP_CODE]&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;__currentSTOP&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;RETURN&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;IF&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;__currentPSA&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;__currentRefL&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;[1st_ADJUSTED_DEMAND]&lt;/SPAN&gt;&lt;SPAN&gt; + &lt;/SPAN&gt;&lt;SPAN&gt;__solution&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;[1st_ADJUSTED_DEMAND]&lt;/SPAN&gt;&lt;SPAN&gt; - &lt;/SPAN&gt;&lt;SPAN&gt;[2nd Reff]&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;I get the sum of all of the demand I calculated for the second cycle, and add it to the demand calculated in at the end of the first cycle, but only for each PSA where it is programmed not to refer demand on to any location other than its-self (this is the default setting for PSA referral locations if they are not referring demand on). If the PSA dose have a referral location, then I subtract this second cycle of referred out demand from the first cycle of demand.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;This solution with a series of measures works. However, it is predicated on the fact that at most there are 2 cycles of referral. Either the demand goes from A to B, or from A to B to C.&amp;nbsp;&lt;BR /&gt;I am certain there has to be a way to combine all of these measures into a single calculation - someone better than me in writing DAX could figure out... Then, if I could just&amp;nbsp;have the measure understand the referral pattern first... If I could calculate the number of referrals/relationships... that would be the final solution.&lt;/DIV&gt;&lt;/DIV&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Wed, 07 Jun 2023 15:59:05 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/SUMX-returning-blanks-BonusPoints-avoiding-circular-logic/m-p/3273075#M121372</guid>
      <dc:creator>nickc_innova</dc:creator>
      <dc:date>2023-06-07T15:59:05Z</dc:date>
    </item>
    <item>
      <title>Re: SUMX returning blanks (BonusPoints: avoiding circular logic)</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/SUMX-returning-blanks-BonusPoints-avoiding-circular-logic/m-p/3274950#M121474</link>
      <description>&lt;P&gt;&lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="100342" data-lia-user-login="lbendlin" class="lia-mention lia-mention-user"&gt;lbendlin&lt;/a&gt;,&amp;nbsp;I made some progress yesterday.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;I didn't know DAX had functions to measure parent/child relationships. I can leverage &lt;A href="https://learn.microsoft.com/en-us/dax/pathlength-function-dax" target="_self"&gt;these&lt;/A&gt; to detect exactly how many PSAs away a given PSA may be on the chain of referral. PSAs at the beginning of the chain with no children will have the largest path length. PSAs at the end of the chain with the most children and/or are only referring to themselves have the shortest path length.&amp;nbsp;&lt;BR /&gt;So the larger the path length, the earlier its demand should be calculated. The PSA(s) with the smallest path length are calculated last.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;Next, I need to write a looping statement... which I guess isn't possible in DAX but thankfully&amp;nbsp;&lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="313" data-lia-user-login="Greg_Deckler" class="lia-mention lia-mention-user"&gt;Greg_Deckler&lt;/a&gt;&amp;nbsp;provided us with a &lt;A href="https://community.fabric.microsoft.com/t5/Community-Blog/For-and-While-Loops-in-DAX/ba-p/636314" target="_self"&gt;write-up&lt;/A&gt; on how to work around that. I don't have the code written out yet but I think I have a map for how to get there.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 08 Jun 2023 15:15:02 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/SUMX-returning-blanks-BonusPoints-avoiding-circular-logic/m-p/3274950#M121474</guid>
      <dc:creator>nickc_innova</dc:creator>
      <dc:date>2023-06-08T15:15:02Z</dc:date>
    </item>
    <item>
      <title>Re: SUMX returning blanks (BonusPoints: avoiding circular logic)</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/SUMX-returning-blanks-BonusPoints-avoiding-circular-logic/m-p/3274990#M121475</link>
      <description>&lt;P&gt;PATH only works if each element appears in only one place of the hierarchy.&amp;nbsp; From your original description it sounded more like you have circular references between PSAs?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The FOR and WHILE constructs you reference will only work for independent computations in each of the loops. As soon as one loop iteration depends on the result of another iteration this will break down.&amp;nbsp; There is a Power Query function List.Accumulate that is a bit more powerful but even that cannot mask the fact that Power BI does not have a concept of global variables.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I think your best chance is still when you provide additional sequencing information (ideally timestamps, or index columns).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 08 Jun 2023 15:31:20 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/SUMX-returning-blanks-BonusPoints-avoiding-circular-logic/m-p/3274990#M121475</guid>
      <dc:creator>lbendlin</dc:creator>
      <dc:date>2023-06-08T15:31:20Z</dc:date>
    </item>
  </channel>
</rss>

