<?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: Excluding Monthly Violations in Store Complaints Rolling Average DAX Calculation in DAX Commands and Tips</title>
    <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Excluding-Monthly-Violations-in-Store-Complaints-Rolling-Average/m-p/4134862#M164238</link>
    <description>&lt;P&gt;Hi&amp;nbsp;Anonymous&lt;/LI-USER&gt;&amp;nbsp;,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As far as I know, Dax doesn't support us to do looping.&lt;/P&gt;
&lt;P&gt;I think you may try looping in Power Query. Here I have a test,&amp;nbsp; I hope it could help you.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;let
    Source = Table.FromRecords({
        [Date=#date(2024, 1, 1), Complaints=6],
        [Date=#date(2024, 2, 1), Complaints=3],
        [Date=#date(2024, 3, 1), Complaints=8],
        [Date=#date(2024, 4, 1), Complaints=2],
        [Date=#date(2024, 5, 1), Complaints=11],
        [Date=#date(2024, 6, 1), Complaints=5],
        [Date=#date(2024, 7, 1), Complaints=12],
        [Date=#date(2024, 8, 1), Complaints=8],
        [Date=#date(2024, 9, 1), Complaints=6],
        [Date=#date(2024, 10, 1), Complaints=8],
        [Date=#date(2024, 11, 1), Complaints=1],
        [Date=#date(2024, 12, 1), Complaints=5]
    }),

    CalculateRollingAverage = (ComplaintsList as list, Index as number) as number =&amp;gt;
        let
            PreviousComplaints = List.FirstN(ComplaintsList, Index-1),
            ValidComplaints = List.Select(PreviousComplaints, each _ &amp;lt;= List.Average(PreviousComplaints)),
            RollingAverage = if List.Count(ValidComplaints) = 0 then 0 else List.Average(ValidComplaints)
        in
            RollingAverage
,
    AddRollingAverage = Table.AddIndexColumn(Source, "Index", 1, 1, Int64.Type),
    AddRollingAverageExcludingViolations = Table.AddColumn(AddRollingAverage, "Rolling Average Excluding Violations", each CalculateRollingAverage(AddRollingAverage[Complaints], [Index])),
    #"Changed Type" = Table.TransformColumnTypes(AddRollingAverageExcludingViolations,{{"Rolling Average Excluding Violations", Currency.Type}}),
    AddViolations = Table.AddColumn(#"Changed Type", "Violations", each if[Index] = 1 then "No" else if [Complaints] &amp;gt; [Rolling Average Excluding Violations] then "Yes" else "No"),
    #"Removed Columns" = Table.RemoveColumns(AddViolations,{"Index"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Removed Columns",{{"Rolling Average Excluding Violations", Int64.Type}})
in
    #"Changed Type1"&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Result is as below.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best Regards,&lt;BR /&gt;Rico Zhou&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.&lt;/P&gt;</description>
    <pubDate>Wed, 25 Sep 2024 02:37:45 GMT</pubDate>
    <dc:creator>Anonymous</dc:creator>
    <dc:date>2024-09-25T02:37:45Z</dc:date>
    <item>
      <title>Excluding Monthly Violations in Store Complaints Rolling Average DAX Calculation</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Excluding-Monthly-Violations-in-Store-Complaints-Rolling-Average/m-p/4134209#M164215</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a requirement to create a limit value that determines whether the # of store complaints for a given month is considered a violation. The limit is calculated as a rolling average of prior months, but must exclude prior months that were violations.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;As an example, the table below shows the store complaints for each month. The "Store Rolling Average Complaints Excluding Violations" value is what I am trying to get, but I run into a circular dependency error when attempting to exclude violations.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Store Complaints = # of complaints for the month&lt;/P&gt;&lt;P&gt;Store Rolling Average Complaints = The rolling average value that includes prior violation months. Just included it as a reference, since this rolling average calc is straightforward.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Store Rolling Average Complaints Excluding Violations =&amp;nbsp;&lt;/STRONG&gt;The desired DAX measure, that calculates a rolling average value, but exclude prior violations.&lt;/P&gt;&lt;P&gt;Violations = Violation indicator for each month, and is marked as "Yes" when&amp;nbsp;Store Complaints &amp;gt;&amp;nbsp;Store Rolling Average Complaints Excluding Violations&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;*This needs to be a DAX measure because there are various filters that must be applied to the matrix&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Please let me know if any addtl. info is needed. TIA.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;Jan&lt;/TD&gt;&lt;TD&gt;Feb&lt;/TD&gt;&lt;TD&gt;Mar&lt;/TD&gt;&lt;TD&gt;Apr&lt;/TD&gt;&lt;TD&gt;May&lt;/TD&gt;&lt;TD&gt;Jun&lt;/TD&gt;&lt;TD&gt;Jul&lt;/TD&gt;&lt;TD&gt;Aug&lt;/TD&gt;&lt;TD&gt;Sep&lt;/TD&gt;&lt;TD&gt;Oct&lt;/TD&gt;&lt;TD&gt;Nov&lt;/TD&gt;&lt;TD&gt;Dec&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Store Complaints&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;11&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;8&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Store Rolling Average Complaints&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;6.00&lt;/TD&gt;&lt;TD&gt;4.50&lt;/TD&gt;&lt;TD&gt;5.67&lt;/TD&gt;&lt;TD&gt;4.75&lt;/TD&gt;&lt;TD&gt;6.00&lt;/TD&gt;&lt;TD&gt;5.83&lt;/TD&gt;&lt;TD&gt;6.71&lt;/TD&gt;&lt;TD&gt;6.88&lt;/TD&gt;&lt;TD&gt;6.78&lt;/TD&gt;&lt;TD&gt;6.90&lt;/TD&gt;&lt;TD&gt;6.36&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Store Rolling Average Complaints Excluding Violations&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;4.5&lt;/TD&gt;&lt;TD&gt;4.5&lt;/TD&gt;&lt;TD&gt;3.66&lt;/TD&gt;&lt;TD&gt;3.66&lt;/TD&gt;&lt;TD&gt;3.66&lt;/TD&gt;&lt;TD&gt;3.66&lt;/TD&gt;&lt;TD&gt;3.66&lt;/TD&gt;&lt;TD&gt;3.66&lt;/TD&gt;&lt;TD&gt;3.66&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Violations&lt;/TD&gt;&lt;TD&gt;No&lt;/TD&gt;&lt;TD&gt;No&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;TD&gt;No&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;TD&gt;No&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Wed, 04 Sep 2024 23:01:37 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Excluding-Monthly-Violations-in-Store-Complaints-Rolling-Average/m-p/4134209#M164215</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2024-09-04T23:01:37Z</dc:date>
    </item>
    <item>
      <title>Re: Excluding Monthly Violations in Store Complaints Rolling Average DAX Calculation</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Excluding-Monthly-Violations-in-Store-Complaints-Rolling-Average/m-p/4134862#M164238</link>
      <description>&lt;P&gt;Hi&amp;nbsp;Anonymous&lt;/LI-USER&gt;&amp;nbsp;,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As far as I know, Dax doesn't support us to do looping.&lt;/P&gt;
&lt;P&gt;I think you may try looping in Power Query. Here I have a test,&amp;nbsp; I hope it could help you.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;let
    Source = Table.FromRecords({
        [Date=#date(2024, 1, 1), Complaints=6],
        [Date=#date(2024, 2, 1), Complaints=3],
        [Date=#date(2024, 3, 1), Complaints=8],
        [Date=#date(2024, 4, 1), Complaints=2],
        [Date=#date(2024, 5, 1), Complaints=11],
        [Date=#date(2024, 6, 1), Complaints=5],
        [Date=#date(2024, 7, 1), Complaints=12],
        [Date=#date(2024, 8, 1), Complaints=8],
        [Date=#date(2024, 9, 1), Complaints=6],
        [Date=#date(2024, 10, 1), Complaints=8],
        [Date=#date(2024, 11, 1), Complaints=1],
        [Date=#date(2024, 12, 1), Complaints=5]
    }),

    CalculateRollingAverage = (ComplaintsList as list, Index as number) as number =&amp;gt;
        let
            PreviousComplaints = List.FirstN(ComplaintsList, Index-1),
            ValidComplaints = List.Select(PreviousComplaints, each _ &amp;lt;= List.Average(PreviousComplaints)),
            RollingAverage = if List.Count(ValidComplaints) = 0 then 0 else List.Average(ValidComplaints)
        in
            RollingAverage
,
    AddRollingAverage = Table.AddIndexColumn(Source, "Index", 1, 1, Int64.Type),
    AddRollingAverageExcludingViolations = Table.AddColumn(AddRollingAverage, "Rolling Average Excluding Violations", each CalculateRollingAverage(AddRollingAverage[Complaints], [Index])),
    #"Changed Type" = Table.TransformColumnTypes(AddRollingAverageExcludingViolations,{{"Rolling Average Excluding Violations", Currency.Type}}),
    AddViolations = Table.AddColumn(#"Changed Type", "Violations", each if[Index] = 1 then "No" else if [Complaints] &amp;gt; [Rolling Average Excluding Violations] then "Yes" else "No"),
    #"Removed Columns" = Table.RemoveColumns(AddViolations,{"Index"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Removed Columns",{{"Rolling Average Excluding Violations", Int64.Type}})
in
    #"Changed Type1"&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Result is as below.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best Regards,&lt;BR /&gt;Rico Zhou&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.&lt;/P&gt;</description>
      <pubDate>Wed, 25 Sep 2024 02:37:45 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/Excluding-Monthly-Violations-in-Store-Complaints-Rolling-Average/m-p/4134862#M164238</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2024-09-25T02:37:45Z</dc:date>
    </item>
  </channel>
</rss>

