Google AnalyticsAPI - 指标的选择会影响返回的维度值吗?

时间:2011-02-16 16:33:59

标签: google-analytics google-analytics-api

早上好。我在Google AnalyticsAPI中看到过这种行为,作为一个SQL人我觉得很奇怪。我想获取adContent的所有值的列表,因此我查询ga:adContent和(因为我还必须选择一个指标,没有明确定义的原因)ga:organicSearches。它位于同一组(Campaign)中,因此它可能会在服务器上表现更好。

我得到一行:adContent是“(未设置)”,organicSearches是516,674。嗯,我猜adContent没有被使用。但营销部门发誓说它是,并产生一些令人信服的屏幕截图。

稍后,我随意将指标更改为ga:transactions。在我醒来的宇宙中,除了在该列中返回的实际值之外,这应该对任何事物都没有任何影响。相反,我得到了数以万计的行,ga:adContent的值合理。 ga:transactions的值有时为零,因此GA不会过滤“metric> 0”。

我的查询中没有过滤器。我没有更改这两个变体之间的日期范围。谁能告诉我发生了什么事?我希望上面的查询转换为类似的东西,它应返回完全相同的行数:

SELECT adContent, SUM(organicSearches)
FROM Campaign
WHERE Date BETWEEN X AND Y
GROUP BY adContent

SELECT adContent, SUM(transactions)
FROM Campaign INNER JOIN ECommerce ON <something>
WHERE Date BETWEEN X AND Y
GROUP BY adContent

我意识到GA可能没有在后端使用普通的RDMS,但在任何数据库中肯定1 + 1仍然等于2!

1 个答案:

答案 0 :(得分:3)

根据定义,ga:organicSearches几乎不会有ga:adContent的任何匹配(边缘情况除外)。 ga:adContent用于广告的内容,其中ga:organicSearches用于会话中的自然搜索结果访问(例如,如果您在同一会话中多次使用Google来尝试在网站上查找特定内容) 。除了试图测量这种特殊现象外,不要将它用于任何事物。

尽量不要在这里使用SQL思维框架; Google Analytics不会在后端使用SQL,因此您对传统关系的概念不适用。 IIRC,他们使用了一些东西,其中包括BigTable variant,这是一个NoSQL类型的数据库。

From a Google Paper on BigTable from 2006

  

我们简要介绍两个表格   由Google Analytics使用。原始的   单击表(200 TB)保持一行   对于每个最终用户会话。排   name是包含的元组   网站的名称和时间   会话已创建。这个架构   确保访问的会话   同一个网站是连续的,那个   它们按时间顺序排序。这个   桌子压缩到14%   原始尺寸。汇总表(20   TB)包含各种预定义的   每个网站的摘要。这张桌子   从原始点击表生成   通过定期安排的MapReduce   工作。每个MapReduce作业都会提取   来自原始点击的最近会话数据   表。整个系统的吞吐量   受到GFS吞吐量的限制。   该表压缩到其中的29%   原始尺寸。

如果您希望所有维度列表的指标的最小公分母,请使用ga:pageviews