在 Qlik 中创建自己的分组

Create own grouping in Qlik

我有维度

Group:
A
B
C
D

和数据:

+----+--------+-------+
| ID | Amount | Group |
+----+--------+-------+
|  1 |     10 | A     |
|  1 |     20 | C     |
|  2 |     30 | A     |
|  3 |     40 | A     |
|  3 |     50 | B     |
+----+--------+-------+

在我的数据中,它不会有D组存在,逻辑将是如果在组A中存在,但在B or C组中不存在,那么它将归入 D

在上面的例子中,它应该有一个 "hidden" 数据作为

+----+--------+-------+
| ID | Amount | Group |
+----+--------+-------+
|  2 |     10 | D     |
+----+--------+-------+

我知道我可以在 Load 脚本中创建它,但我的数据是按月存储的,这意味着它可以创建三倍或更多的虚拟数据。

问题
那么是否可以使用表达式来创建分组呢?

在我的条形图中,我有一个维度:

=IF(Group = 'A', null(), Group)

衡量一下,我的想法可能是

Group D:
sum({$<Group = 'A'>} Amount) - sum({$<Group = - 'A', ID = P({$<Group = 'A'>} ID)>} Amount)
Other Group:
sum({$<Group = - 'A', $<ID = P({$<Group = 'A'>} ID)>} Amount)

结果table:

+-------+--------+
| Group | Amount |
+-------+--------+
| B     |     50 |
| C     |     20 |
| D     |     30 |
+-------+--------+

标的table:

+----+--------+-------+
| ID | Amount | Group |
+----+--------+-------+
|  1 |     20 | C     |
|  2 |     30 | D     |
|  3 |     50 | B     |
+----+--------+-------+

我认为您需要使用聚合函数在图表中添加一个计算维度

这是我对你的问题的解决方案,

您的示例有点不正确,因为您的示例中 ID 2 的数量为 30 而不是 10:

我会做的就是这几行。

输入脚本:

DATA:
LOAD * INLINE [
    ID, Amount, Group 
    1, 10, A     
    1, 20, C     
    2, 30, A     
    3, 40, A     
    3, 50, B     
];
Left Join
LOAD ID, Concat(Group,',') as GroupLink Resident DATA Group By ID;

那么在你的维度中:

=If(WildMatch(GroupLink,'A') AND NOT (WildMatch(GroupLink,'B') OR WildMatch(GroupLink,'C')), 
'D', Group)

那么在你的表达中:

=Sum(Amount)

将产生以下结果: