Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more
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. The reports refresh successfully but this is starting to impact user belief in the reports.
So I'm after a means to be able to compare the number of records in each Table across Report refreshes.
e.g.
Report1 Table A had 15000 records on day 1, then on Day 2 it had 14900. Table 2 had 20000 on day 1 and day 2.
Thanks
Solved! Go to Solution.
Hi @RD1965,
You can do this directly in the Power Query. 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.
In power query, open Advanced Editor and paste the below following code:
let
RowCount = Table.RowCount(Source),
RefreshTime = DateTimeZone.UtcNow(),
CountHistory = #table(
{"TableName", "RowCount", "RefreshTimestampUTC"},
{{"Source", RowCount, RefreshTime}}
)
in
CountHistory
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.
If this post helps in resolving the issue, then please consider Accepting as solution to help the other members find it more quickly, don't forget to give a "Kudos" – I’d truly appreciate it!
Thanks and regards,
Anjan Kumar Chippa
Hi @RD1965,
Thank you for reaching out to Microsoft Fabric Community.
Thank you @jaineshp for the prompt response.
As we haven’t heard back from you, we wanted to kindly follow up to check if the solution provided by the user for the issue worked? or let us know if you need any further assistance.
Thanks and regards,
Anjan Kumar Chippa
Hi,
How would I go about doing step 1?
All I need in the CountHistory table is a timestamp and a count of the number of rows in a Table called "Source".
Hi @RD1965,
You can do this directly in the Power Query. 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.
In power query, open Advanced Editor and paste the below following code:
let
RowCount = Table.RowCount(Source),
RefreshTime = DateTimeZone.UtcNow(),
CountHistory = #table(
{"TableName", "RowCount", "RefreshTimestampUTC"},
{{"Source", RowCount, RefreshTime}}
)
in
CountHistory
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.
If this post helps in resolving the issue, then please consider Accepting as solution to help the other members find it more quickly, don't forget to give a "Kudos" – I’d truly appreciate it!
Thanks and regards,
Anjan Kumar Chippa
Hey @RD1965,
Based on your requirement to monitor table record counts between daily refreshes, here are proven approaches to address this issue:
1. Power Query Historical Count Tracking
2. Database Audit Table Implementation
3. Power BI REST API Monitoring Dashboard
4. Automated PowerShell Validation Script
Implementation Priority: 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.
Fixed? ✓ Mark it • Share it • Help others!
Best Regards,
Jainesh Poojara | Power BI Developer
The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!
| User | Count |
|---|---|
| 10 | |
| 5 | |
| 5 | |
| 4 | |
| 3 |