<?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: After a means to compare Table record counts across Report refreshes in Report Server</title>
    <link>https://community.fabric.microsoft.com/t5/Report-Server/After-a-means-to-compare-Table-record-counts-across-Report/m-p/4799823#M41671</link>
    <description>&lt;P&gt;Hi&amp;nbsp;Anonymous&lt;/LI-USER&gt;,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can do this directly in the Power Query.&amp;nbsp;Power query inside a PBIX or dataset is read-only. It can create a one row snapshot on each refresh, but it cannot append to a persistent history by itself. Power bi itself does not keep history across refreshes so this will show the current refresh row count.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In power query, open Advanced Editor and paste the below following code:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;let&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RowCount = Table.RowCount(Source),&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RefreshTime = DateTimeZone.UtcNow(),&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CountHistory = #table(&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {"TableName", "RowCount", "RefreshTimestampUTC"},&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {{"Source", RowCount, RefreshTime}}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/P&gt;
&lt;P&gt;in&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CountHistory&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Replace Source with the name of your actual query and make changes according to your data.&lt;/LI&gt;
&lt;LI&gt;Name this query as CountHistory and make sure Enable load is turned on so it appears in your model.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This will give you a table with the row count of source and the refresh timestamp. Each time the dataset refreshes, the row will update with the new count.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If this post&amp;nbsp;helps in resolving the issue, then please consider&lt;SPAN&gt;&amp;nbsp;&lt;STRONG&gt;Accepting as solution&amp;nbsp;&lt;/STRONG&gt;to help the other members find it more quickly,&amp;nbsp;don't forget to give a&amp;nbsp;&lt;STRONG&gt;"Kudos"&lt;/STRONG&gt;&amp;nbsp;– I’d truly appreciate it!&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks and regards,&lt;/P&gt;
&lt;P&gt;Anjan Kumar Chippa&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 18 Aug 2025 12:16:49 GMT</pubDate>
    <dc:creator>v-achippa</dc:creator>
    <dc:date>2025-08-18T12:16:49Z</dc:date>
    <item>
      <title>After a means to compare Table record counts across Report refreshes</title>
      <link>https://community.fabric.microsoft.com/t5/Report-Server/After-a-means-to-compare-Table-record-counts-across-Report/m-p/4791186#M41603</link>
      <description>&lt;P&gt;I have a several reports that all use an ODATA connection to a PostgreSQL DB. Reports refresh daily and we've noticed that sometimes a report will bring back a few records less than the previous refresh.&amp;nbsp; The reports refresh successfully but this is starting to impact user belief in the reports.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So I'm after a means to be able to compare the number of records in each Table across Report refreshes.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;e.g.&lt;/P&gt;&lt;P&gt;Report1 Table A had 15000 records on day 1, then on Day 2 it had 14900.&amp;nbsp; Table 2 had 20000 on day 1 and day 2.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;</description>
      <pubDate>Fri, 08 Aug 2025 11:37:13 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Report-Server/After-a-means-to-compare-Table-record-counts-across-Report/m-p/4791186#M41603</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2025-08-08T11:37:13Z</dc:date>
    </item>
    <item>
      <title>Re: After a means to compare Table record counts across Report refreshes</title>
      <link>https://community.fabric.microsoft.com/t5/Report-Server/After-a-means-to-compare-Table-record-counts-across-Report/m-p/4791190#M41604</link>
      <description>&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;Hey&amp;nbsp;Anonymous&lt;/LI-USER&gt;,&lt;/FONT&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;Based on your requirement to monitor table record counts between daily refreshes, here are proven approaches to address this issue:&lt;/FONT&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;&lt;STRONG&gt;1. Power Query Historical Count Tracking&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;Create a dedicated "Data Quality" table in each report&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;Use Table.RowCount() to capture current row counts for each table&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;Add DateTime.LocalNow() for timestamp tracking&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;Configure table to append historical data rather than replace&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;Set up conditional formatting to highlight significant count drops (&amp;gt;5% variance)&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;&lt;STRONG&gt;2. Database Audit Table Implementation&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;Create audit tables in PostgreSQL to log daily record counts&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;Schedule stored procedure to run before Power BI refresh window&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;Include table name, record count, and date stamp&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;Connect Power BI to audit tables via separate ODATA feed&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;Build variance dashboard showing day-over-day changes&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;&lt;STRONG&gt;3. Power BI REST API Monitoring Dashboard&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;Build automated monitoring report using Power BI REST APIs&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;Query DISCOVER_STORAGE_TABLES DMV for accurate table statistics&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;Create separate dataset that tracks all reports centrally&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;Set up email alerts when count variations exceed defined thresholds&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;Implement trend analysis to identify patterns in data loss&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;&lt;STRONG&gt;4. Automated PowerShell Validation Script&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;Deploy PowerShell script to run post-refresh validation&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;Extract table metadata using Invoke-PowerBIRestMethod cmdlets&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;Compare against baseline counts stored in SharePoint list or SQL table&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;Generate exception report highlighting significant variances&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;Send automated notifications to report owners when issues detected&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;&lt;STRONG&gt;Implementation Priority:&lt;/STRONG&gt; Start with database audit tables for most reliable tracking, then layer on Power BI dashboard for user visibility. This combination provides both technical validation and business transparency around data quality issues.&lt;/FONT&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;Fixed? ✓ Mark it • Share it • Help others!&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;Best Regards,&lt;/FONT&gt;&lt;BR /&gt;&lt;EM&gt;&lt;FONT face="arial,helvetica,sans-serif" size="2" color="#000000"&gt;Jainesh Poojara | Power BI Developer&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 08 Aug 2025 11:41:57 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Report-Server/After-a-means-to-compare-Table-record-counts-across-Report/m-p/4791190#M41604</guid>
      <dc:creator>jaineshp</dc:creator>
      <dc:date>2025-08-08T11:41:57Z</dc:date>
    </item>
    <item>
      <title>Re: After a means to compare Table record counts across Report refreshes</title>
      <link>https://community.fabric.microsoft.com/t5/Report-Server/After-a-means-to-compare-Table-record-counts-across-Report/m-p/4793226#M41619</link>
      <description>&lt;P&gt;Hi&amp;nbsp;Anonymous&lt;/LI-USER&gt;,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Thank you for reaching out to Microsoft Fabric Community.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Thank you&amp;nbsp;&lt;a href="javascript:void(0)" data-lia-user-mentions="" data-lia-user-uid="1284569" data-lia-user-login="jaineshp" class="lia-mention lia-mention-user"&gt;jaineshp&lt;/a&gt;&amp;nbsp;for the prompt response.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;As we haven’t heard back from you, we wanted to kindly follow up to&amp;nbsp;check if the solution provided by the user for the issue worked?&amp;nbsp;or let us know if you need any further assistance.&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks and regards,&lt;/P&gt;
&lt;P&gt;Anjan Kumar Chippa&lt;/P&gt;</description>
      <pubDate>Mon, 11 Aug 2025 12:42:58 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Report-Server/After-a-means-to-compare-Table-record-counts-across-Report/m-p/4793226#M41619</guid>
      <dc:creator>v-achippa</dc:creator>
      <dc:date>2025-08-11T12:42:58Z</dc:date>
    </item>
    <item>
      <title>Re: After a means to compare Table record counts across Report refreshes</title>
      <link>https://community.fabric.microsoft.com/t5/Report-Server/After-a-means-to-compare-Table-record-counts-across-Report/m-p/4794602#M41634</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;How would I go about doing step 1?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;All I need in the CountHistory table is a timestamp and a count of the number of rows in a Table called "Source".&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 12 Aug 2025 13:59:48 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Report-Server/After-a-means-to-compare-Table-record-counts-across-Report/m-p/4794602#M41634</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2025-08-12T13:59:48Z</dc:date>
    </item>
    <item>
      <title>Re: After a means to compare Table record counts across Report refreshes</title>
      <link>https://community.fabric.microsoft.com/t5/Report-Server/After-a-means-to-compare-Table-record-counts-across-Report/m-p/4799823#M41671</link>
      <description>&lt;P&gt;Hi&amp;nbsp;Anonymous&lt;/a&gt;,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can do this directly in the Power Query.&amp;nbsp;Power query inside a PBIX or dataset is read-only. It can create a one row snapshot on each refresh, but it cannot append to a persistent history by itself. Power bi itself does not keep history across refreshes so this will show the current refresh row count.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In power query, open Advanced Editor and paste the below following code:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;let&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RowCount = Table.RowCount(Source),&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RefreshTime = DateTimeZone.UtcNow(),&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CountHistory = #table(&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {"TableName", "RowCount", "RefreshTimestampUTC"},&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {{"Source", RowCount, RefreshTime}}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/P&gt;
&lt;P&gt;in&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CountHistory&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Replace Source with the name of your actual query and make changes according to your data.&lt;/LI&gt;
&lt;LI&gt;Name this query as CountHistory and make sure Enable load is turned on so it appears in your model.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This will give you a table with the row count of source and the refresh timestamp. Each time the dataset refreshes, the row will update with the new count.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If this post&amp;nbsp;helps in resolving the issue, then please consider&lt;SPAN&gt;&amp;nbsp;&lt;STRONG&gt;Accepting as solution&amp;nbsp;&lt;/STRONG&gt;to help the other members find it more quickly,&amp;nbsp;don't forget to give a&amp;nbsp;&lt;STRONG&gt;"Kudos"&lt;/STRONG&gt;&amp;nbsp;– I’d truly appreciate it!&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks and regards,&lt;/P&gt;
&lt;P&gt;Anjan Kumar Chippa&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 18 Aug 2025 12:16:49 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Report-Server/After-a-means-to-compare-Table-record-counts-across-Report/m-p/4799823#M41671</guid>
      <dc:creator>v-achippa</dc:creator>
      <dc:date>2025-08-18T12:16:49Z</dc:date>
    </item>
  </channel>
</rss>

