Power BI is Microsoft’s business intelligence platform for building reports and dashboards from many data sources, including Google Analytics 4.
You can connect GA4 to Power BI in two main ways: the built-in Google Analytics connector or the GA4 export to BigQuery.
The connector takes minutes and needs no code, while BigQuery takes longer but gives you raw, unaggregated events.
Below you’ll find both methods step by step, the limits of each, and how to pick the right one.
What Is Power BI?
Power BI is a family of three products that share one data model and one formula language called DAX:
- Power BI Desktop is a free Windows app where you connect data, model it and design report pages.
- Power BI service is the cloud part, where reports are published, shared and refreshed on a schedule.
- Power BI Mobile shows the same reports on iOS and Android phones.
Desktop is a free download, but sharing reports usually needs a paid license for everyone who builds or views them.
Microsoft’s pricing page lists Power BI Pro at $14 per user per month and Premium Per User at $24, both paid yearly.
For GA4 teams, Power BI usually competes with Looker Studio, Google’s free dashboard tool.
Ways to Connect GA4 to Power BI
Each route reads different data and stops at a different ceiling, so the choice matters before you build anything.
| Route | Setup time | What you get | Main limit |
|---|---|---|---|
| Google Analytics connector | Minutes | Aggregated GA4 report data | Wide date ranges return a subset of values |
| BigQuery export | A day, plus SQL work | One row per event, no aggregation | 1 million events per day on standard properties |
| Third-party connector | Short, no code | Aggregated data, managed for you | A monthly subscription |
Method 1: Connect GA4 With the Built-In Google Analytics Connector
Power BI ships a Google Analytics connector in general availability. Its Implementation 2.0 setting reads GA4 through Google’s Data API.
Before you start, you need a Google account with access to the GA4 property.
You also need Power BI Desktop from June 2021 or later, because older builds can’t complete the Google sign-in.
- In Power BI Desktop, select Get Data on the Home ribbon.
- Choose Online Services, select Google Analytics, then click Connect.
- If a third-party notice appears, click Continue.
- Select Implementation 2.0. The dialog may still label it Beta. Implementation 1.0 points to the retired Universal Analytics API.
- Click Sign in, enter your Google account and password, and allow Power BI to access the account.
- Click Connect.
- In the navigator, open your account and GA4 property, then tick the dimensions and metrics you need.
- Click Load to import the table, or Transform Data to filter it in Power Query first.
To keep the report fresh, publish it to the Power BI service.
Then open the semantic model settings, sign in again under data source credentials, and turn on scheduled refresh.
Microsoft’s connector documentation shows every dialog from these steps with screenshots, if you get stuck.
Limits of the Google Analytics connector
- Silent trimming. Microsoft warns that very large date ranges return only a subset of values. Pull data in smaller periods and append them.
- Import only. The connector supports Import mode, so data is as fresh as your last refresh.
- Personal sign-in. Refresh runs under the Google account that signed in. If that person loses access, refresh stops.
- GA4 quotas. A standard property gets 200,000 core Data API tokens per day, shared with every tool that queries it.
- Aggregated data. High-cardinality dimensions can fold into an
(other)row, exactly as they do in GA4 reports.
Power BI itself is allowed 1,500,000 Google Analytics queries per day, so the GA4 property quota is the one you’ll meet first.
Method 2: Connect GA4 to Power BI Through BigQuery
The BigQuery export writes every GA4 event as a row, before any aggregation happens.
Power BI then connects to BigQuery instead of GA4, which removes the (other) row and the API token quotas.
Step 1: Link GA4 to BigQuery
- In GA4, open Admin, find Product links and click BigQuery links.
- Click Link, choose your BigQuery project and confirm.
- Pick a data location, then choose the data streams and any events to exclude.
- Select Daily export, Streaming, or both, then review and submit.
You need the Editor role on the property and Owner access to the BigQuery project.
Google says data should start arriving within 24 hours, as one events_YYYYMMDD table per day.
Step 2: Build a flat view for Power BI
GA4 tables store event parameters as nested records. Power BI loads nested fields as JSON text, which is slow to work with.
A flat SQL view solves this. It also creates a session key, because ga_session_id alone isn’t unique across users:
CREATE OR REPLACE VIEW `my_project.reporting.fact_events` AS
SELECT
PARSE_DATE('%Y%m%d', event_date) AS event_date,
event_name,
user_pseudo_id,
CONCAT(user_pseudo_id, '-', CAST((SELECT value.int_value FROM UNNEST(event_params)
WHERE key = 'ga_session_id') AS STRING)) AS session_key,
(SELECT value.string_value FROM UNNEST(event_params)
WHERE key = 'page_location') AS page_location,
ecommerce.purchase_revenue AS purchase_revenue
FROM `my_project.analytics_123456789.events_*`
WHERE _TABLE_SUFFIX >= FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY));
The date filter keeps every refresh from scanning your whole export history.
Step 3: Connect Power BI Desktop to BigQuery
- Select Get Data, then Google BigQuery.
- Click Sign in with a Google account, or choose Service Account Login and paste the service account key.
- Click Connect.
- In the navigator, open the project and dataset, then select your
fact_eventsview. - Click Load, and choose Import or DirectQuery mode.
Publish the report, add the BigQuery credentials in the service, and schedule refresh the same way as with the connector.
A service account is the better choice for shared reports, because refresh no longer depends on one person’s login.
Limits of the BigQuery route
- Export cap. Standard properties can export 1 million events per day with daily export.
- Streaming cost. Google charges $0.05 per gigabyte, roughly 600,000 events, on top of BigQuery storage and queries.
- SQL work. You rebuild sessions, attribution and metrics yourself, and mistakes here are easy to miss.
- Billing project errors. An Access Denied message usually means you need to set a billing project ID in the connector options.
- Different numbers. Raw events won’t match GA4 reports exactly, because reports apply modeling and estimation.
Third-Party Connectors
Services such as Supermetrics, Funnel, Coupler.io and Windsor.ai sell managed GA4 pipelines into Power BI.
They handle quotas, schema changes and backfills for you, in exchange for a monthly fee per data source or account.
They still read GA4’s aggregated data through the API, so they don’t remove the (other) row or thresholds.
Which GA4 to Power BI Method Should You Use?
| Situation | Best route | Why |
|---|---|---|
| A marketing dashboard with a few dimensions | Google Analytics connector | Fastest to build, and quotas rarely bite at this size |
| Numbers must match the GA4 interface | Google Analytics connector | It reads the same aggregate tables as GA4 reports |
| Page paths, product SKUs or other long lists | BigQuery export | No (other) row on raw events |
| GA4 joined with CRM or order data | BigQuery export | Joins on transaction_id work in SQL |
| Many client properties, no engineers | Third-party connector | Someone else maintains the pipeline |
If your Power BI totals disagree with GA4, read our guide on why Power BI and GA4 numbers don’t match.
Power BI vs Looker Studio for GA4
Both tools build GA4 dashboards, but they fit different teams, budgets and data stacks:
| Criterion | Power BI | Looker Studio |
|---|---|---|
| Price to share reports | Pro license per user | Free |
| GA4 connection | Google Analytics connector or BigQuery | Google’s own GA4 connector |
| Formula language | DAX and Power Query M | Calculated fields |
| Best fit | Microsoft 365 companies mixing GA4 with other business data | Marketing teams that report mostly from Google tools |
Pick Power BI when GA4 data has to sit next to CRM, ERP or finance tables. Pick Looker Studio for quick GA4-only dashboards.
DAX Basics for GA4 Metrics
DAX is the formula language that turns rows into metrics. Two measures cover most GA4 dashboards built on the view above:
Sessions = DISTINCTCOUNT(fact_events[session_key])
Purchase Session Rate =
DIVIDE(
CALCULATE(DISTINCTCOUNT(fact_events[session_key]), fact_events[event_name] = "purchase"),
[Sessions]
)
Use DIVIDE() instead of the slash operator, because it returns a blank instead of an error when sessions are zero.
Build a separate date table and mark it as the date table, or time intelligence functions can return wrong results.
Refresh Limits in Power BI
- Pro. Models on shared capacity get eight scheduled refreshes per day, and each refresh must finish within two hours.
- Premium Per User and Fabric. You can schedule up to 48 refreshes per day.
- Manual refresh. Clicking Refresh now doesn’t count toward the eight scheduled slots.
GA4 data keeps processing for up to 48 hours, so refresh yesterday’s numbers again the next day before you trust them.
Frequently Asked Questions
Does Power BI have a GA4 connector?
Yes. The Google Analytics connector in Power BI supports GA4 through the Data API when you select Implementation 2.0 in the connection dialog.
How do I connect GA4 to Power BI?
In Power BI Desktop, select Get Data, Online Services, Google Analytics. Choose Implementation 2.0, sign in with Google, then pick your property and fields.
Is it free to connect GA4 to Power BI?
Desktop and the connector are free. Sharing reports needs Power BI Pro at $14 per user per month, and BigQuery adds its own usage costs.
Should I use the connector or BigQuery?
Use the connector for standard marketing reports. Use BigQuery when you need event-level detail, long lists of pages or products, or joins with CRM data.
How often can Power BI refresh GA4 data?
Up to eight scheduled refreshes per day on Pro, and up to 48 on Premium Per User or Fabric capacity.
Why don’t my Power BI numbers match GA4?
Usual causes are trimmed date ranges, (other) rows, thresholds, time zones and summed user counts. Compare one finished day first.
Related Terms
- Looker Studio: Google’s free alternative for GA4 dashboards
- BigQuery: the warehouse behind the raw-event route
- Property: the GA4 container you connect to
- Data Stream: how GA4 collects the events you report on
- Attribution: how revenue is assigned to channels in GA4
- UTM Parameters: the campaign tags behind channel reports