PostgreSQL基于位置的归因

时间:2016-03-16 09:46:13

标签: arrays postgresql sorting google-analytics

我希望使用PostgreSQL创建基于位置的归因模型,但无法正确使用它。

我尝试了不同的方法,但我最接近的是均匀分布模式,因此,为每次转换提供所有营销渠道均匀的信用。

这是我最后一次单击模型,用于我需要的表结构的引用,这将为channel_path中的每个最后一个通道分配一个完整的一个(带有count(distinct order_id):

    select
            coalesce(unique_channel_path[array_length(unique_channel_path,1)],
            'not_tracked') as source,
            order_date,
            count(distinct order_id) as count_orders

    from base_conversions  cvr
    group by 1,2,3,4,5,6
    order by 2 desc;

我希望拥有的属性是第一个通道分配0.4,所有中间通道分配0.2,最后一个分配0.4。

示例:

order_id channel_path     1个数组['seo','refferal','social_media']     2阵列['seo','social_media']     3阵列['social_media','sem','display','seo']     4阵列['social_media']

结果:

channel          credit

display          0.4+0.5+0.4+0.1 = 1.4
refferal         0.2             = 0.2
social_media     0.4+0.5+0.4+1   = 2.3
sem              0.1             = 0.1
seo              0.4+0.5+0.4     = 1.3

注意sem如何只得到0.1,因为它与sem属于order_id 3的中间类别,所以回顾一下:

所有第一个频道获得0.4,所有中间频道获得0.2,所有最后频道获得0.4,总共1.0

总结:

我正在寻找的最终结果是一个具有以下结构的表:

Date      Channel      Weight
 1          sem         1.4
 2        display       1.0
 3          seo         0.4
 .
 .
 .

考虑到我按每个订单出现的顺序对每个频道都有数组:

order_id                  unique_channel_path
   1             array['display','seo','social_media'....]
   2             array['sem','seo','seo'....]
   .
   .

0 个答案:

没有答案