【问题标题】:Tableau Calculated Field Aggregate SUM for Lowest Level & MIN for All OthersTableau 计算的最低级别字段聚合 SUM 和所有其他字段的最小值
【发布时间】:2019-12-19 03:18:12
【问题描述】:

我很难用 SUM 聚合行组的最低级别,同时按 MIN 聚合所有较高的行标题。

我的数据是这样组织在一个这样的组中的:

组装

父母

孩子

订单

库存

我的数据集示例可能如下所示:

Assembly | Parent | Child | Supply Type | Available Quantity
A1       | P1     | C1    | Orders      | 0
A1       | P1     | C1    | Inventory   | 50
A1       | P1     | C2    | Orders      | 100
A1       | P1     | C2    | Inventory   | 0
A1       | P2     | C3    | Orders      | 50
A1       | P2     | C3    | Inventory   | 100

当我折叠到 Child 行组时,我想对 Supply Type 行中的度量值进行求和,然后在我折叠到 Child 行组时显示 MIN em>Parent 和 Assembly 行组。例如,如果我在 Child 级别折叠,我想求和并让 C1 显示总共 50 和 C2 显示总共 100,但是当我在 Parent level 我想查看 MIN 并让 P1 显示 50 和 P2 显示 150。

我能够部分实现我想要做的事情:

{ INCLUDE [Child],[Parent],[Assembly] : MIN({ EXCLUDE [Supply Type] : SUM([Available Quantity])})}

但现在在最低级别,OrderInventory 度量显示相同的数字(这是不准确的),因为 EXCLUDE 函数基本上忽略了供应类型行级别。

【问题讨论】:

  • 如果您可以显示当前无效的代码,您可能会收到更快的回复。
  • 当您说“折叠”时,您的意思是您将维度字段放入层次结构中吗? (因此您可以在可视化项上按 + 或 - 来展开或折叠详细程度)。如果是这样,您的层次结构中的字段顺序是什么?
  • @AlexBlakemore 是的,我有一个层次结构,即组装 > 父 > 子 > 供应类型。我正在折叠/扩展从供应类型(库存和订单)一直到装配的详细程度。

标签: aggregate tableau-api calculated-field


【解决方案1】:

好的,简而言之,我的建议是(稍微)改变你的方法。有很多方法可以按你说的做,但它们比我认为大多数人想要的更复杂和脆弱,只是为了方便通过点击 + 或进行控制 - 展开和折叠级别(更不用说让用户感到困惑)。尤其是当有更简单且可能更可靠的替代方案时。

这是一种使用参数和计算字段的替代方法——对于 Tableau 中的许多事情来说,这是一种非常通用的方法。

  1. 定义一个参数,指定要显示的维度层次结构的级别。称之为 Display_Level 或任何对您有意义的名称。给它数据类型字符串,并提供一个允许值的列表,比如“Assembly”、“Parent”等。
  2. 显示您的参数控件并选择您希望它的外观,例如组合框或单选按钮。
  3. 将一个计算字段定义为显示维度,如下所示,并根据需要放置在 Rows 架子或其他架子上。

案例 [Display_Level] 当“组装”然后 [组装] 当“父级”时 [Assembly] +“ -” + [父级] 当“孩子”然后[组装]+“-”+[父母]+“-”+[孩子] ... 结束

  1. 定义另一个计算字段作为显示的度量,如下所示,并根据需要放置在“列”架子或其他架子上。

案例 [Display_Level] 当“组装”然后 Min([数量]) 当“父母”然后 Min([数量]) 当“孩子”然后 SUM([数量]) ... 结束

这个初稿可能不是你想要的,但是这个方法可以很容易地扩展。您只是使用参数来控制显示细节,而不是单击字段名称旁边的 + 或 -。

如果您不喜欢用破折号分隔的维度上的全名,那么您可以创建多个维度字段作为标签,每个级别一个,并根据参数设置让它们返回相应的字段或 null .例如,父标签字段可以定义为if [Display_Level] <> “Assembly” then [Parent] end 为其他人做类似的事情。然后将所有“标签”字段放在可视化项上,以根据需要创建行或列标题。除了您使用参数控制细节之外,这将与展开/折叠非常相似。有几种方法可以让 Null 不显示。

如果您的度量计算比 MIN() 或 SUM() 更复杂 - 比如说他们是否首先使用 LOD 计算来汇总值 - 然后只需修改您的度量计算。

【讨论】:

  • 感谢您的建议!我没有时间对此进行全面审查,但总的来说我理解这个概念 - 似乎这种方法失去了可视化“嵌套”的能力(类似于 Excel 数据透视表展开/折叠功能),除非您使用您的个人参数控件...有没有一种简单的方法可以用这种方法消除/隐藏“空值”?明天我将尝试更多地使用您的建议,看看是否可以满足我的需求!
  • 您确实可以隐藏空值,并返回到更嵌套的外观。我将从概述的方法开始,以确保您获得正确的结果,然后改进外观。隐藏空值的一种方法是使用格式窗格的特殊值部分或别名。
  • 嘿亚历克斯 - 我回来了,总的来说,工作簿按照您的建议运行,但是我正在努力隐藏“空”行标题。特殊值过滤器似乎仅适用于度量(而不是字段),我不确定您使用别名是什么意思...任何建议(或示例的良好链接)?谢谢!
  • 更具体地说,我想在值为“Null”(或选择某个“Display_Level”时)隐藏行标题,然后在有值时显示它......我似乎找不到这样做的方法。
  • 不显示维度的 Null 字样的最简单方法是右键单击 Null 字样,选择编辑别名,然后给它一个空白别名或一两个空格。定义别名类似于设置数字格式或日期格式 - 它是指定值应如何显示的规则(仅在大多数情况下影响显示)
猜你喜欢
  • 2015-09-25
  • 1970-01-01
  • 1970-01-01
  • 2015-10-19
  • 2015-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多