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

    • 创建一个计算字段
      CF
      as
    • AGG(CF1)
      拖动到行搁板和文本中,
      键入
      标记卡中的颜色;您将获得所需的视图,其中51和51值分别为
      used
      avail

    • 对于
      total
      工具提示,即
      102
      创建计算字段
      total
      as
    • 将此字段添加到标记卡的详细信息中(而不是像通常那样添加工具提示)

    • 单击工具提示并根据喜好编辑计算。我像编辑一样编辑它

    • 选项2在sql本身中透视数据。然后使用此查询-
    此后,您可以在表格中继续

    请参见该表,该表使用长数据格式,而您的数据采用宽格式。您应该将SKU内存分配保持在行而不是列中,这样每当您需要分区时,向标记卡添加额外的字段类型就可以了。相反,如果您将它放在列中,那么它们总是两个独立的度量值,而实际上它是一个度量值。我建议你们在网上读一些关于整洁数据格式的文章,在这些文章中,你们将清楚地了解在行、列和列名中应该保留什么。将数据重新调整为正确、整洁的格式可以解决许多问题

    请记住,如果变量(列)名称中有任何值,则必须透视数据。此处
    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