GA Python API调用获取Account维度列报错问题咨询
问题原因
调用GA3(Universal Analytics)Reporting API v4返回Unknown dimension(s) included in pivot: ga:account_name报错的核心原因:
ga:account_name不是GA3 API的合法维度,你尝试的ga:account、ga:userId、AccountName等字段要么不存在,要么用途完全不匹配:ga:userId是业务侧上传的用户标识,和GA账户名称没有任何关系。- Adveronix报表里的Account列不是GA报表接口返回的原生维度,是插件自身额外调用GA管理接口拉取账户-媒体资源-视图的映射关系,根据你请求的viewId自动匹配填充的附加字段,不需要在报表请求里传相关维度。
实现方案
要拿到和Adveronix完全一致的带Account列的数据,按以下逻辑实现即可:
- 保留你原来可正常运行的报表请求逻辑,不需要在pivot维度里添加任何和账户相关的字段,正常拉取所有指标数据。
- 额外调用GA Management API的相关接口拉取账户层级映射关系:先调用账户列表接口拿到所有有权限的GA账户,再关联对应媒体资源、视图的匹配关系,找到你当前使用的viewId对应的账户名称。
- 由于单次报表请求只会对应一个viewId,也就对应唯一的账户名,直接给拉取到的所有报表行统一填充匹配到的账户名即可,最终结果和Adveronix导出的报表完全一致。
- 如果需要同时拉取多个账户的数据,遍历每个账户下的目标viewId分别发起报表请求,给每个请求返回的结果打上对应账户标签后再合并数据集即可。
可用的基础报表请求代码如下:
report_request = { 'reportRequests': [{ 'viewId': '[替换为实际视图ID]', 'dateRanges': [{'startDate': '2022-01-01', 'endDate': '2022-01-01'}], "pivots": [{ "dimensions": [{"name": 'ga:date'}], "metrics": [ {"expression": "ga:users"}, {"expression": "ga:newUsers"}, {"expression": "ga:sessions"}, {"expression": "ga:sessionsPerUser"}, {"expression": "ga:bounces"}, {"expression": "ga:timeOnPage"}, {"expression": "ga:avgSessionDuration"}, {"expression": "ga:PageViews"} ] }] }] }
补充说明:即使后续升级使用GA4的Data API,也没有可直接在报表请求中查询的账户名称维度,同样需要通过管理接口拉取映射关系做匹配。
内容的提问来源于stack exchange,提问作者daniel_dutra
相关产品推荐
相关产品推荐

