这可能是一个基本问题,但我就是想不通。可以在此处找到示例数据和查询。
查询的目的是找出将信用归因于哪个位置。在第一个触摸模型中,导致转换的最早触摸(FLOODLIGHT(被记入信用。所以这里22有1个学分,11有2个学分。我不太明白第一个棘手的问题,尤其是最不重要的部分。比较prev_conversion_event.event_time < conversion_event.event_time
有什么意义?它们本质上是一样的吗?我的意思是他们两个都来自UNNEST(t.*_path.events)
。CCD_ 3也来自同一个地方。我只是在这里非常困惑。非常感谢您的帮助!
为了方便起见,我将样本数据和查询粘贴到下面:
样本数据
/* Substitute *_paths for the specific paths table that you want to query. */
SELECT
(
SELECT
attributed_event_metadata.placement_id
FROM (
SELECT
AS STRUCT attributed_event.placement_id,
ROW_NUMBER() OVER(ORDER BY attributed_event.event_time ASC) AS rank
FROM
UNNEST(t.*_paths.events) AS attributed_event
WHERE
attributed_event.event_type != "FLOODLIGHT"
AND attributed_event.event_time < conversion_event.event_time
AND attributed_event.event_time > (
SELECT
IFNULL( (
SELECT
MAX(prev_conversion_event.event_time) AS event_time
FROM
UNNEST(t.*_paths.events) AS prev_conversion_event
WHERE
prev_conversion_event.event_type = "FLOODLIGHT"
AND prev_conversion_event.event_time < conversion_event.event_time),
0)) ) AS attributed_event_metadata
WHERE
attributed_event_metadata.rank = 1) AS placement_id,
COUNT(*) AS credit
FROM
adh.*_paths AS t,
UNNEST(*_paths.events) AS conversion_event
WHERE
conversion_event.event_type = "FLOODLIGHT"
GROUP BY
placement_id
HAVING
placement_id IS NOT NULL
ORDER BY
credit DESC
比较prev_conversion_event.event_time
和conversion_event.event_time
的要点在于为每个值指定的名称。
我们想要的是找到两个泛光灯之间的所有事件。然后,您需要检查您的事件attributed_event
是否不是泛光灯,并且它位于两个泛光灯之间,即
attributed_event.event_type != "FLOODLIGHT"
attributed_event.event_time < conversion_event.event_time
attributed_event.event_time > MAX(prev_conversion_event.event_time)
其中MAX(prev_conversion_event.event_time)
必须将以前的泛光灯反射到当前的conversion_event.event_time
,因此需要
prev_conversion_event.event_type = "FLOODLIGHT"
conversion_event.event_type = "FLOODLIGHT"
prev_conversion_event.event_time < conversion_event.event_time
当然,prev_conversion、conversion和attribute这三个元素都是从相同的事件中获得的(带有额外的过滤(,因此您需要从同一列中获取它们
UNNEST(t.*_paths.events) AS prev_conversion_event WHERE ...
UNNEST(t.*_paths.events) AS conversion_event WHERE ...
UNNEST(t.*_paths.events) AS attributed_event WHERE ...
然后,您只需要按照正确的顺序组合前面的条件,并根据每个用例(第一次触摸、最后一次触摸、线性(添加等级和信用。
我希望这个解释足够清楚。如果有什么不清楚的地方,请告诉我,这样我可以帮助你进一步了解。