马尔可夫链统计函数使用概率方法来为各个广告接触点分配功劳,具体取决于这些接触点对用户转化可能性的贡献(根据模型估算得出)。此实验性函数的输出可能有助于为指定的广告渠道、广告系列或其他接触点分配功劳,具体取决于这些接触点对转化事件的贡献(根据模型估算得出)
运作方式
马尔可夫链统计函数使用您的广告数据来创建马尔可夫链,其中有向图中的每个顶点都代表一个接触点,而每条边都提供了向下一接触点转移的概率(取决于目前所在的接触点)。它假定只有当前接触点会影响转移概率。随后,系统会计算每个接触点的贡献,具体方法是从图表中移除接触点,然后计算移除相应接触点后根据模型估算的转化概率。
隐私保护方面的限制
接触点必须至少包含 50 位已转化用户和 50 位未转化用户,才不会被隐私权过滤条件移除。此外,还可能会滤除对接触点贡献的功劳过大或过小的离群用户。因此,马尔可夫链模型的输出可能会缺少输入接触点表中的一些接触点。隐私权消息在马尔可夫链模型每次迭代后显示。这些消息中包含已滤除的用户和接触点的相关信息。
马尔可夫链值计算方式概览
- 创建接触点表和功劳表:
touchpoint_temp_table
。user_credit_temp_table
。
- 使用上述临时表作为参数来调用
ADH.TOUCHPOINT_ANALYSIS
表值函数。
创建接触点表和功劳表
创建接触点表
接触点表中定义了与接触点相关的用户事件。示例数据可能包括但不限于:campaign_id
、creative_id
、placement_id
或 site_id
。
该表必须包含以下列:
列名称 | 类型 |
---|---|
touchpoint |
string 任意接触点名称(不得为 NULL 或包含逗号)。 |
user_id |
string 访问接触点的用户的 ID(不得为 NULL 或 0)。 |
event_time |
int 用户访问接触点的时间(不得为 NULL)。 |
用于创建表的示例代码:
CREATE TABLE touchpoint_temp_table
AS (
SELECT user_id, event.event_time, CAST(event.site_id AS STRING) AS touchpoint
FROM adh.cm_dt_impressions
WHERE
event.event_type IN ('VIEW')
AND user_id <> '0'
AND event.campaign_id IN UNNEST(@campaign_ids)
UNION ALL
SELECT
user_id, event.event_time, CAST(event.site_id AS STRING) AS touchpoint
FROM adh.cm_dt_clicks
WHERE
event.event_type IN ('CLICK')
AND user_id <> '0'
AND event.campaign_id IN UNNEST(@campaign_ids)
);
创建用户功劳表
用户功劳表中定义了转化事件。转化后发生的事件会被视为非转化事件。
该表必须包含以下列:
列名称 | 类型 |
---|---|
user_id |
string 访问接触点的用户的 ID(不得为 NULL 或 0)。 |
event_time |
int 贡献事件发生的时间(不得为 NULL)。 |
credit |
integer 用户贡献的功劳,可以是要分析的任何功劳,例如转化价值、转化次数等。该值必须介于 1 到 100 之间。 |
用于创建表的示例代码:
CREATE TABLE user_credit_temp_table AS (
SELECT
user_id,
MAX(event.event_time) AS event_time,
1 AS credit
FROM adh.cm_dt_activities_attributed
WHERE user_id <> '0'
AND event.campaign_id IN UNNEST(@campaign_ids)
AND DATE(TIMESTAMP_MICROS(event.event_time)) BETWEEN @start_date AND @end_date
AND event.activity_id IN UNNEST (@activity_ids)
GROUP BY user_id
);
表值函数
表值函数是一种将表作为结果返回的函数。因此,您可以像查询普通表一样查询表值函数。
语法
ADH.TOUCHPOINT_ANALYSIS(TABLE touchpoints_tmp_table_name, TABLE credits_tmp_table_name, STRING model_name)
参数
名称 | |
---|---|
touchpoints_tmp_table_name |
客户创建的临时接触点表的名称。该表必须采用包含 touchpoint 、user_id 和 event_time 列的架构。 |
credits_tmp_table_name |
客户创建的临时用户功劳表的名称。该表必须具有包含 user_id 、credit 和 conversion_time 列的架构。 |
model |
string 该值必须为 MARKOV_CHAINS。 |
输出表
输出表将包含以下架构:
列名称 | 类型 |
---|---|
touchpoint |
string 接触点名称。 |
score |
integer 针对此接触点计算得出的马尔可夫链得分。 |
使用表值函数的示例代码
SELECT *
FROM ADH.TOUCHPOINT_ANALYSIS(
TABLE tmp.touchpoint_temp_table,
TABLE tmp.user_credit_temp_table,
'MARKOV_CHAINS')