Postgres:生成客户事件表(1表示购买,0表示null)

时间:2017-12-13 04:18:41

标签: r database postgresql prediction

我正在寻找从postgres数据库准备一个CSV文件并导入到R来进行一些机器学习/推理分析。

目标:拥有一张表格,其中包含每位客户(唯一身份证)和每个日期(例如2017-11-10)的记录,1表示购买事件,0表示否购买活动。

我开始使用generate_series:

SELECT 
  date(dd) as date,
  c.id,
  CASE WHEN pt.customer_id is not null then 1 else 0 end as customer_made_purchase
FROM generate_series ('2017-10-01'::date, '2017-12-01'::date, '1 day'::interval) dd
LEFT JOIN purchase_table as pt on date(dd) = date(pt.purchased_at)
LEFT JOIN customer_table as c on c.id = pt.customer_id

但是,生成的表格仅包含购买活动的行数(它不包括没有购买活动的客户)。考虑到它,它是有道理的,因为它只会为purchase_table中的客户生成记录。那么,我如何生成每个日期每个客户都有一行的表格?我知道这将是一个非常大的桌子,但我试图预测客户购买。也欢迎其他想法。

1 个答案:

答案 0 :(得分:0)

一个解决方案可能是日期和您的用户列表中的交叉连接(也就是笛卡尔产品)。您可能希望通过在该日期之前加入用户创建日期和过滤记录来跟进。