Google Analytics API V4:includeEmptyRows:'true',不工作

Joa*_*que 2 google-analytics-firebase

我正在将我的应用程序迁移到 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));
}
Run Code Online (Sandbox Code Playgroud)

我只得到非空行值,所以几个月没有关于任何特定通道的数据被简单地跳过:/

不确定这里出了什么问题,我遵循了文档中的规范,但它根本不起作用。

希望有人能帮我一把

非常感谢J。

Ame*_*ani 6

该文档可能会好得多 - 不幸的是,它使人们相信您将为每个具有零值的维度组合返回行。不幸的是,事实并非如此。如果您要从查询中排除 ChannelGrouping,即使有 0 个会话,您也确实会获得日期范围内所有 yearMonth 值的行。

换句话说,当您只在查询中包含日期维度(而不是时间维度)时,这会像您期望的那样工作。

我相信这是因为每个日期期间每个维度的基数是未知的。您是否希望每一年和 ChannelGrouping 组合都有 0 个会话?如果将国家和城市作为维度添加会怎样?

有可能获得您想要的结果,而不是通过针对 API 的单个查询。以下是使用Analytics Canvas的步骤概述,但您可以使用 JavaScript(或任何进行 API 调用的语言)和 SQL 自行执行相同的步骤。

使用 Analytics Canvas 包含具有各种维度的 EmptyRows 的工作流

要获得结果,请执行以下 3 个查询:

1) yearMonth 和带有空行的会话:

2)时间段内的 channelGrouping 和 session

3) yearMonth、channelGrouping 和 session(您的查询如上所示):

现在对查询 1 和 2执行交叉联接,从输出中删除会话。您将拥有一个表,其中包含您的时间段的 yearMonth 和 channelGrouping 的所有组合。我们称之为表 4。

交叉连接和删除会话列的结果

接下来对表 4 和查询 3 执行左外连接,从查询 3 中删除 yearMonth 和 channelGrouping。

左外连接删除列

您现在拥有表 5,其中包含 yearMonth 和 channelGrouping 的每个组合、该组合中存在会话的会话的值,以及其余会话的空值。

最后用零替换空值,你就得到了你想要的数据集。

isnull([Original.sessions], 0)
Run Code Online (Sandbox Code Playgroud)

includeEmptyRows 最终结果