【问题标题】:Google Data Studio doesn't let me count unique boolean values using metric fieldGoogle Data Studio 不允许我使用度量字段计算唯一的布尔值
【发布时间】:2020-12-19 05:12:30
【问题描述】:

我创建了一个堆积条形图,并希望计算每个布尔类型列中存在的真值的数量。所以我将它们分为 3 个类别,例如 A、B、C。我的预期输出是这样的:

Status   X Y Z 

A        5 2 1
B        0 3 4
C        2 4 1

我正在使用这个 Postgres 查询:

 Select X, Y , Z, status, created_at
 from table abc 
 group by X, Y, Z, status, user_id, created_at
 having X or Y or Z = true

问题是 Data Studio 也在计算错误值,因此在堆栈图上返回不正确的计数。示例:X 列只有 (5+2) = 7 个状态列值(A 和 C)的真值,但它返回更多值。显示此类数据的正确方法是什么。请帮忙。这是数据工作室图表的截图。

【问题讨论】:

    标签: postgresql google-data-studio


    【解决方案1】:

    假设 x,y 和 z 是布尔列,having X or Y or Z = truehaving x = true or y = true or z = true(或 having x or y or z)相同。

    也许您正在寻找过滤聚合。

    select status, 
           created_at
           count(*) filter (where x) as num_x, 
           count(*) filter (where y) as num_y,
           count(*) filter (where z) as num_z
    from the_table
    group by status, created_at;
    

    您还标记了版本 9.4。目前尚不清楚这是否是您的标签垃圾邮件的结果,或者您是否真的使用了这个不受支持的版本。如果是,则需要重写上面的内容,因为它不支持filter() 子句:

    select status, 
           created_at
           count(case when x then 1 end) as num_x, 
           count(case when y then 1 end) as num_y,
           count(case when z then 1 end) as num_z
    from the_table
    group by status, created_at;
    

    【讨论】:

      【解决方案2】:

      您可以使用此代码

      SELECT CAT,X,Y,Z
          FROM (
                  SELECT  
                      ROW_NUMBER() OVER (PARTITION BY cat ORDER BY CAT) ROW,
                      cat,
                              SUM(IIF(ISSTATUS=1,x,0)) OVER (PARTITION BY cat) X,
                              SUM(IIF(ISSTATUS=2,x,0)) OVER (PARTITION BY cat) Y,
                              SUM(IIF(ISSTATUS=3,x,0)) OVER (PARTITION BY cat) Z
      
                      from Table_abc
          ) t0
      WHERE t0.row=1
      

      【讨论】:

      • 谢谢。我只有 1 个查询-> 为什么使用此语句 IIF(ISSTATUS=1,x,0)) 。我认为 ISSTATUS 在我的示例中不是有效的列,后跟您在所有 sumiff 语句中使用的“x”值。
      • 我举了我自己的例子。根据您的示例,您不是..但是您可以这样使用它 IIF(ISSTATUS=x,x,0) IIF(ISSTATUS=y,y,0) IIF(ISSTATUS=z,z,0)
      猜你喜欢
      • 2022-10-14
      • 2019-04-21
      • 1970-01-01
      • 2010-10-02
      • 1970-01-01
      • 2018-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多