我有一个维度
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 |
+----+--------+-------+
答案 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)
答案 1 :(得分:-1)
我认为您需要使用aggr函数在图表中添加计算维度