上次修改日期: 20 Jul 2023
环境
Tableau Desktop答案
一般解决方法
创建一个计算,该计算在分母中使用详细级别 (LOD) 函数来查找总额。例如,查找每个细分的销售总额百分比;用于查找销售总额百分比的以下表计算:SUM([Sales]) / TOTAL(SUM([Sales]))
可能会变为:
SUM([Sales]) / SUM( { EXCLUDE [Segment] : SUM([Sales]) } )
单击以扩展解决方案
示例 1:将快速表计算转换为 LOD 计算
这些指引从附带的工作簿中的“Example 1: table calc”(示例 1:表计算)工作表开始。
步骤 1 - 使用表计算构建视图
- 将“[Region]”(区域)拖到“行”功能区
- 将“[Segment]”(细分)拖到“标记”卡上的“颜色”
- 将“[Sales]”(销售额)拖到“列”功能区
- 在“列”功能区上右键单击“[Sales]”(销售额),并选择“快速表计算”>“总额百分比”
- 在“列”功能区上右键单击“[Sales]”(销售额),并选择“计算依据”>“表(横穿)”
- 按住 Ctrl 并将“[Sales]”(销售额)从“列”功能区拖到“标记” 卡上的“标签”。这将创建一个应用了相同快速表计算的副本。
步骤 2 - 使用计算字段重新生成相同结果
- 选择“分析”>“创建计算字段”
- 在打开的“计算字段”对话框中,执行以下操作,然后单击“确定”:
- 命名此计算字段。在此示例中,计算字段名为“Ex 1: % of total sales per segment within region”(示例 1:区域内每个细分的销售总额百分比)
- 将带有三角形图标的绿色“SUM(Sales)”字段从“标记”卡拖到计算编辑器中
- Tableau Desktop 将自动编写出以下计算:
SUM([Sales])/TOTAL(SUM([Sales]))
- 对计算进行修改,将表函数 TOTAL() 替换为 LOD 函数。最终计算可能如下所示:
SUM([Sales])/SUM({ EXCLUDE [Segment] : SUM([Sales])})
重要信息:EXCLUDE 函数将运算表达式(在本例中为 SUM([Sales])),就好像 EXCLUDE 后台列出的维度已从视图中移除一样。为了避免“cannot mix aggregate and nonaggregate arguments”(无法将聚合和非聚合参数混合)错误,EXCLUDE 外部必须要有 SUM(),并且该函数不会更改分母的值。 - 将视图中的“SUM(Sales)”替换为“[Ex 1: % of total sales per segment within region]”(示例 1:区域内每个细分的销售总额百分比)
- (可选)通过设置轴的默认数字的格式,将其修改为百分比。
注意:视频没有声音。
单击以展开步骤
示例 2:调整总额百分比的范围
选项 1
如果使用 EXCLUDE,请在 EXCLUDE 后面列出所有维度,将对度量值进行分组的维度除外。举例来说,如果视图包括“[Region]”(区域)、“[Segment]”(细分)和“[Category]”(类别),而目标是查找每个区域内各个细分的总额百分比,则计算将如下所示:{ EXCLUDE [Category] : SUM( [Sales] ) }/{ EXCLUDE [Segment], [Category] : SUM( [Sales] ) }
如果使用 FIXED,则在 FIXED 后面列出将用于对度量值进行分组的所有维度。上面使用 FIXED 的相同示例将为:
{ FIXED [Segment], [Region] : SUM( [Sales] ) }/{ FIXED [Region] : SUM( [Sales] }
选项 2
若要查找每个细分的总体销售总额百分比,您将注意到此特定示例将显示每个区域和每个类别比例为 50.56% 的消费者。这是因为总额百分比与细分相关联,并且由于视图中有其他维度,因此百分比将重复。{ EXCLUDE [Region], [Category] : SUM([Sales]) }/{ EXCLUDE [Region], [Category], [Segment] : SUM([Sales])}
如果使用 FIXED,请使用以下等效的计算:
{ FIXED [Segment] : SUM([Sales]) }/{ FIXED : SUM([Sales]) }
选项 3
使用以下计算来查看视图中每一行的销售总额百分比。SUM([Sales])/SUM({ EXCLUDE [Category] : SUM([Sales]) })
- 将为视图中的每一行计算“SUM([Sales])”。
- EXCLUDE 语句将为视图中的每一行计算销售额,就好像“[Category]”(类别)已移除一样。
- 如果向视图中添加了其他维度,则分子和分母的值将相应更改
注意:视频没有声音。
单击以展开步骤
示例 3:包括或忽略筛选器
由于操作顺序的原因,FIXED 表达式只会通过上下文筛选器进行筛选。EXCLUDE 表达式通过所有维度筛选器进行筛选。
不要使用表计算,也不要使用 TOTAL() 函数,请使用详细级别 (LOD) 表达式,例如:
例如,使用 Superstore 样本数据按地区显示每个细分的总额百分比是多少:
注意:视频没有声音。
若要查看其他示例,请参见附带的工作簿中的“Example 3: Working with Filters”(示例 3:使用筛选器)工作表。
不要使用表计算,也不要使用 TOTAL() 函数,请使用详细级别 (LOD) 表达式,例如:
{ FIXED [<您正在寻找其总额百分比信息的维度>] : SUM([Measure]) } /
{ FIXED [<"Total" 维度>] : SUM([Measure]) }
例如,使用 Superstore 样本数据按地区显示每个细分的总额百分比是多少:
- 选择“分析”>“创建计算字段”。将计算命名为“Percent of Total”(总额百分比),输入以下计算,然后单击“确定”:
{ FIXED [Segment], [Region] : SUM([Sales]) }/{ FIXED [Region] : SUM([Sales]) }
- 在“度量”窗格中,右键单击“Percent of Total”(总额百分比),并选择“默认属性”>“数字格式...”>“百分比”
- 将“Percent of Total”(总额百分比)放在“列”上。
- 将“Region”(区域)放在“行”上。
- 将“Segment”(细分)放在“颜色”上。
- 将“Percent of Total”(总额百分比)放在“标签”上。
注意:视频没有声音。
若要查看其他示例,请参见附带的工作簿中的“Example 3: Working with Filters”(示例 3:使用筛选器)工作表。
- 使用类似于“Ex 3: % of total sales per segment within region (not filtered)”(示例 3:区域内每个细分的销售总额百分比(未筛选))的名称创建一个计算字段,其计算类似于如下:
{ FIXED [Segment], [Region] : SUM([Sales]) }/{ FIXED [Region] : SUM([Sales]) } - 将“[Ex 3: % of total sales per segment within region (not filtered)]”(示例 3:区域内每个细分的销售总额百分比(未筛选))拖到“列”功能区
- 将“[Category]”(类别)和“[Sub-Category]”(子类)拖到“筛选器”功能区
- 在“筛选器”功能区上右键单击“[Category]”(类别),并选择“添加到上下文”
上面计算的说明:
- 使用 EXCLUDE 的计算将通过“[Category]”(类别)和“[Sub-Category]”(子类)筛选器进行筛选(对于表函数也是如此)
- 使用 FIXED 的计算将仅通过“[Catgory]”(类别)进行筛选,因为该筛选器已添加到上下文中。
- 可以在一个计算中混用 FIXED 和 EXCLUDE,以便在一段被筛选的情况下,另一段不会被筛选。
单击以展开步骤
示例 4:在另一个计算中使用总额百分比
在另一个计算中使用总额百分比计算时,要考虑两个主要方面:
- 如果最终视图缺少运算分子和/或分母所需的维度,则必须使用 FIXED 或 INCLUDE;
- 总额百分比计算需要与其中使用了该计算的计算聚合匹配。LOD 始终返回非聚合值。
步骤 1 - 生成视图
- 右键单击并将“[Order Date]”(订单日期)拖到“列”功能区
- 在“放置字段”对话框中,选择绿色的“Order Date (continuous)”(订单日期(连续)),并单击“确定”
- 将“[Sales]”(销售额)拖到“行”功能区
- 将“[Order ID]”(订单 ID)拖到“标记”卡上的“详细信息”
步骤 2 - 创建计算字段
- 使用类似于“Ex 4: % of total per customer overall”(示例 4:每个客户的总体总额百分比)创建一个计算字段,其计算类似于如下:
{ FIXED [Customer Name], [Region] : SUM([Sales]) }/{FIXED [Region] : SUM([Sales])} - 使用类似于“Ex 4: Top Customers per Region”(示例 4:每个区域位于前列的客户)创建一个计算字段,其计算类似于如下:
IF
([Ex 4: % of total per customer within region] > .02
AND [Region] = "South")
OR
[Ex 4: % of total per customer within region] > .0075
THEN "big customer"
ELSE "other"
END - 将“[Ex 4: Top Customers per Region]”(示例 4:每个区域位于前列的用户)拖到“标记”卡上的“颜色”
注意:视频没有声音。
其他信息
表计算与 LOD
表函数和 LOD 函数均允许我们确定总额的范围。根据总额百分比的使用方式,一个选项可能更适合:- 表计算可能在总额中显示意外结果
- 筛选器可能会意外改变表计算
- FIXED LOD 计算会忽略除上下文筛选器外的所有筛选器
- 引用总额百分比的计算可能会遇到“cannot mix aggregate and nonaggreate arguments”(无法将聚合和非聚合参数混合)。使用与计算将进入的计算聚合匹配的总额百分比计算。FIXED 表达式为非聚合,而 EXCLUDE 和表函数为聚合。
EXCLUDE 与 FIXED
大多数情况下,可以使用 EXCLUDE 或 FIXED。要考虑的某些因素:
- EXCLUDE 语句将考虑所有维度筛选器。FIXED 将仅考虑上下文筛选器。
- EXCLUDE 语句必须在视图中或“筛选器”功能区上进行聚合。FIXED 语句的处理方式与维度类似。
- 为了简单起见,这些示例仅显示 EXCLUDE,而不显示 INCLUDE。INCLUDE 将运算表达式,就好像指定维度已添加到视图中一样。当维度缺少定义分子和/或分母范围所需的维度时,INCLUDE 比 EXCLUDE 更加适合。
感谢您提供该文章是否有效的反馈。
打开新案例
继续搜索
知识库
社区
产品帮助
培训和教程