If statement 如何在一个度量值上执行两个不同的聚合,并进一步聚合结果以在Tableau中作为一个聚合度量值查看
我有一个数据集,希望根据值名称将数据分为两组。然后,我希望对一组的结果取平均值,对另一组的结果求和。最后,我希望将这两种方法相加,创建一个条形图 已更新 这是数据If statement 如何在一个度量值上执行两个不同的聚合,并进一步聚合结果以在Tableau中作为一个聚合度量值查看,if-statement,tableau-api,visualization,aggregation,measure,If Statement,Tableau Api,Visualization,Aggregation,Measure,我有一个数据集,希望根据值名称将数据分为两组。然后,我希望对一组的结果取平均值,对另一组的结果求和。最后,我希望将这两种方法相加,创建一个条形图 已更新 这是数据 Id Total Avail Date group used A 10 5 9/1/2020 Group1 5 A 40 20 9/1/2020 Group1 20 B 20 10 9/1/2020 Group2
Id Total Avail Date group used
A 10 5 9/1/2020 Group1 5
A 40 20 9/1/2020 Group1 20
B 20 10 9/1/2020 Group2 10
B 10 5 9/1/2020 Group2 5
B 10 5 9/1/2020 Group2 5
A 20 10 9/1/2020 Group1 10
A 20 10 9/1/2020 Group1 10
B 10 5 9/1/2020 Group2 5
B 10 5 9/1/2020 Group2 5
这就是我所做的
一,。
首先创建名为:组的计算字段-将数据分组
IF [Id] = 'A' THEN 'Group1'
ELSEIF [Id] = 'B' THEN 'Group2'
ELSE 'none'
END
然后创建计算字段-sum_avg组1(A)列的总和,并取组2(B)的平均值
结果如下:
预期结果:
我希望添加组1(总和)和组2(平均值),以便于使用和总计,以便
最后一张图表将两个蓝色值组合在一起,并将绿色值组合在一起
The SUM of Group1A Avail = 45 and the AVERAGE of G Avail Group2 = 6
So I wish the Avail section (blue) of the barchart to be: 51
and the Used (green) should be 51 as well
with the total as 102 (Ill add to tooltip)
任何建议都很感激-我仍在研究这一点,任何建议都很感激
更新
我有一个数据集,希望在其中反映自定义SQL查询的总计。以下是一些示例数据:
Size Tb Val type Group Sum_AVG SKU Last_refreshed
270 90.5 Free_Space_TB Group2 90.5 Excel 9/1/2020
270 179.5 Used Group2 179.5 Excel 9/1/2020
以下是自定义查询输出
这是我的看法
当我将鼠标悬停在上方时,会显示avail和used,但如何包含总数
这是我正在使用的计算(感谢SO成员的帮助):
平均金额为:
zn(sum(if [Group]= 'Group1' then [Val] end))
+
zn(avg(if [Group] = 'Group2' then [Val] end))
我做错了什么,因为它是所有列的总和,而我只想要每个列的总和
(使用的是使用自定义查询创建的)提出了以下解决方案-
- “总计”列没有用处。请放下它。这将不必要地增加数据的大小。(对于工具提示,我将告诉您如何操作)
+----+-------+--------+------+
| Id | Avail | group | used |
+----+-------+--------+------+
| A | 5 | Group1 | 5 |
+----+-------+--------+------+
| A | 20 | Group1 | 20 |
+----+-------+--------+------+
| B | 10 | Group2 | 10 |
+----+-------+--------+------+
| B | 5 | Group2 | 5 |
+----+-------+--------+------+
| B | 5 | Group2 | 5 |
+----+-------+--------+------+
| A | 10 | Group1 | 10 |
+----+-------+--------+------+
| A | 10 | Group1 | 10 |
+----+-------+--------+------+
| B | 5 | Group2 | 5 |
+----+-------+--------+------+
| B | 5 | Group2 | 5 |
+----+-------+--------+------+
- 透视两列(
和已使用
)。下面包含一个gif可用
- 创建一个计算字段
asCF
- 将
拖动到行搁板和文本中,AGG(CF1)
标记卡中的颜色;您将获得所需的视图,其中51和51值分别为键入
和used
avail
- 对于
工具提示,即total
创建计算字段102
astotal
- 将此字段添加到标记卡的详细信息中(而不是像通常那样添加工具提示)
- 单击工具提示并根据喜好编辑计算。我像编辑一样编辑它
- 选项2在sql本身中透视数据。然后使用此查询-
used
和avail
是变量值,因此这些值不能在列名称(即变量名称)中,我想我已经很清楚了
祝你好运。我的道歉@anilgoyal我已经更新了此帖子请参见编辑后的答案。当你提供的数据只涉及一个日期,而你的视图包含多个日期时,有谁能帮助你。最好给出最小的可重复示例,以便理解所有扭曲。尽管如此,还是尝试在固定语句中包含[日期]。或者请提供一些合理数量的数据。好的@AnilGoyal,我认为这个概念是一样的。除了我在所有蓝色栏中的总计计算之外,其他一切都正常,但不是每个栏都正常。我将不得不更新帖子。感谢sHi@AnilGoyal在固定语句中添加日期,与此类似吗?{SUM({Fixed[type]:ZN(SUM(如果[Group]='Group1'那么[Val]end))})+{SUM({Fixed[date]:ZN(SUM(如果[Group]='Group1;那么[Val]end))})+SUM({Fixed[type]:ZN(平均值(如果[Group]='Group2'那么[Val]end))}?谢谢谢谢谢谢@anilgoyal让我试试这个,好吧,我明白了-我必须放弃总数吗?如果我需要这个怎么办?我会试试这个确定我需要转向吗?或者我可以利用我创建的组-(案例陈述)啊,好的,非常感谢你对@anilgoyal的了解-我会试试这个。不可能在计算场上做旋转吗?-我想这就是为什么它不让我@anilgoyal的原因
zn(sum(if [Group]= 'Group1' then [Val] end))
+
zn(avg(if [Group] = 'Group2' then [Val] end))
+----+-------+--------+------+
| Id | Avail | group | used |
+----+-------+--------+------+
| A | 5 | Group1 | 5 |
+----+-------+--------+------+
| A | 20 | Group1 | 20 |
+----+-------+--------+------+
| B | 10 | Group2 | 10 |
+----+-------+--------+------+
| B | 5 | Group2 | 5 |
+----+-------+--------+------+
| B | 5 | Group2 | 5 |
+----+-------+--------+------+
| A | 10 | Group1 | 10 |
+----+-------+--------+------+
| A | 10 | Group1 | 10 |
+----+-------+--------+------+
| B | 5 | Group2 | 5 |
+----+-------+--------+------+
| B | 5 | Group2 | 5 |
+----+-------+--------+------+
zn(sum(if [Group]= 'Group1' then [Val] end))
+
zn(avg(if [Group] = 'Group2' then [Val] end))
{SUM({Fixed [Type]: ZN(sum(if [Group]= 'Group1' then [Val] end))})
+
sum({Fixed [Type]: zn(avg(if [Group] = 'Group2' then [Val] end))})}
Out of total <total> TB SKU, <AGG(CF1)> was <Type>
select ID, date, avail, total - avail AS used, group from table_name
select ID, date, avail as val, "avail" as type, group from table_name
UNION
select ID, date, total - avail AS val, "used" as type, group from table_name