Gia*_*uca 8 python google-analytics google-analytics-api python-3.x google-analytics-firebase
我正在尝试将多个dimensionFilterClauses用于Core Reporting API V4查询.如果我只使用ga:adwordsCustomerID
维度上的过滤器一切正常,但是当我在ga:adTargetingType
维度上添加第二个过滤器时,它会抛出"状态400:错误请求"错误.
这是我写的查询:
return analytics.reports().batchGet(
body={"reportRequests": [{
"pageSize": 10000,
"viewId": VIEW_ID,
"dateRanges": [
{"startDate": "31daysAgo", "endDate": "yesterday"}
],
"dimensions": [
{"name": "ga:adwordsCampaignID"},
{"name": "ga:adwordsAdGroupID"},
{"name": "ga:adwordsCriteriaID"}
],
"metrics": [
{"expression": "ga:adClicks"},
{"expression": "ga:adCost"},
{"expression": "ga:uniquePurchases"},
{"expression": "ga:itemRevenue"},
{"expression": "ga:CPC"},
{"expression": "ga:ROAS"}
],
"dimensionFilterClauses": [
{"filters": [
{"dimensionName": "ga:adwordsCustomerID",
"operator": "EXACT",
"expressions": ["2096809090"]},
{"dimensionName": "ga:adTargetingType",
"operator": "EXACT",
"expressions": ["Keyword"]}
]}
],
"metricFilterClauses": [
{"filters": [
{"metricName": "ga:adCost",
"operator": "GREATER_THAN",
"comparisonValue": "0"}
]}
],
"orderBys": [
{"fieldName": "ga:adClicks",
"sortOrder": "DESCENDING"}
]}
]}
).execute()
Run Code Online (Sandbox Code Playgroud)
你知道上面的查询体有什么问题吗?
Mat*_*att 11
所述的ReportRequest需要的阵列DimensionFilterClauses
.这些子句与逻辑AND
运算符组合在一起.IE浏览器.如果你有两个DimensionFilterClause
对象:A和B ; API将仅返回满足A AND
B中两个条件的值.
每个都DimensionFilterClause
采用一个DimensionFilters
(调用filters
)数组.这些过滤器与逻辑OR
运算符组合在一起.IE浏览器.如果你有一个DimensionFilter
对象C和D在一个DimensionFilterClause
; API将返回满足C或D的结果.
以下是两个示例请求DimensionFilterClauses
; ga:adWordsCampaignID==8675309
AND
ga:adwordsAdGroupID==12345
API Explorer示例:
{
"reportRequests":
[
{
"viewId": "XXXX",
"dimensions":
[
{"name": "ga:adwordsCampaignID"},
{"name": "ga:adwordsAdGroupID"},
{"name": "ga:adwordsCriteriaID"}
],
"metrics":
[
{"expression": "ga:adClicks"},
{"expression": "ga:adCost"}
],
"metricFilterClauses":
[
{
"filters":
[
{
"metricName": "ga:adCost",
"operator": "GREATER_THAN",
"comparisonValue": "0"
}
]
}
],
"dimensionFilterClauses":
[
{
"filters":
[
{
"dimensionName": "ga:adwordsCampaignID",
"operator": "EXACT",
"expressions": ["8675309"]
}
]
},
{
"filters":
[
{
"dimensionName": "ga:adwordsAdGroupID",
"operator": "EXACT",
"expressions":
["12345"],
}
]
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
从一开始,您的API请求正文似乎没有任何问题,如果有,您会收到错误消息.但是你更有可能不打算要求:
"dimensionFilterClauses": [
{"filters": [
{"dimensionName": "ga:adwordsCustomerID",
"operator": "EXACT",
"expressions": ["2096809090"]},
{"dimensionName": "ga:adTargetingType",
"operator": "EXACT",
"expressions": ["Keyword"]}
]}
],
Run Code Online (Sandbox Code Playgroud)
但您打算请求:
"dimensionFilterClauses": [
{"filters": [
{"dimensionName": "ga:adwordsCustomerID",
"operator": "EXACT",
"expressions": ["2096809090"]},
]},{"filters": [
{"dimensionName": "ga:adTargetingType",
"operator": "EXACT",
"expressions": ["Keyword"]}
]}
],
Run Code Online (Sandbox Code Playgroud)
我没有数据显示的建议是首先删除过滤器,然后验证您是否具有要搜索的确切字符串.此外,如果您没有完整的字符串,您可以使用不同的或filter.operator
如.PARTIAL
BEGINS_WITH
使用正确的错误处理也很聪明,尤其是在调试时:
try:
response = analyticsreporting.reports().batchGet(
body=requestBody
).execute()
except TypeError, error:
# Handle errors in constructing a query.
print 'There was an error in constructing your query : %s' % error
except HttpError, error:
# Handle API errors.
print ('There was an API error : %s : %s' %
(error.resp.status, error.resp.reason))
Run Code Online (Sandbox Code Playgroud)
ga:adTargetingType==Keyword
示例从下面的评论中,要求提供维度过滤器的示例ga:adTargetingType==Keyword
.使用此处的API示例向您自己证明它可以工作(只需更改VIEW_ID
到您的视图视图ID并点击"授权和执行").JSON正文如下:
{
"reportRequests":
[
{
"viewId": "VIEW_ID",
"metrics": [{"expression": "ga:sessions"}],
"dimensions": [{"name": "ga:adTargetingType"}],
"dimensionFilterClauses":
[
{
"filters":
[
{
"dimensionName": "ga:adTargetingType",
"operator": "EXACT",
"expressions": ["Keyword"]
}
]
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
我总是喜欢从小做起并努力工作.通过删除其他参数和字段,我可以向自己证明什么是有效的,什么不是.此示例是筛选的最低要求请求ga:keyword==Keyword
.
您收到的实际错误消息如下:
"Selected dimensions and metrics cannot be queried together."
Run Code Online (Sandbox Code Playgroud)
ga:adTargetingType
无法使用以下指标查询维度:
ga:impressions
ga:adClicks
ga:adCost
ga:CPM
ga:CPC
ga:CTR
ga:costPerTransaction
ga:costPerGoalConversion
ga:costPerConversion
ga:RPC
ga:ROAS
小智 5
此页面中缺少的一条重要信息是FilterLogicalOperator的使用。这是用于组合多个维度过滤器的运算符。如果未指定,则将其视为 OR。因此,上面的答案说默认值是 AND 是不正确的。
为了应用这两个过滤器,我们需要在代码中添加 FilterLogicalOperator:
"dimensionFilterClauses": [
{"operator": "AND",
"filters": [
{"dimensionName": "ga:adwordsCustomerID",
"operator": "EXACT",
"expressions": ["2096809090"]},
{"dimensionName": "ga:adTargetingType",
"operator": "EXACT",
"expressions": ["Keyword"]}
]}
],
Run Code Online (Sandbox Code Playgroud)