【问题标题】:Quicksight count distinct IDs based on conditions from other columnQuicksight 根据其他列的条件计算不同的 ID
【发布时间】:2021-05-23 09:44:02
【问题描述】:

我想根据另一列中的值计算一列中的唯一 ID。如果 TYPE 既是“A”又是“M”,则计算不同的 ID。

MONTH ID TYPE
2 1 A
2 2 M
2 3 A
2 3 M
2 4 M
2 4 M
2 5 A
2 5 A

上面的例子应该返回 1,因为 ID = 3 有 TYPE 'A' 和 'M'。

干杯,A。

【问题讨论】:

    标签: if-statement count distinct calculated-field amazon-quicksight


    【解决方案1】:

    制作计算字段:

    distinctCountOver(TYPE,[ID],PRE_FILTER) -1
    

    然后制作一个 KPI 视觉对象,将 ID 作为值并将聚合设置为“计数不同”,并为您的计算字段添加一个过滤器,其中“无聚合”且等于 1。

    screenshot of Quicksight using the above instructions

    此计算的工作原理是,对于每个 ID 超过两行,例如 ID 6 有三行类型为 M、M 和 A,它将在结果中计为正数。

    更新问题的更新答案

    distinctCountOver(TYPE,[ID,MONTH],PRE_AGG) - 1

    将其绘制为表格,屏幕截图如下,将 MONTH 作为组,ID(计数不同)作为值,为上述计算字段应用过滤器,用于无聚合、大于 0、排除空值。 此答案将为您提供每个 MONTH 中具有多个一种 TYPE 的不同 ID 总数。

    注意我在上面的数据中添加了一个额外的 ID = 6,其中 A,A 在 MONTH 2 和 A,M 在 MONTH 3 到上面的数据中,否则复制了上面的所有数据,但 MONTH = 3,这就是为什么您现在得到 2 个与原始公式不同 TYPE 的总(不同)ID,以及表中第 2 个月和第 3 个月的 1 和 2。

    在此屏幕截图中,原始答案在第一个框中,后续答案是右侧的表格。干杯 screenshot of Quicksight using the above instructions

    【讨论】:

    • 感谢@skabo。我想在计算字段公式中使用总计。我在示例中添加了月份列,因为我想每月汇总唯一 ID。在这种情况下,总和为 1。我尝试使用:distinct_countIf(ID, (distinctCountOver(TYPE,[ID,MONTH],PRE_FILTER) -1) > 0),但收到此错误“CONTEXTUAL_NESTED_AGGREGATION”。你知道如何处理这个问题吗?干杯,A。
    • 是的,AWS 可以进行可视化并进行相对复杂的计算,但它永远不会进行嵌套聚合。这给您留下了 3 个选项:将您的计算重新组织成一系列线性聚合(您仍然不能使用不同的计算字段进行嵌套);使用聚合来标记然后过滤您的计算(我在这里所做的);在加载到 Quicksight 之前,使用适当的数据 ETL 工具进行计算 - 我经常这样做,加载原始数据和由原始数据制成的几个预先计算的聚合数据表。在所有这些列中包含标签列以进行过滤。
    猜你喜欢
    • 2019-05-20
    • 2013-04-15
    • 2019-03-09
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多