amazon-quicksight - 如何根据 Amazon Quicksight 中的子记录对记录进行分组
问题描述
是否有任何方法可以根据正在聚合的记录对 Amazon Quicksight 中的聚合记录进行分类?
我正在尝试在 Amazon Quicksight 中构建一个数据透视表,以提取各种记录的计数,这些记录按记录所处的状态划分,限制在记录首次有活动的日期范围内。
这一切都在 SPICE 中完成,因为原始数据是 S3 中的 CSV 文件。这两个 CSV 文件是:
学生
- 标识:字符串
- 当前状态:/之一
pass
fail
- 部门:字符串
测试
- 标识:字符串
- 学生证:字符串
- 测试日期:日期时间
- 状态:/之一
pass
fail
我正在尝试构建的数据透视表将为每个部门和 3 列提供一行:
- 失败- 当前状态所在部门的学生人数
fail
- pass-never-failed - 当前状态所在系的学生人数,
pass
并且该学生没有失败的测试 - pass-failed-some - 当前状态所在部门的学生人数,
pass
并且至少有一项未通过测试
为此,我创建了一个包含Student
join to的数据集Test
。然后我可以创建一个数据透视表:
- 排:
Department
- 柱子:
Current State
- 价值:
Count Distinct(Id[Student])
我想我可以创建一个计算字段来给我三个类别并使用它来代替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 的情况下添加新状态会更加灵活。
解决方案
推荐阅读
- postgresql - 错误:关系“student_id_seq”不存在 SQL 状态:42P01
- amazon-web-services - 如何对aws codepipeline历史序列进行排序
- docker - 如何运行 docker 镜像
标签 - c# - 覆盖WPF中的最小化按钮
- linux-kernel - 向 linux 内核中的 efivarfs 文件系统添加新的 efi 变量
- python - 如何在csv文件中明智地替换行索引
- flutter - 使用 Flutter“sms 0.2.4”库接收短信后应用崩溃
- plesk - 在 Plesk 中通过 Let's Encrypt 安装 SSL 证书时出错
- javascript - Bubble sort javascript code need explanation little
- javascript - 我尝试使用原型函数修改构造函数中的变量,但得到了意想不到的结果