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

在Superset中按账户级计算NDR并支持产品筛选的技术问询

在Superset中实现支持产品筛选的账户级NDR计算

核心思路

要实现账户级NDR并支持产品筛选,关键是先按账户聚合:先判断该账户是否满足“过去3-4个月有采购”的条件,再统计其最近2个月的采购总额,同时让产品筛选自动作用于所有采购记录(历史判断和最近统计环节)。Jinja模板可以帮我们动态引入Superset的筛选条件,避免硬编码。

具体实现步骤

假设你的采购表名为purchase_data,包含字段:account_id(账户ID)、product_name(产品名称)、purchase_date(采购日期)、amount(采购金额)。

1. 创建自定义SQL数据集

在Superset中新建一个SQL Lab数据集,使用以下Jinja模板编写查询:

SELECT
    account_id,
    -- 判断账户是否在过去3-4个月有符合筛选条件的采购
    CASE
        WHEN EXISTS (
            SELECT 1
            FROM purchase_data pd_hist
            WHERE pd_hist.account_id = pd_curr.account_id
            {{ filter_clause('pd_hist') }}  -- 应用产品筛选到历史采购记录
            AND pd_hist.purchase_date >= DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '4 months'
            AND pd_hist.purchase_date < DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '2 months'
        ) THEN
            -- 统计该账户最近2个月的采购总额(受产品筛选影响)
            SUM(CASE
                WHEN pd_curr.purchase_date >= DATE_TRUNC('month', CURRENT_DATE) - INTERVAL '2 months'
                THEN pd_curr.amount
                ELSE 0
            END)
        ELSE 0
    END AS ndr_amount
FROM purchase_data pd_curr
{{ filter_clause('pd_curr') }}  -- 应用产品筛选到最近采购记录
GROUP BY account_id

注意:日期函数需适配你的数据库类型(比如MySQL用DATE_SUB(CURDATE(), INTERVAL 4 MONTH)替代PostgreSQL的INTERVAL语法)。

2. 配置柱状图

  • 选择上述SQL数据集作为数据源
  • X轴选择account_id(账户维度)
  • Y轴选择ndr_amount(计算出的NDR金额)
  • 添加product_name作为筛选器,此时筛选条件会自动作用于历史采购判断和最近金额统计,实现产品维度的筛选控制。

原指标无法满足需求的原因

你之前创建的sum(case when trailing3-4months is not null then trailing1-2months)是**行级(账户+产品)**计算,聚合后仍保留产品维度,无法实现跨产品的账户级统计。而上述方案先按账户分组,通过EXISTS判断账户整体是否符合条件,再统计该账户的总金额,彻底实现账户级聚合。

关键注意点

  • 确保Superset开启Jinja模板支持:在配置文件中设置ENABLE_JINJA_TEMPLATING = True
  • 若需按月份统计账户NDR(比如每月的账户留存金额),可添加DATE_TRUNC('month', pd_curr.purchase_date)到GROUP BY和查询字段中,实现时间维度的拆分

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 20:23:21