在Qlik中创建自己的分组

时间:2017-05-04 04:26:28

标签: qlikview

我有一个维度

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

在上面的示例中,它应该有一个"隐藏"数据为

+----+--------+-------+
| 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)

结果表:

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

基础表:

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

2 个答案:

答案 0 :(得分:1)

以下是我解决问题的方法,

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

我会做的就是这些内容。

IN Script:

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)

将产生以下结果: enter image description here

答案 1 :(得分:-1)

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