如何使用整数变量过滤聚合?实现空输入时不过滤逻辑
解决变量过滤逻辑问题
问题根源
你当前的过滤条件用了连续的AND逻辑,当minBalance为空时,minBalance <> ""结果为false,整个表达式直接返回false,所有记录都被过滤,所以搜不到结果。
修正后的最小值过滤条件
要实现「空值时不过滤、有值时仅保留字段值不小于该值」的逻辑,需要用OR分支处理两种情况:
(minBalance = "" OR (minBalance > 0 AND TextToInteger(Table.Balance) >= minBalance))
逻辑说明:
- 当
minBalance为空时,OR左侧条件成立,整个表达式返回true,不执行过滤 - 当
minBalance不为空时,先校验它是有效正整数,再判断Balance转换后的值大于等于该变量
扩展支持最大值过滤
如果要同时支持最大值过滤,只需把最大值的逻辑用AND和最小值条件组合即可:
(minBalance = "" OR (minBalance > 0 AND TextToInteger(Table.Balance) >= minBalance)) AND (maxBalance = "" OR (maxBalance > 0 AND TextToInteger(Table.Balance) <= maxBalance))
逻辑说明:
- 两个变量都为空:返回所有符合其他条件的记录
- 仅最小值有值:保留字段值≥最小值的记录
- 仅最大值有值:保留字段值≤最大值的记录
- 两个变量都有值:保留字段值在[最小值, 最大值]区间内的记录
内容的提问来源于stack exchange,提问作者Chuck
相关产品推荐
相关产品推荐

