国家/地区的每日独特行动/每月独特行动?例:DAU/MAU

2024-10-16 17:15:01 发布

您现在位置:Python中文网/ 问答频道 /正文

也许你们能帮我做点什么。我做了两个查询来跟踪每天唯一的操作数和每月唯一的操作数。不过,我现在想看看不同地区的这些数字,但有问题。我知道这会涉及一些我还没有完全弄清楚的子查询。在

关于我正在使用的内容,我在pandas/python或R中使用Postgres进行查询,我很有信心只使用一个SQL查询就可以更快地完成这项工作。在

我有一个事件表,如下所示:

userid,    date,    event,      item
1,         1/1/15   like        A
2,         1/1/15   view        A
3,         1/1/15   view        B
2,         1/1/15   purchase    A
1,         1/1/15   view        B

为了计算每日浏览量/每月浏览量,我目前做了如下操作:

^{pr2}$

每月一次

Monthly_Views = """
SELECT daily_date, daily_user, count(distinct events.userid) AS monthly_views
FROM
({daily_views})
LEFT OUT JOIN events ON events.date BETWEEN daily_date - INTERVAL '30 days' AND daily_date
WHERE events.event LIKE '%%LOGIN%%'
GROUP BY daily_date, daily_user
ORDER BY daily_date ASC""".format(daily_views=daily_views)

它返回一个表:

日期,日用户,月用户

现在要包括感兴趣的区域,我有另一个名为users\u data的表:

userid, country, ...
1,      a
2,      b
3,      a
4,      a

很明显,当我考虑这个问题的时候,我的大脑已经死了,所以为了包括语言,我做了一个非常迂回的方法,首先加入用户的事件数据:

SELECT date(events.date), count(distinct events.userid) number_of_users, users_data.country
FROM events
JOIN users_data 
ON
users_data.userid = events.userid
WHERE date(events.dateday) > '2014-11-20' and date(events.dateday) < '2014-11-22'
AND trackevents.event LIKE '%%%%VIEW%%%%'
GROUP BY 
date(events.dateday), users_data.country
ORDER BY
date(events.date)

同样的,我认为是在一个月的范围内计算得出的:

SELECT count(distinct events.userid) number_of_users, users_data.country
from events 
JOIN users_data 
ON
users_data.userid = events.userid
WHERE date(events.dateday) > '2014-10-01' and date(events.dateday) < '2014-11-01'
AND events.event LIKE '%%VIEW%%'
GROUP BY 
users_data.country

然后我要把用过的熊猫分类,打印出一个特定的国家。在

虽然这让我得到了答案,但这是难以置信的愚蠢和耗时。我知道有更好的办法去那里,但我现在有点左右为难。基本上,我想得到与第一种语言相似的东西,无论是针对特定语言还是按语言:

date,        daily, monthly, country
2014-11-01,  1239,  5123,    US 
2014-11-01,  439,   1123,    CA
2014-11-02,  1439,  5653,    US
2014-11-01,  402,   1224,    CA

我更喜欢SQL语句,但如果需要的话就用熊猫。如果你注意到了,有没有一个像第一次约会那样的好方法。我仍在学习SQL,现在我有点力不从心。在

提前感谢您的帮助!在


Tags: eventview语言sqldatadatebyevents