【发布时间】:2021-02-09 12:59:07
【问题描述】:
我正在尝试计算 DAU WAU MAU 比率。
- DAU:当天活跃用户数
- WAU:过去 7 天的活跃用户
- MAU:过去 30 天的活跃用户
DAU:WAU、DAU:MAU 和 WAU:MAU 比率以百分比形式计算用户参与度的粘性。
我有一个名为 my_table 的表,它需要
datetime_fielduser_id
此表列出了在给定datetime_field 上处于活动状态的所有user_id。
对于前 6 个月(不包括当月),我想每天查看上述三个比率(DAU:WAU、DAU:MAU、WAU:MAU)。换句话说,对于每一天,我需要每日活跃用户(当天的用户数量)、过去一周的活跃用户(当天最后 7 天的用户数量)和活跃用户过去一个月(当天最后 30 天的用户数量不同)。
运行以下查询时(修改了变量名):
WITH s AS (
SELECT
DATE_TRUNC('day', datetime_field) AS dt,
COUNT(DISTINCT user_id)::float AS dau
FROM
my_table
WHERE
datetime_field <= current_date - INTERVAL '1 month'
AND datetime_field > current_date - INTERVAL '7 months'
GROUP BY dt
)
SELECT
dt,
dau,
(SELECT COUNT(DISTINCT user_id) FROM my_table WHERE datetime_field BETWEEN dt - 7 * INTERVAL '1 day' AND dt) AS wau,
(SELECT COUNT(DISTINCT user_id) FROM my_table WHERE datetime_field BETWEEN dt - 30 * INTERVAL '1 day' AND dt) AS mau,
dau / NULLIF(wau, 0) AS dau_wau,
wau / NULLIF(mau, 0) AS wau_mau
FROM s
ORDER BY dt
我收到以下错误:
[Amazon](500310) Invalid operation: This type of correlated subquery pattern is not supported due to internal error;
当我仅使用 DAU:WAU 或仅使用 DAU:MAU 计算运行它时,它可以工作。但我还需要 WAU:MAU,因此我必须在一个查询中计算所有三个指标。有没有办法让它适用于所有指标?
【问题讨论】:
-
请提供示例数据、期望的结果以及您想要实现的逻辑的解释。
-
嗨@GordonLinoff,我已经在原帖中进一步阐述了我想要实现的目标。希望它能让事情更清楚!
标签: sql amazon-redshift