我正在尝试将事件归因于流量日志中的源。对于任何半精明的技术营销人员或网站管理员来说,这似乎是相当基本的领域,但我已经在 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
每次访问(会话)可以多次访问。此外,用户在进入后可能会长时间处于空闲状态:aSubmit
可能在进入后数小时内发生。
所以我认为我想要做的是选择所有CreationDates
where Event =Submit
和 Users (IP + UA checksum),然后找到最近的上一个 Event where = RefererHost is not '%mysite%'
,并将其存储...与那个相关联的地方Submit
事件。然后我可以对Submit
事件进行计数,按分组RefererHost
来获得我正在寻找的内容。
这种方法对我来说有些意义,但我不知道如何编写一个“回溯”的查询来查找最近的先前引用。另外,我不确定单独的 SQL 是否可以在操作超时的情况下处理这个问题。而且我不确定我是否缺少边缘案例。有没有人做过这样的事情?