Guide5 min read

How to Connect GA4 to Power BI: Worked Example and Data Model via OData

Connect GA4 to Power BI in six steps via OData, then calculate engagement rate with a worked DAX example. Covers report tables, data quality and refresh.

Auke Westra

By Auke Westra

Founder of DigiData

Practical guide. This article covers the steps, checks, and common issues. View the Google Analytics 4 product page for supported data, operation and availability.

Short answer

You load Google Analytics 4 into Power BI by reading DigiData's 8 pre-aggregated report families via OData. Because metrics like active users are non-additive, daily rows cannot simply be summed. In this worked example, we calculate the weighted engagement rate over a bounded period using a DAX measure, explain data quality flags (thresholding and sampling), and outline the operation of source API quotas.

How to connect GA4 to Power BI

  1. In DigiData, connect a Google account with read access to your GA4 property and select the property.
  2. Wait for the first successful synchronization.
  3. In Power BI Desktop, choose Get Data → OData feed and paste your DigiData service-root URL.
  4. Choose Basic authentication, enter any user name and paste your DigiData API key as the password.
  5. Load GoogleAnalytics4_TrafficAcquisition and any other report tables you need. Rename it to Ga4TrafficAcquisition in Power Query to use the DAX measure below.
  6. In Power BI Service, schedule the refresh shortly after DigiData's nightly synchronization.

Names below refer to report models; check the available table names in your feed.

Why connect Google Analytics 4 to Power BI?

Website visits and online conversions represent the start of the customer journey for many organizations. While the Google Analytics 4 interface provides rapid insights, marketing and finance teams want to combine web performance in Power BI with data from CRM (such as HubSpot or Simplicate) and recognized invoices (from Exact Online or Twinfield).

Without a central data layer, analysts encounter major technical hurdles with GA4: complex API authentication, strict token quotas per property, sampled data, and thresholding. DigiData simplifies loading by providing eight structured report families in a reliable OData feed.

The 8 GA4 report families in DigiData

DigiData retrieves already aggregated reports from the Google Analytics Data API into eight separate tables.

  1. Traffic Acquisition (Ga4TrafficAcquisition): Session-based attribution (with dimensions like SessionDefaultChannelGroup, SessionSource, SessionMedium and metrics like Sessions, EngagedSessions, KeyEvents, TotalRevenue).
  2. User Acquisition (Ga4UserAcquisition): First-user attribution (FirstUserDefaultChannelGroup, FirstUserSource, FirstUserMedium, ActiveUsers, NewUsers).
  3. Landing Pages (Ga4LandingPage): Performance per landing page (LandingPagePlusQueryString, Sessions, EngagedSessions, EngagementRate).
  4. Pages and Screens (Ga4Page): Page views and interaction duration (PagePathPlusQueryString, PageTitle, ScreenPageViews, UserEngagementDuration, EventCount).
  5. Events (Ga4Event): Aggregated event counts (EventName, EventCount, TotalUsers, EventValue, KeyEvents).
  6. E-commerce Items (Ga4EcommerceItem): Product sales (ItemId, ItemName, ItemBrand, ItemCategory, ItemsViewed, ItemsPurchased, ItemRevenue).
  7. Technology (Ga4Technology): Device and browser statistics (DeviceCategory, Browser, OperatingSystem, Sessions).
  8. Geography (Ga4Geography): Country and regional data (Country, CountryId, Sessions, EngagedSessions, KeyEvents).

Two crucial pitfalls in GA4 modeling

When building a Power BI report on GA4 data, analysts must avoid two common mistakes:

1. Summing non-additive active users (ActiveUsers)

Unlike sessions or page views, the metric ActiveUsers is strictly non-additive. Google deduplicates individual visitors across the selected time period. If a user visits your website on Monday, Wednesday, and Friday, Google counts that user as one active user for that week. If you sum daily rows in Power BI using SUM(ActiveUsers), you count that visitor three times. For summations across time, exclusively use additive metrics like Sessions or ScreenPageViews, or report ActiveUsers only within the natural level of detail of the source table.

2. Mixing different table grains

Never attempt to merge rows from Ga4TrafficAcquisition (session grain) and Ga4UserAcquisition (first-user grain) into one wide flat table. These tables use fundamentally different attribution models. Treat each report family as a separate fact table in a star schema, connected to shared dimensions such as Date.

Practical worked example: Engagement Rate by channel

The ratio between sessions and engaged sessions provides a clean view of traffic quality. Google determines engaged sessions using duration, key events and page or screen views. Check the configured timer and the official engagement definition.

The example below shows an explicitly fictional dataset for the example period (July 1, 2026 through September 1, 2026) on the dimension Session default channel group:

Channel Group (Fictional Example)SessionsEngaged SessionsCalculated Engagement Rate
Organic Search14,5008,99062.0%
Direct6,2003,84462.0%
Paid Search9,8005,19453.0%
Referral2,5001,70068.0%
Organic Social1,80086448.0%
Total (Weighted Average)34,80020,59259.17%

[!NOTE] Example values rationale: The above numbers and channel names are explicitly fictional and serve as an illustrative calculation example.

In Power BI, never average the column EngagementRate for total averages (which would yield an unweighted average of percentages). Always create an explicit DAX measure instead:

Engagement Rate = 
DIVIDE(
    SUM('Ga4TrafficAcquisition'[EngagedSessions]),
    SUM('Ga4TrafficAcquisition'[Sessions]),
    0
)

Quality metadata: Thresholding, data loss, and sampling

Every GA4 table in DigiData includes three specific quality flags:

  • SubjectToThresholding (Boolean): Indicates whether Google applied privacy thresholds. This occurs when Google Signals is enabled and user counts per row are small, preventing individual re-identification.
  • DataLossFromOtherRow (Boolean): Indicates whether Google Analytics collapsed low-volume dimension values into the (other) row due to cardinality limits.
  • SamplingRatio (Decimal/Percentage): Contains the sampling ratio reported by Google, when present. A value of 0.65 means 65% of the relevant sampling space was processed. A missing value is not independent proof that all data is available.

In Power BI, you can use these fields to display warning icons on your dashboard when data has been subject to thresholds or sampling.

Source API quotas and data refresh

A major advantage of DigiData is that interactive dashboard users in Power BI do not query the Google Analytics Data API directly. Background synchronization retrieves data in batches.

Keep in mind that the official Google Analytics 4 Data API allocates tokens per property (Core Tokens per hour and per day). Although DigiData bundles and optimizes calls, background synchronization consumes these property quotas. Avoid repeatedly triggering full historical resynchronizations on large properties unnecessarily.

Configure the data source in Power BI Service with Basic authentication using your DigiData API key, and schedule refresh shortly after nightly synchronization.

Website conversions become truly useful next to your sales data. Connecting HubSpot to Power BI puts leads and deals from your CRM next to traffic and conversions from GA4.

Summary

With DigiData's 8 aggregated report families, you bring Google Analytics 4 reliably into Power BI without fragile API scripts or CSV exports. By accounting for non-additive metrics and data quality flags, you build robust marketing dashboards. Learn more about the Google Analytics 4 integration or explore Power BI reporting.

Want web figures next to revenue and margin? That is what a KPI dashboard is for.

Sources

Auke Westra

About Auke Westra

Founder of DigiData

Auke Westra is Founder of DigiData. He was responsible for clients' data and reporting and in 2025 began building an in-house data platform with his team. He writes about AI on business data, data definitions, Power BI and integrations.

Ready to start?

Try DigiData free for 14 days. Connect your software and use your data in dashboards, the AI agent or Power BI.

Related articles