Keeping Report Data Fresh: Snapshots, Syncs and Schedules
Why a scheduled report can repeat last month's numbers, and how to keep data current: snapshots versus syncs, scoping data to the period and the right source.
· 5 min read · Summarix team
A scheduled report is only as current as the data behind it. Some sources are snapshots: an uploaded file, or the result of a database query you saved, stays exactly as it was. Others are synced: a connected app or sheet refreshes the same dataset hourly, daily or weekly. Schedule recurring reports on synced sources, time the report after the sync, and scope the data to the period the report is about.
Snapshots and synced data
Every Summarix report is built from a dataset, and a dataset is either a fixed copy or something that is kept up to date. The difference decides whether next Monday's scheduled report shows next Monday's numbers.
| Source | How it updates | What a schedule sees |
|---|---|---|
| Uploaded CSV or Excel file | Never: it is the file you uploaded | The same numbers every run |
| Database query saved as a dataset | Never: a snapshot of the results at that moment | The same numbers every run, until you save a new one |
| Connected app or sheet (Google Sheets, CSV/Excel link, REST/JSON API, Stripe, Shopify, HubSpot, Jira and others) | Synced manually, every hour, daily or weekly, into the same dataset | Whatever the last sync brought in |
| Push URL from Zapier, Make, n8n or Power Automate | Each push adds rows or replaces them | Whatever was last pushed |
| Public API | Your code sends rows | Whatever your code last sent |
Time the report after the sync
Schedules run at a set hour, South African time, on a daily, weekly or monthly basis. Syncs run on their own interval. If a weekly report goes out at 07:00 on Monday and the source syncs once a day, the report may use a sync from late on Sunday or early on Monday, depending on when the daily run happened. For reports that must include yesterday in full:
- Sync the source every hour, so the latest data is never more than an hour old when the report runs.
- Or keep a daily sync and schedule the report later in the morning, once you know the sync has run.
- Check the connection's last sync time and any error on the Integrations page after the first few runs.
Scope the data to the period
Fresh data is only half the job; the report also has to cover the right period. KPIs are calculated over every row in the dataset, and charts with a date on the axis are grouped by month. So if a connection imports two years of orders, the 'total revenue' KPI is two years of revenue, whatever the focus says. Scope the source instead:
| Source | How to scope it |
|---|---|
| Jira | A JQL filter such as resolved >= -7d |
| REST/JSON API | Query parameters the API supports, ideally relative ones such as the last 7 days |
| Google Sheets | A tab that holds only the current period, refreshed by your team or a formula |
| Push URL | Send the period's rows with replace, so old rows do not pile up |
| Any source | A Week or Month column, so the report can break the numbers down by period |
Our guide to briefing an AI report explains why a focus cannot filter rows, and 8 data quality issues that quietly break reports covers what else to check once the data is flowing.
What about live databases?
A database connection lets you run a read-only SELECT query (one statement, a 10-second limit and up to 5,000 rows) and save the result as a dataset. That result is a snapshot: nothing runs the query again on its own. It is ideal for one-off and monthly reports, where you run the query, save it and report on it. Our guide to connecting SQL Server, PostgreSQL or MySQL safely covers the read-only account to use.
- Aggregate in the query: a GROUP BY on day, product or region keeps results well under 5,000 rows and makes the report faster to read.
- For a recurring report: have a scheduled job in your own system run the query and send the rows to a push URL with replace, so the dataset stays current and your schedule keeps working.
- Or expose a read-only endpoint: if your system has an API, a REST/JSON connection can sync it on an interval.
Append or replace?
Push URLs accept two modes. Append adds the rows you send to the dataset, which suits a stream of new records, such as each new order. Replace starts the dataset over with the rows you send, which suits a full refresh, such as 'all open invoices'. Sending a full refresh with append duplicates everything; sending a stream with replace keeps only the last batch. A dataset holds up to 200,000 rows, and once an appended dataset reaches that limit, sending with replace starts it again.
Checks before you trust a scheduled report
- The connection's last sync time is recent, and it shows no error.
- The dataset's row count changed roughly as expected since the last run.
- The dates in the data cover the period the report claims to cover.
- The report's data-quality notes do not mention new blanks or odd values.
- The numbers match the source system for one or two figures you can check quickly.
Run through the list for the first few weeks of any new schedule, then spot-check monthly. For the schedule itself (timing, recipients and what to put in the email), see scheduled email reports done right, and for spreadsheets your team already maintains, automated reports from Google Sheets.
Connect a source that syncs, and let next Monday's report bring next Monday's numbers.
Free plan: 5 AI reports a month, no card needed.
Frequently asked questions
Does a scheduled report re-run my database query?
No. A query saved as a dataset is a snapshot of the results at that moment. For a recurring report on database data, push the query results on a schedule from your own system, or connect an endpoint that syncs.
How often should a source sync?
Often enough that the report's period is complete when it runs. Every hour suits daily and Monday-morning reports; daily or weekly is enough for monthly ones. More frequent syncs do not change the report unless the data has changed.
Can I change which dataset a schedule uses?
A schedule stays tied to its dataset. To report on a different dataset, create a new schedule and pause or delete the old one. Using a synced source avoids the problem, because the same dataset keeps updating.
Why does my weekly report show a year of data?
Because KPIs cover every row in the dataset. Scope the source to the period, with a filter, a query parameter or a tab that holds only recent rows, or add a Week column so the report can break the numbers down by week.