2

我正在尝试在 qlik 意义上创建一个表达式,以计算每个 prod 相加且大于 0 的不同 ID 数。

Qlik sense 表达到目前为止,但错误:

sum(aggr(count (DISTINCT ID), PROD1 + PROD2 + PROD3 ))

我不太确定如何在表达式中添加 >0 和年份月份。

工作sql:

    select count(distinct ID) as Number
    from tb1 x
    where (x.Prod1 + x.Prod2 + x.Prod3)> 0
    x.Year = '2016/05'  

任何帮助都会很棒,

谢谢。

4

3 回答 3

1

如果您的数据库中有一个日期字段,则需要从Date(mydate, 'YYYYMM') as YearMonth数据模型脚本中的日期 ( ) 创建一个 YearMonth 字段,然后将其放入您的表达式中:

count({<Prod1={'>0'}, Prod2={'>0'}, Prod3={'>0'}, YearMonth={'201605'}>}[distinct ID])

如果数据库中你的字段 Year 已经是 yearmonth 字段,你可以这样做(但我推荐第一种方法):

count({<Prod1={'>0'}, Prod2={'>0'}, Prod3={'>0'}, Year={'2016/05'}>}[distinct ID])

您应该从 Qlik 站点阅读此帮助部分,它是关于集合分析的

于 2017-10-26T10:15:47.237 回答
1

在您的脚本中添加 calc 字段:

rangesum(Prod1,Prod2,Prod3) as Prod_Total 

"rangesum" 也将 null 转换为 0!如果 Prod1、Prod2 或 Prod3 为空,您将得到 0 作为总数。

在图表中使用此计算:

count({<Prod_Total={'>0'}>} Distinct ID)
于 2016-06-15T15:14:16.927 回答
1

最简单的方法是使用 if 语句,您的代码

select count(distinct ID) as Number
    from tb1 x
    where (x.Prod1 + x.Prod2 + x.Prod3)> 0
    x.Year = '2016/05'  

变成

count (DISTINCT, if((PROD1 + PROD2 + PROD3)>0,ID)))
于 2016-06-15T08:08:37.423 回答