所以我有以下格式的数据:
订单号 | 订购日期 | 订购数量 | 阈值数量 | 累计金额 |
---|---|---|---|---|
1 | 第一天 | 5 | 9 | 5 |
2 | 第二天 | 5 | 9 | 10 |
3 | 第3天 | 6 | 9 | 16 |
我想创建一个名为“阈值日期”的新列,其中应包含值:
阈值日期 |
---|
空 |
第二天 |
第二天 |
这来自于网络
Cumulative Sum
越过Threshold Qty
时将是第一个日期的关系。通过采用保存固定值的变量,可以在 Python 中轻松实现此功能。
Qlik Sense 是否有任何功能或方法可以帮助解决以下问题?我对 Qlik Sense 比较陌生。
下面的脚本应该会给您预期的结果(查看屏幕截图)。
解决此问题的一种方法是检查每一行:
Threshold Date
1 的先前值为 null
2
Threshold Date
Cummulative Sum
的当前值是否大于Threshold Qty
的当前值
true
则返回 Order Date
false
返回null
1 可以在创建新字段时引用新字段,但只能在其先前值的上下文中引用。这就是为什么在创建
peek([Threshold Date])
时可以使用 [Threshold Date]
(也称为不从上一个表加载)
2 在 Qlik(Sense 和 View)中,
-1
是 true
,0
是 false
。更多信息这里。
3 有关
peek()
功能的更多信息这里。
Load
*,
if(
IsNull(peek([Threshold Date])) = 0,
peek([Threshold Date]),
if(
[Cummulative Sum] > [Threshold Qty],
[Order Date],
null())
) as [Threshold Date]
;
Load * Inline [
Order ID, Order Date, Order Qty, Threshold Qty, Cummulative Sum
1 , Day1 , 5 , 9 , 5
2 , Day2 , 5 , 9 , 10
3 , Day3 , 6 , 9 , 16
];