Amazon quicksight 如何在Amazon Quicksight中基于子记录对记录进行分组

Amazon quicksight 如何在Amazon Quicksight中基于子记录对记录进行分组,amazon-quicksight,Amazon Quicksight,在Amazon Quicksight中,是否有任何方法可以根据聚合的记录对聚合的记录进行分类 我正试图通过Amazon Quicksight构建一个数据透视表,以提取各种记录的计数,这些计数按记录所处的状态进行划分,并限定在记录第一次有活动的日期范围内 这一切都是在SPICE中完成的,因为原始数据是S3中的CSV文件。这两个CSV文件是: 学生 Id:字符串 当前状态:通过/失败 部门:字符串 测试 Id:字符串 学生编号:String DateOfTest:DateTime 状态:通过/

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

我正试图通过Amazon Quicksight构建一个数据透视表,以提取各种记录的计数,这些计数按记录所处的状态进行划分,并限定在记录第一次有活动的日期范围内

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

学生

  • Id:字符串
  • 当前状态:
    通过
    /
    失败
  • 部门:字符串
测试

  • Id:字符串
  • 学生编号:String
  • DateOfTest:DateTime
  • 状态:
    通过
    /
    失败
我试图构建的透视表将为每个部门提供一行和3列:

  • 不及格-当前状态为
    不及格的系的学生计数
  • 通过从不失败-当前状态为
    通过
    且该学生没有考试失败的部门中的学生计数
  • 通过考试失败部分-统计当前状态为通过且至少有一次考试失败的系中的学生人数
为此,我创建了一个数据集,其中包含加入到
Test
Student
。然后,我可以使用以下内容创建透视表:

  • 行:
    部门
  • 列:
    当前状态
  • 值:
    countdistinct(Id[Student])
我想我可以创建一个计算字段,为我提供三个类别,并使用该字段代替当前状态,使用以下计算:

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中的测试汇总对学生进行分类,或者我必须在源数据中预先计算这些信息

我现在已经能够解决这个问题,为三列定义三个单独的计算,并将它们作为值添加到quicksight pivot中,而不是设置列维度

通过的计数从未失败

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')
通过的计数失败了一些

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处理,它将更加灵活。

我无法直接回答您的问题,但我发现设置数据更容易,以便在Quicksight中使用,vs尝试围绕模式工作。我更愿意使用python、SQL、Pandas等,而不是Quicksight自己独特的语言。谢谢@kielni,这是我的回退计划。目前,这是一个实验性/探索性的项目,因此我试图尽可能避免数据加载,以最大限度地提高灵活性,但如果我不能快速完成,这显然是一个选择。