You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为指定用户群体计算特定日期后的首个活跃日期

解决方案

核心修改逻辑

你需要为每个老用户匹配vars_joindate之后的最早活跃日期,替换原有硬编码的固定日期,同时修复原SQL的几处语法问题即可实现需求:

  • 补充缺失的vars_platform变量声明
  • 修正USING关联条件里缺失的逗号
  • 用MIN()聚合函数按用户分组,取符合时间要求的最早活跃日期

调整后完整SQL代码

DECLARE vars_joindate DATE DEFAULT '2021-01-01';
DECLARE vars_status STRING DEFAULT 'old';
DECLARE vars_app STRING DEFAULT 'testapp';
-- 补充缺失的平台变量声明,按需替换为对应平台值
DECLARE vars_platform STRING DEFAULT 'android';

WITH 
dates AS(
    SELECT JoinDate FROM UNNEST(GENERATE_DATE_ARRAY(DATE(vars_joindate), CURRENT_DATE(), INTERVAL 1 DAY)) AS JoinDate
),
users AS(
    SELECT username, operating_system, app_name, join_date_utc
    FROM user_table AS A
    WHERE app_name=vars_app
),
user_first_active AS (
    -- 提前计算每个用户在vars_joindate之后的首次活跃日期
    SELECT 
        user, 
        app, 
        operating_system,
        MIN(date_utc) AS first_active_after_join
    FROM app_activity
    WHERE 
        app=vars_app 
        AND operating_system=vars_platform 
        AND swrve_session_start IS NOT NULL -- 原条件漏了判断规则,可按需调整
        AND date_utc >= vars_joindate
    GROUP BY user, app, operating_system
),
status AS(
    SELECT * FROM (
        SELECT 
            A.user, 
            A.app_name AS app, 
            -- 调整JoinDate计算逻辑
            CASE 
                WHEN A.join_date_utc >= vars_joindate THEN A.join_date_utc 
                ELSE B.first_active_after_join 
            END AS JoinDate,
            CASE WHEN A.join_date_utc >= vars_joindate THEN 'new' ELSE 'old' END AS status
        FROM users AS A
        LEFT JOIN user_first_active AS B
        USING (user, operating_system, app) -- 补充原语句缺失的逗号
    )
    WHERE status=vars_status
)

逻辑说明

  • 新增user_first_active公共表表达式,提前按用户分组计算每个用户vars_joindate之后的最早活跃日期
  • 老用户的JoinDate直接取提前计算好的首次活跃日期,新用户保留原有安装日期即可
  • 如果老用户在vars_joindate之后没有任何活跃记录,first_active_after_join会返回NULL,你可以按需再加一层判断处理无活跃的情况。

内容的提问来源于stack exchange,提问作者gdaem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 16:15:04