首页 > 解决方案 > 如何根据 Amazon Quicksight 中的子记录对记录进行分组

问题描述

是否有任何方法可以根据正在聚合的记录对 Amazon Quicksight 中的聚合记录进行分类?

我正在尝试在 Amazon Quicksight 中构建一个数据透视表,以提取各种记录的计数,这些记录按记录所处的状态划分,限制在记录首次有活动的日期范围内。

这一切都在 SPICE 中完成,因为原始数据是 S3 中的 CSV 文件。这两个 CSV 文件是:

学生

测试

我正在尝试构建的数据透视表将为每个部门和 3 列提供一行:

为此,我创建了一个包含Studentjoin to的数据集Test。然后我可以创建一个数据透视表:

我想我可以创建一个计算字段来给我三个类别并使用它来代替Current State使用以下计算:

ifelse(
    {Current State} = 'pass',

    ifelse(
        countIf({Id[Test]}, {State} = 'fail') = 0,
        'pass-never-failed',
        'pass-failed-some'
    ),

    {Current State}
)

但这显示无效并出现以下错误:

Mismatched aggregation. Custom aggregations can’t contain both aggregate "`COUNT`" and non-aggregated fields “COUNT(CASE WHEN "State" = _UTF16'fail' THEN "Id[Test]" ELSE NULL END)”, in any combination.

有什么方法可以根据快速查看的测试汇总对学生进行分类,还是我必须在源数据中预先计算这些信息?

我现在已经能够通过为三列定义三个单独的计算并将它们添加为 quicksight 枢轴中的值而不是设置列维度来解决这个问题。

计数通过从未失败

distinct_countIf({Id[Student]}, maxOver(
    ifelse({State[Test]} = 'fail' AND {Current State[Student]} = 'pass',
        1, 0)
, [{Id[Student]}], PRE_AGG) = 0)

计数通过失败一些

distinct_countIf({Id[Student]}, maxOver(
    ifelse({State[Test]} = 'fail' AND {Current State[Student]} = 'pass',
        1, 0)
, [{Id[Student]}], PRE_AGG) > 0)

计数失败

distinct_countIf({Id[Student]}, {Current State[Student]} = 'fail')

这行得通,但我仍然想知道是否有可能构建一个我可以用于此的维度,因为如果在没有特殊处理 pass 的情况下添加新状态会更加灵活。

标签: amazon-quicksight

解决方案


推荐阅读