要实现按天滚动的30天唯一用户数的BigQuery查询,可以使用以下代码示例:
WITH
dates AS (
SELECT
DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY) AS date,
1 AS day_offset
UNION ALL
SELECT
DATE_ADD(d.date, INTERVAL 1 DAY) AS date,
day_offset + 1 AS day_offset
FROM
dates d
WHERE
day_offset < 30 ),
unique_users AS (
SELECT
date,
COUNT(DISTINCT user_id) AS unique_users
FROM
`project.dataset.table`
WHERE
DATE(timestamp) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY) AND CURRENT_DATE()
GROUP BY
date )
SELECT
d.date,
COALESCE(u.unique_users, 0) AS unique_users
FROM
dates d
LEFT JOIN
unique_users u
ON
d.date = u.date
ORDER BY
d.date
这个查询使用了两个公共表表达式(WITH
子句)来实现。首先,dates
公共表表达式生成了包含30天日期范围的日期序列,其中date
是日期,day_offset
是日期偏移量。接下来,unique_users
公共表表达式计算了每天的唯一用户数,其中使用了你的表的名称,user_id
是用户ID的列名,timestamp
是时间戳的列名。
最后的查询将两个公共表表达式连接起来,以确保返回所有30天的日期,并按日期对结果进行排序。如果某天没有唯一用户数,则返回0。
请注意,你需要将代码示例中的project.dataset.table
替换为你自己的项目、数据集和表的名称。
下一篇:按天过滤pandas数据框