PMax data via GBQ DataTransfer

Dear Google :slight_smile:

After quite a bit of digging, I managed to locate Asset Group level data for Performance Max campaigns in the default tables (incl PMax tables) delivered via Data Transfer in BigQuery.
However, the data in those tables is incomplete. In some accounts, I can see costs for only 2 out of 10 groups, while in others I get only group names and IDs but no stats.
Are you aware of this issue, and is there a timeline for fixing these tables and releasing the complete data?

Many thanks!

Posting my query here as well in case it’s useful to anyone.

with group_names as (

SELECT distinct asset_group_id, asset_group_name

FROM `XXX.google_ads**.p_ads_AssetGroup**_XXX`

WHERE TIMESTAMP_TRUNC(_PARTITIONTIME, DAY) >= TIMESTAMP(“2025-09-01”)

)

, stats as (

SELECT distinct asset_group_product_group_view_asset_group,

REGEXP_EXTRACT(asset_group_product_group_view_asset_group, r’([0-9]+)$') as group_id,

segments_date, round(sum(metrics_cost_micros)/1000000,2) as costs

FROM `XXX.google_ads.p_ads_AssetGroupProductGroupStats_XXX`

WHERE TIMESTAMP_TRUNC(_PARTITIONTIME, DAY) >= TIMESTAMP(“2025-09-01”)

group by all

)

select asset_group_name, asset_group_id, segments_date, sum(costs) as costs

from stats right join group_names

--from stats join group_names

on stats.group_id = group_names.asset_group_id

--where segments_date = “2025-09-02”

group by all

1 Like

Hi @annaun,

I’ve noticed that you’re using RIGHT JOIN in your query. Think of it like this: your first table is a complete list of all the asset groups you have. Your second table, the one with the stats, isn’t a complete list of all groups. When you use a RIGHT JOIN, you’re telling the database to keep all the information from the second, “stats” table. If an asset group has no performance stats in that table, it simply won’t show up in the joined results. This might be the reason why you’re only seeing costs for a couple of your groups.

A LEFT JOIN might be a better choice, as it will show all your asset groups and simply return NULL for the costs where there was no activity.

Hi @mcbsalceda thanks for your feedback. I have tested multiple join options. Unfortunately that does not solve the root cause issue with missing data.