【问题标题】:Qlik Sense, Counting distinct with a sumQlik Sense,用和计数不同
【发布时间】:2016-10-16 03:40:17
【问题描述】:

我正在尝试创建一个 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'  

任何帮助都会很棒,

谢谢。

【问题讨论】:

    标签: sql oracle qlikview qliksense


    【解决方案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)))
    

    【讨论】:

    • 一种更“Qlik”的方法是使用集合分析,但这离您现有的 SQL 知识有点远
    • 太棒了。这行得通。是的,我需要某种集合分析。 if 语句会慢很多。
    • @SamuelMaile 这是我使用的集合分析向导tools.qlikblog.at/SetAnalysisWizard/…
    • @SamuelMaile 我知道!除非我有很多数据(超过数百万行),否则我会避免使用它 - 如果您将脚本中的三个字段相加可能会更容易,因此您只选择一个字段,分析将类似于... Count({ $$(=0)"}>})>}DISTINCT ID)
    • 如下:COUNT ({0"}>}) + P({0"}>}) + P ({0"}>}) >} DISTINCT ID 我会投票给你,但我仍然是菜鸟。感谢您的帮助。
    【解决方案2】:

    如果您的数据库中有日期字段,则需要在数据模型脚本中根据您的日期 (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 网站的 help section,它是关于集合分析的

    【讨论】:

    • TBH,qlik sense 文档缺少太多信息
    【解决方案3】:

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

    rangesum(Prod1,Prod2,Prod3) as Prod_Total 
    

    "rangesum" 也将 null 转换为 0!如果 Prod1、Prod2 或 Prod3 为 null,则总计为 0。

    在图表中使用这个计算:

    count({<Prod_Total={'>0'}>} Distinct ID)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-08
      • 1970-01-01
      • 1970-01-01
      • 2021-07-07
      • 1970-01-01
      • 1970-01-01
      • 2016-08-10
      相关资源
      最近更新 更多