【发布时间】:2015-09-25 17:17:05
【问题描述】:
我正在尝试将事件归因于流量日志中的来源。对于任何半精明的技术营销人员或网站管理员来说,这似乎是相当基本的领域,但我已经在 Google 上搜索了一下,令人惊讶的是,似乎没有人涉及到这一点。
背景:我正在使用 T-SQL,我们在 SQL Server 2016 上运行。我的事件日志(HAProxy)看起来像这样,其中RefererHost 是 '%mysite%' 用于内部推荐,但可以是其他任何外部推荐(入口)。
User Agent || IP || RefererHost || Event || CreationDate
------------------------------------------------------------------------------
qwertyuiop || 99.99.99.9 || google.com || Home/View || 2015-05-29 00:00:25
------------------------------------------------------------------------------
qwertyuiop || 99.99.99.9 || mysite/x || Home/View || 2015-05-29 00:00:27
------------------------------------------------------------------------------
abcdefghij || 11.11.11.1 || yahoo.com || Home/View || 2015-05-29 00:00:49
------------------------------------------------------------------------------
qwertyuiop || 99.99.99.9 || mysite/y || Submit || 2015-05-29 00:01:28
------------------------------------------------------------------------------
abcdefghij || 11.11.11.1 || mysite/p || Photo/View || 2015-05-29 00:02:04
------------------------------------------------------------------------------
abcdefghij || 11.11.11.1 || mysite/n || Submit || 2015-05-29 00:02:09
目标:我试图将所有Submit 事件与其入口相关联。汇总后,结果将如下所示:
RefererHost || SubmitCount ||
------------------------------
google.com || 1 ||
yahoo.com || 1 ||
复杂因素:但这是一个非常简单的例子。事实上,单个用户每个周期可以访问多次,并且每次访问(会话)可以多次Submit。此外,用户可能会在进入后长时间处于空闲状态:Submit 可能会在进入后数小时出现。
所以我认为我想要做的是选择所有CreationDates,其中Event = Submit,以及用户(IP + UA 校验和),然后找到最近的先前事件其中 = RefererHost 不是'%mysite%',并将其存储在与Submit 事件相关的某个位置。然后我可以对Submit 事件进行计数,按RefererHost 分组,以获得我要查找的内容。
这种方法对我来说有点意义,但我不知道如何编写一个“回溯”以查找最近的先前引用者的查询。另外,我不确定单独的 SQL 是否可以在操作超时的情况下处理这个问题。而且我不确定我是否缺少边缘案例。以前有人做过这样的事吗?
【问题讨论】:
-
使用您的样本数据的预期结果是什么
-
@wewestthemenace 添加。感谢您的关注。
-
在 SQL 2012 或更高版本中,您需要
LAG函数。
标签: sql tsql haproxy referer sql-server-2016