我正在将我的应用程序迁移到V4,问题是您需要将includeEmptyRows设置为TRUE,这就是我刚才所做的。但是空行根本没有填充。
function queryReports() {
gapi.client.request({
path: '/v4/reports:batchGet',
root: 'https://analyticsreporting.googleapis.com/',
method: 'POST',
body: {
reportRequests: [
{
**includeEmptyRows: 'true',**
//**this above for empty rows
viewId: VIEW_ID,
dateRanges: [
{
startDate: startDate0,
endDate: endDate0
}
],
//**below samplimg levels
samplingLevel: 'LARGE',
//request metrics here
metrics: [
{
expression: 'ga:sessions',
}
,
{
expression:'ga:goalCompletionsAll',
},
{
expression:'ga:transactionRevenue',
},
{
expression:'ga:transactions',
},
],
//request dimensions here
dimensions: [
{
name:'ga:channelGrouping',
},
{
name:'ga:yearMonth',
},
],
}
]
}
}).then(displayResults, console.error.bind(console));
}
我只获得空行值,所以几个月内没有关于任何特定频道的数据只是跳过:/
不确定这里有什么问题,我遵循了文档中的规范,但它根本就没有用。
希望有人能帮助我,
非常感谢 学家
答案 0 :(得分:2)
文档可能会好很多 - 不幸的是,它会让人们相信你会为每个具有零值的维度组合返回行。不幸的是,事实并非如此。如果您要从查询中排除ChannelGrouping,您确实会获得日期范围内所有yearMonth值的行,即使有0个会话也是如此。
换句话说,当你只在查询中包含日期维度(而不是时间维度)时,这可以正常工作。
我认为这是因为每个日期的每个维度的基数都是未知的。你希望每年有一个0次会话,每个月和ChannelGrouping组合?如果您将国家/地区和城市添加为维度怎么办?
可以获得您所追求的结果,而不是针对API的单个查询。以下是使用Analytics Canvas的步骤概述,但您可以使用JavaScript(或任何用于调用API的语言)和SQL自行执行相同的步骤。
要获得您之后的结果,请进行以下3次查询:
1)yearMonth and sessions with empty rows:
2)channelGrouping and sessions over the time period
3)yearMonth, channelGrouping, and sessions(您的查询如上所示):
现在对查询1和2执行cross join,从输出中删除会话。您将拥有一个表格,其中包含您的时间段内yearMonth和channelGrouping的所有组合。我们称之为表4。
接下来在表4和查询3上执行左外连接,从查询3中删除yearMonth和channelGrouping。
现在,您拥有表5,其中包含yearMonth和channelGrouping的每个组合,该组合中有会话的会话值以及其余的值。
最后用零替换空值,你就得到了你想要的数据集。
isnull([Original.sessions], 0)