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

如何在Qlik Sense中计算阈值日期(Threshold Date)?

在Qlik Sense中计算首次达到阈值的日期(Threshold Date)

需求说明

现有包含Order ID、Order Date、Order Qty、Threshold Qty、Cummulative Sum字段的数据(示例中Threshold Qty为9),需要新增Threshold Date列:

  • 当Cummulative Sum首次超过Threshold Qty时,该列值为对应的Order Date
  • 所有在首次达标日期之后的行,Threshold Date都沿用这个首次日期
  • 未达标的行(所有Cummulative Sum都没超过阈值),该列值为Null

方法一:加载脚本中计算(推荐,性能更优)

脚本处理可提前完成计算,避免前端重复运算,适合大数据量场景。

全局阈值(所有行共用同一个首次达标日期)

// 加载原始数据并按日期排序
Orders:
LOAD 
    [Order ID],
    [Order Date],
    [Order Qty],
    [Threshold Qty],
    [Cummulative Sum]
FROM [你的数据源路径] // 替换为实际数据源,如Excel、数据库连接等
ORDER BY [Order Date] ASC;

// 计算首次达到阈值的日期
ThresholdCalc:
LOAD
    MIN(IF([Cummulative Sum] > [Threshold Qty], [Order Date], Null())) AS [Threshold Date]
RESIDENT Orders;

// 将阈值日期关联回原表
Left Join(Orders)
LOAD * RESIDENT ThresholdCalc;

// 清理临时表
DROP TABLE ThresholdCalc;

按分组计算(如每个Order ID单独计算首次达标日期)

如果需要按Order ID分组,每个订单单独判断首次达标日期,修改脚本为:

Orders:
LOAD 
    [Order ID],
    [Order Date],
    [Order Qty],
    [Threshold Qty],
    [Cummulative Sum]
FROM [你的数据源路径]
ORDER BY [Order ID], [Order Date] ASC;

ThresholdCalc:
LOAD
    [Order ID],
    MIN(IF([Cummulative Sum] > [Threshold Qty], [Order Date], Null())) AS [Threshold Date]
RESIDENT Orders
GROUP BY [Order ID];

Left Join(Orders)
LOAD * RESIDENT ThresholdCalc;

DROP TABLE ThresholdCalc;

方法二:前端图表/表格中直接用表达式

如果不需要修改原始数据集,也可以在前端表格的度量中直接写表达式生成Threshold Date:

=FirstSortedValue({<[Cummulative Sum] = {"$(>=$(=Max([Threshold Qty])))"}>} [Order Date], [Order Date])
  • 表达式逻辑:筛选出Cummulative Sum超过阈值的行,取最早的Order Date;无达标行时自动返回Null
  • 若为分组场景(如按Order ID分组),确保图表维度包含Order ID,表达式会自动适配分组上下文

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 14:10:07