GA4 BigQuery’s daily and intraday tables serve different stages of the export. Intraday tables provide an earlier view of event data during the day; daily tables represent the completed daily export after processing. They are not two independent copies to add together.

What intraday tables are for
When streaming export is enabled and available, GA4 writes intraday event data so teams can analyze recent activity before the daily table is finalized. The data is useful for operational monitoring, but it can be incomplete or change as processing continues.
Intraday availability and contents depend on the property’s export configuration and platform limits. Do not treat an intraday table as a final accounting record for the day.
- Use intraday data for near-current monitoring.
- Label dashboards that rely on in-progress data.
- Expect late events or adjustments to affect totals.
What daily tables are for
Daily events_YYYYMMDD tables are the standard basis for completed historical analysis. They are more suitable for reproducible reporting, but the current day’s table may not be complete until processing finishes. Late-arriving events can update recent daily data for a limited period.
A robust warehouse process should account for that update window instead of treating yesterday’s data as permanently immutable the moment it appears.
- Set an explicit freshness rule for each report.
- Reprocess recent dates when late-arriving events matter.
- Keep the property time zone in mind when naming daily partitions.
Avoid double counting when combining them
A common mistake is to union the intraday table and the daily table without a replacement rule, counting some events twice. Build a view that uses intraday data only for dates that do not yet have a completed daily table, then switches to the daily source after finalization.
Check the table suffix and date logic around midnight, and test the transition with sample event IDs. Store the logic centrally so dashboards do not each implement their own interpretation of “today.”
For example, a dashboard can use intraday data for today and the daily table for all completed dates. Once a completed daily table exists for the same date, the view should stop adding that date’s intraday table. This makes the definition of “today” explicit and prevents an apparent jump when the table switches.
How did this article land?
Choose one reaction. You can change it anytime.
