Snowflake/SQL 计算每个日期过去 30 天内的不同用户 ID 计数

Snowflake/SQL Calculate distinct user Id count in trailing last 30 days for each date

我正在尝试获取过去 30 天内不同 ID 的每日计数。

输出应如下所示:

DATE        Count(Distinct ID) Trailing Last 30D    Equation
2022-01-02  232                Distinct IDs in the last 30 days from 2022-01-02
2022-01-03  1231               [...]
2022-01-04  123 
2022-01-05  242 
2022-01-06  3432    

但是,根据我下面的查询 - 它没有 return 过去 30 天内正确的不同 ID 计数。有人可以建议我应该如何正确地解决这个问题吗?有没有办法合并 window 函数来计算过去 30 天内 ID 的不同计数?

WITH DATE_SPINE AS (
    SELECT d.DATE
    FROM DATE d
    WHERE d.DATE BETWEEN '2022-01-01' AND '2022-05-01'
)
SELECT d.DATE,
       COUNT(DISTINCT IFF(u.EVENT_DATE >= d.DATE - INTERVAL '30 DAYS', ID, NULL)) AS TRAILING_30_MAU
FROM DATE_SPINE D
LEFT JOIN USERS u ON u.EVENT_DATE = d.DATE
GROUP BY 1
ORDER BY 1 DESC

加入 the_date-29the_date 之间的日期列表,计数:

with dates as (
    select distinct  o_orderdate a_date
    from SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.ORDERS
)

select count(distinct o_custkey), a_date, count(distinct o_orderdate)
from SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.ORDERS a
join dates b
on a.o_orderdate between b.a_date-29 and b.a_date
group by 2
order by 2
limit 100