<?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: POWER PIVOT DOES NOT FILTER VIRTUAL TABLE IN EXCEL MODE in DAX Commands and Tips</title>
    <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/POWER-PIVOT-DOES-NOT-FILTER-VIRTUAL-TABLE-IN-EXCEL-MODE/m-p/4851137#M185150</link>
    <description>&lt;P&gt;What is really happening&lt;/P&gt;
&lt;OL&gt;
&lt;LI data-start="582" data-end="722"&gt;SELECTCOLUMNS breaks lineage. Once you wrap columns with plus zero or ampersand empty string, they no longer receive filters from the model.&lt;/LI&gt;
&lt;LI data-start="726" data-end="871"&gt;You then join to times that is built from VALUES of Campaign and filtered to April 2020. Inside the Pivot this kills every row except April 2020.&lt;/LI&gt;
&lt;LI data-start="875" data-end="1134"&gt;NATURALLEFTOUTERJOIN brings customers back, but because lineage is broken, the Campaign field on Pivot rows does not filter your virtual table. The only reason you see anything at all is that the only surviving branch is the April 2020 one you forced earlier.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P data-start="1136" data-end="1151"&gt;Two clean fixes&lt;/P&gt;
&lt;P data-start="1153" data-end="1357"&gt;Fix A minimal change&lt;BR /&gt;Make times independent from the current row by using a constant table and push the list of customers back to the base table with TREATAS. This keeps model filters on Campaign working.&lt;/P&gt;
&lt;P data-start="1359" data-end="1688"&gt;Customers in Apr 2020&lt;BR /&gt;VAR CustomersApr =&lt;BR /&gt;CALCULATETABLE(&lt;BR /&gt;SUMMARIZE(&lt;BR /&gt;FILTER(&lt;BR /&gt;ALL( TABLE ),&lt;BR /&gt;TABLE[CAMPAIGN] = "Apr 2020"&lt;BR /&gt;&amp;amp;&amp;amp; TABLE[LOYALTY_GRADE] = 1&lt;BR /&gt;),&lt;BR /&gt;TABLE[DATASET],&lt;BR /&gt;TABLE[CUST_ID]&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;RETURN CustomersApr&lt;/P&gt;
&lt;P data-start="1690" data-end="2150"&gt;Sales for those customers by any campaign&lt;BR /&gt;VAR CustomersApr =&lt;BR /&gt;CALCULATETABLE(&lt;BR /&gt;SUMMARIZE(&lt;BR /&gt;FILTER(&lt;BR /&gt;ALL( TABLE ),&lt;BR /&gt;TABLE[CAMPAIGN] = "Apr 2020"&lt;BR /&gt;&amp;amp;&amp;amp; TABLE[LOYALTY_GRADE] = 1&lt;BR /&gt;),&lt;BR /&gt;TABLE[DATASET],&lt;BR /&gt;TABLE[CUST_ID]&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;RETURN&lt;BR /&gt;CALCULATE(&lt;BR /&gt;SUM( TABLE[SALES] ),&lt;BR /&gt;KEEPFILTERS(&lt;BR /&gt;TREATAS( CustomersApr, TABLE[DATASET], TABLE[CUST_ID] )&lt;BR /&gt;)&lt;BR /&gt;)&lt;/P&gt;
&lt;P data-start="2152" data-end="2331"&gt;Put Campaign on rows. The measure will split by the Campaign on the Pivot because the filter now hits the real table through TREATAS. Replace Apr 2020 with your real campaign key.&lt;/P&gt;
&lt;P data-start="2333" data-end="2756"&gt;Fix B keep your pattern but unhook it from the row context&lt;BR /&gt;If you really want to keep NATURALLEFTOUTERJOIN then do two things.&lt;BR /&gt;Use ALL on Campaign when you build times so it does not depend on VALUES of the current row.&lt;BR /&gt;Do not rebuild a copy of the table with SELECTCOLUMNS for columns that need to be filterable. Use the original table in the final SUM or use TREATAS to push your customer list back to the original table.&lt;/P&gt;
&lt;P data-start="2758" data-end="2853"&gt;Example of a constant times table&lt;BR /&gt;VAR times =&lt;BR /&gt;ROW( "CAMPAIGN", "Apr 2020", "CAMP_ID", "Y" )&lt;/P&gt;
&lt;P data-start="2855" data-end="3098"&gt;Then do your joins, but finish with&lt;BR /&gt;RETURN&lt;BR /&gt;CALCULATE(&lt;BR /&gt;SUM( TABLE[SALES] ),&lt;BR /&gt;KEEPFILTERS(&lt;BR /&gt;TREATAS( SELECTCOLUMNS( list_apr20, "DATASET", [DATASET], "CUST_ID", [CUST_ID] ),&lt;BR /&gt;TABLE[DATASET], TABLE[CUST_ID] )&lt;BR /&gt;)&lt;BR /&gt;)&lt;/P&gt;
&lt;P data-start="3100" data-end="3125"&gt;Practical debugging steps&lt;/P&gt;
&lt;OL&gt;
&lt;LI data-start="3130" data-end="3415"&gt;Prove the VALUES trap&lt;BR /&gt;Create a quick check measure&lt;BR /&gt;CALCULATE( COUNTROWS( FILTER( VALUES( TABLE[CAMPAIGN] ), TABLE[CAMPAIGN] = "Apr 2020" ) ) )&lt;BR /&gt;On the Campaign Pivot this will be one on Apr 2020 and zero elsewhere. That is exactly the behavior you are propagating into your big measure.&lt;/LI&gt;
&lt;LI data-start="3420" data-end="3613"&gt;Prove lineage is gone&lt;BR /&gt;Create&lt;BR /&gt;SUMX( SELECTCOLUMNS( TABLE, "C", TABLE[CAMPAIGN] ), 1 )&lt;BR /&gt;It returns the same number for every Campaign row because the Pivot filter does not reach the cloned column.&lt;/LI&gt;
&lt;LI data-start="3618" data-end="3786"&gt;After switching to TREATAS confirm that Campaign now slices the result. If you need to show campaigns with zero sales turn on Show items with no data in Pivot settings.&lt;/LI&gt;
&lt;/OL&gt;</description>
    <pubDate>Wed, 15 Oct 2025 19:28:31 GMT</pubDate>
    <dc:creator>technolog</dc:creator>
    <dc:date>2025-10-15T19:28:31Z</dc:date>
    <item>
      <title>POWER PIVOT DOES NOT FILTER VIRTUAL TABLE IN EXCEL MODE</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/POWER-PIVOT-DOES-NOT-FILTER-VIRTUAL-TABLE-IN-EXCEL-MODE/m-p/2293217#M56442</link>
      <description>&lt;P&gt;Simple thing.&lt;/P&gt;&lt;P&gt;I am creating virtual table in DAX with filtered data which matches some criterias, then I want to display that data by campaigns, but&lt;/P&gt;&lt;P&gt;in Pivot I see only the particular date I have filtered initially, despite the fact that later I do obtain virtual table with all possible campaigns.&lt;/P&gt;&lt;P&gt;In DAX STUDIO I see that table, but when I create measure using that table in EXCEL POWER PIVOT I see only that campaign I was filtering for...&lt;/P&gt;&lt;P&gt;I tried all stuff I had in my mind but now stuck,what can be wrong...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;TABL= just selects data from initial table and breaks lineage for me later to be joined with the list I need.&lt;/P&gt;&lt;P&gt;test - is the list I need. So it represents list of customers on particular campaign. Then I want to see how they perform in future campaigns and I do &lt;FONT color="#3366FF"&gt;naturalleftouterjoin&amp;nbsp;&lt;FONT color="#000000"&gt;with TABL by their ID and DATASET.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#3366FF"&gt;&lt;FONT color="#000000"&gt;Then filter those which I need. THEN use IN DAX measure and I see the table I need- All campaigns, and all customers placed order in particular campaign.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#3366FF"&gt;&lt;FONT color="#000000"&gt;After I copy all this data in EXCEL POWER PIVOT (green window) create measure and want to see it via &lt;FONT color="#3366FF"&gt;PIVOT TABLE&amp;nbsp;&lt;FONT color="#000000"&gt;I see only that campaign they placed order, all other campaigns are not visible.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;evaluate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;VAR Tabl=selectcolumns(TABLE;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CUST_ID;TABLE[CUST_ID]+0;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DATASET;TABLE[DATASET]&amp;amp;"";&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CUST_TYPE;TABLE[CUST_TYPE]+0;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CAMPAIGN;TABLE[CAMPAIGN]&amp;amp;"";&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SALES;TABLE[SALES]+0;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACTIVE;TABLE[ACTIVE]+0;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOYALTY_GRADE;TABLE[LOYALTY_GRADE]+0;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TAXES;TABLE[TAXES]+0&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;VAR times=SELECTCOLUMNS(FILTER(VALUES(TABLE[CAMPAIGN]);[CAMPAIGN]="2020-04");"CAMPAIGN";[CAMPAIGN]&amp;amp;"";"CAMP_ID";"Y")&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;VAR test=FILTER(NATURALLEFTOUTERJOIN(Tabl;times);[CAMP_ID]="Y")&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;VAR LOYALTY_GRADE_APR2020=FILTER(test;[LOYALTY_GRADE]=1)&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;VAR list_apr20_a=SELECTCOLUMNS(LOYALTY_GRADE_APR2020;"DATASET";[DATASET]&amp;amp;"";"CUST_ID";[CUST_ID]+0;"STATUS";"APR_20";"CAMPAIGN";[CAMPAIGN]&amp;amp;"")&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;VAR list_apr20=SELECTCOLUMNS(list_apr20_a;"DATASET";[DATASET]&amp;amp;"";"CUST_ID";[CUST_ID]+0;"STATUS";"APR_20")&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;VAR temp1=NATURALLEFTOUTERJOIN(Tabl;list_apr20)&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;VAR temp=filter(temp1;[STATUS]&amp;lt;&amp;gt;"")&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;VAR result=calculate(sumx(temp;[SALES]))&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;return&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2"&gt;calculate(sumx(temp;[SALES]))&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 20 Jan 2022 10:58:48 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/POWER-PIVOT-DOES-NOT-FILTER-VIRTUAL-TABLE-IN-EXCEL-MODE/m-p/2293217#M56442</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2022-01-20T10:58:48Z</dc:date>
    </item>
    <item>
      <title>Re: POWER PIVOT DOES NOT FILTER VIRTUAL TABLE IN EXCEL MODE</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/POWER-PIVOT-DOES-NOT-FILTER-VIRTUAL-TABLE-IN-EXCEL-MODE/m-p/2298149#M56671</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;According to your statement and code, I know that you will need to use SELECTCOLUMN and&amp;nbsp;&lt;SPAN&gt;NATURALLEFTOUTERJOIN function to build virtual tables and then calculate the result as you want. I think your code is complex, please share a sample file with us and show us a screenshot with the result you want. This will make us easier to understand your requirement.&lt;/SPAN&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>Mon, 24 Jan 2022 09:06:17 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/POWER-PIVOT-DOES-NOT-FILTER-VIRTUAL-TABLE-IN-EXCEL-MODE/m-p/2298149#M56671</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2022-01-24T09:06:17Z</dc:date>
    </item>
    <item>
      <title>Re: POWER PIVOT DOES NOT FILTER VIRTUAL TABLE IN EXCEL MODE</title>
      <link>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/POWER-PIVOT-DOES-NOT-FILTER-VIRTUAL-TABLE-IN-EXCEL-MODE/m-p/4851137#M185150</link>
      <description>&lt;P&gt;What is really happening&lt;/P&gt;
&lt;OL&gt;
&lt;LI data-start="582" data-end="722"&gt;SELECTCOLUMNS breaks lineage. Once you wrap columns with plus zero or ampersand empty string, they no longer receive filters from the model.&lt;/LI&gt;
&lt;LI data-start="726" data-end="871"&gt;You then join to times that is built from VALUES of Campaign and filtered to April 2020. Inside the Pivot this kills every row except April 2020.&lt;/LI&gt;
&lt;LI data-start="875" data-end="1134"&gt;NATURALLEFTOUTERJOIN brings customers back, but because lineage is broken, the Campaign field on Pivot rows does not filter your virtual table. The only reason you see anything at all is that the only surviving branch is the April 2020 one you forced earlier.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P data-start="1136" data-end="1151"&gt;Two clean fixes&lt;/P&gt;
&lt;P data-start="1153" data-end="1357"&gt;Fix A minimal change&lt;BR /&gt;Make times independent from the current row by using a constant table and push the list of customers back to the base table with TREATAS. This keeps model filters on Campaign working.&lt;/P&gt;
&lt;P data-start="1359" data-end="1688"&gt;Customers in Apr 2020&lt;BR /&gt;VAR CustomersApr =&lt;BR /&gt;CALCULATETABLE(&lt;BR /&gt;SUMMARIZE(&lt;BR /&gt;FILTER(&lt;BR /&gt;ALL( TABLE ),&lt;BR /&gt;TABLE[CAMPAIGN] = "Apr 2020"&lt;BR /&gt;&amp;amp;&amp;amp; TABLE[LOYALTY_GRADE] = 1&lt;BR /&gt;),&lt;BR /&gt;TABLE[DATASET],&lt;BR /&gt;TABLE[CUST_ID]&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;RETURN CustomersApr&lt;/P&gt;
&lt;P data-start="1690" data-end="2150"&gt;Sales for those customers by any campaign&lt;BR /&gt;VAR CustomersApr =&lt;BR /&gt;CALCULATETABLE(&lt;BR /&gt;SUMMARIZE(&lt;BR /&gt;FILTER(&lt;BR /&gt;ALL( TABLE ),&lt;BR /&gt;TABLE[CAMPAIGN] = "Apr 2020"&lt;BR /&gt;&amp;amp;&amp;amp; TABLE[LOYALTY_GRADE] = 1&lt;BR /&gt;),&lt;BR /&gt;TABLE[DATASET],&lt;BR /&gt;TABLE[CUST_ID]&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;RETURN&lt;BR /&gt;CALCULATE(&lt;BR /&gt;SUM( TABLE[SALES] ),&lt;BR /&gt;KEEPFILTERS(&lt;BR /&gt;TREATAS( CustomersApr, TABLE[DATASET], TABLE[CUST_ID] )&lt;BR /&gt;)&lt;BR /&gt;)&lt;/P&gt;
&lt;P data-start="2152" data-end="2331"&gt;Put Campaign on rows. The measure will split by the Campaign on the Pivot because the filter now hits the real table through TREATAS. Replace Apr 2020 with your real campaign key.&lt;/P&gt;
&lt;P data-start="2333" data-end="2756"&gt;Fix B keep your pattern but unhook it from the row context&lt;BR /&gt;If you really want to keep NATURALLEFTOUTERJOIN then do two things.&lt;BR /&gt;Use ALL on Campaign when you build times so it does not depend on VALUES of the current row.&lt;BR /&gt;Do not rebuild a copy of the table with SELECTCOLUMNS for columns that need to be filterable. Use the original table in the final SUM or use TREATAS to push your customer list back to the original table.&lt;/P&gt;
&lt;P data-start="2758" data-end="2853"&gt;Example of a constant times table&lt;BR /&gt;VAR times =&lt;BR /&gt;ROW( "CAMPAIGN", "Apr 2020", "CAMP_ID", "Y" )&lt;/P&gt;
&lt;P data-start="2855" data-end="3098"&gt;Then do your joins, but finish with&lt;BR /&gt;RETURN&lt;BR /&gt;CALCULATE(&lt;BR /&gt;SUM( TABLE[SALES] ),&lt;BR /&gt;KEEPFILTERS(&lt;BR /&gt;TREATAS( SELECTCOLUMNS( list_apr20, "DATASET", [DATASET], "CUST_ID", [CUST_ID] ),&lt;BR /&gt;TABLE[DATASET], TABLE[CUST_ID] )&lt;BR /&gt;)&lt;BR /&gt;)&lt;/P&gt;
&lt;P data-start="3100" data-end="3125"&gt;Practical debugging steps&lt;/P&gt;
&lt;OL&gt;
&lt;LI data-start="3130" data-end="3415"&gt;Prove the VALUES trap&lt;BR /&gt;Create a quick check measure&lt;BR /&gt;CALCULATE( COUNTROWS( FILTER( VALUES( TABLE[CAMPAIGN] ), TABLE[CAMPAIGN] = "Apr 2020" ) ) )&lt;BR /&gt;On the Campaign Pivot this will be one on Apr 2020 and zero elsewhere. That is exactly the behavior you are propagating into your big measure.&lt;/LI&gt;
&lt;LI data-start="3420" data-end="3613"&gt;Prove lineage is gone&lt;BR /&gt;Create&lt;BR /&gt;SUMX( SELECTCOLUMNS( TABLE, "C", TABLE[CAMPAIGN] ), 1 )&lt;BR /&gt;It returns the same number for every Campaign row because the Pivot filter does not reach the cloned column.&lt;/LI&gt;
&lt;LI data-start="3618" data-end="3786"&gt;After switching to TREATAS confirm that Campaign now slices the result. If you need to show campaigns with zero sales turn on Show items with no data in Pivot settings.&lt;/LI&gt;
&lt;/OL&gt;</description>
      <pubDate>Wed, 15 Oct 2025 19:28:31 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/DAX-Commands-and-Tips/POWER-PIVOT-DOES-NOT-FILTER-VIRTUAL-TABLE-IN-EXCEL-MODE/m-p/4851137#M185150</guid>
      <dc:creator>technolog</dc:creator>
      <dc:date>2025-10-15T19:28:31Z</dc:date>
    </item>
  </channel>
</rss>

