早上好。我在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!
答案 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
。