最终,我需要的是能够根据不同项目比较不同的团队表现。
我有两个数据集。第一个是user_table,其中包含迄今为止所有人员的摘要。下面的示例:
user_id date_added attribute_1 attribute_2 attribute_3 ...
1 2018-01-01 a a null
2 2018-01-02 b b b
3 2018-01-02 b c a
第二个数据集是一个action_table,其中包含所有已发生动作的摘要。
timestamp user_id action_name project_name
2018-01-01 1 responded project_A
2018-01-01 1 called project_A
2018-01-01 1 responded ...
2018-01-02 1 called
2018-01-02 1 called
2018-01-03 3 attended
2018-01-04 2 responded
2018-01-05 1 attended
使用所有这些,我需要产生一个这样的表:
project_name group_name project_date group_total group_attended day_0 day_1 day_2 ...
project_A group_a 2018-01-01 200,000 15,000 1,000 2,000 3,000
project_A group_b 2018-01-01 20,000 5,000 8,000 9,000 10,000
project_A group_c 2018-01-01 30,000 6,000 9,000 10,000 12,000
project_B group_a 2018-01-08 15,000 1,000 2,000 3,000 5,000
project_B group_b 2018-01-08 20,000 5,000 8,000 9,000 10,000
project_B group_c 2018-01-08 30,000 6,000 9,000 10,000 12,000
group_name-对具有相似属性的用户进行分组。属性可以来自两个表。例如,如果组定义是从1月2日开始添加且attribute_1为b的用户,则用户2和3将在同一组中。
group_total-属于该组的用户数。无论用户是否出现在action_table中,都应包括迄今为止的用户总数。
group_attended-属于具有action_name的组的用户数,该用户参加了相应的project_name。
day_0-属于同一project_name的action_name为action_c的组的用户数,同一天以前的无人参与的action_name在此发生。然后,随着天数差异增加直到day_7,此过程将进行到day_1。这意味着到day_7时,该数字应始终小于或等于group_attended。
在某些情况下,用户的action_name仅会参加。在这种情况下,我们需要为响应的对象分配模式project_date以获得天数差异。