上次修改日期: 07 Jun 2023
环境
- Tableau Desktop
- 多维(多维数据集)数据源
答案
选项 1:使用表函数
尽管多维数据集数据源中的 Tableau 计算字段无法直接引用维度,但表函数可以引用视图中的维度成员。例如,INDEX() 可用于引用视图中某个维度值的列/行。或者,WINDOW_SUM(SUM(1)) 可用于对视图中的维度成员进行计数。注意:此方法要求在视图中包括计算中间接引用的所有维度,但可对视图进行进一步修改以隐藏这些维度。请参见依据视图中不存在的维度运算表计算
下面的说明演示如何使用表示 2019 年销售额、2018 年销售额的列以及表示这两年的百分比差异的列来创建交叉表视图。若要查看这些说明的实际运行效果(并查看有关此方法工作原理的附加说明),请从本文右侧的窗格中下载工作簿。
- 将“[Order Date]”(订单日期)拖到“列”功能区
- 在“列”功能区上右键单击“YEAR(Order Date)”,并选择“排序...”
- 在“排序”对话框中,执行以下操作并关闭对话框:
- 对于“排序依据”,选择“手动”
- 将“2016”移到底部
- 在视图中右键单击“2017”标题,并选择“排除”
- 选择“分析”>“创建计算字段”
- 在打开的“计算字段”对话框中,执行以下操作,然后单击“确定”:
- 命名此计算字段。在此示例中,计算字段名为“Index”(索引)
- 在公式字段中,创建一个类似于如下的计算:
INDEX()
- 将“[Index]”(索引)拖到“标记”卡上的“文本”
- 使用类似于如下的计算创建一个名称类似于“2018 Sales (cube)”(2018 年销售额(多维数据集))的计算字段:
IF INDEX() = 1
THEN SUM([Sales])
END
- 使用类似于如下的计算创建一个名称类似于“2019 Sales (cube)”(2019 年销售额(多维数据集))的计算字段:
IF INDEX() = 2
THEN SUM([Sales])
END
- 使用类似于如下的计算创建一个名称类似于“% Difference (cube)”(差异百分比(多维数据集))的计算字段:
IF INDEX() = 3
THEN
(WINDOW_SUM([2018 Sales (cube)])-WINDOW_SUM([2019 Sales (cube)]))
/
WINDOW_SUM([2018 Sales (cube)])
END
- 使用类似于如下的计算创建一个名称类似于“Headers”(标题)的计算字段:
IF INDEX() = 2
THEN '2019 Sales'
ELSEIF INDEX() = 1
THEN '2018 Sales'
ELSEIF INDEX() = 3
THEN '% Diff'
END
- 将“[Headers]”(标题)拖到“列”功能区
- 在“列”功能区上右键单击“YEAR(Order Date)”,并取消选中“显示标题”
- 在视图中右键单击“Order Date”(订单日期)/“Headers”(标题),并选择“隐藏列字段标签”
- 将“[2018 Sales (cube)]”(2018 年销售额(多维数据集))、“[2019 Sales (cube)]”(2019 年销售额(多维数据集))和“[% Difference (cube)]”(差异百分比(多维数据集))拖到“标记”卡上的“文本”
- 在“标记”卡上单击“文本”,并单击“…”按钮
- 在“编辑”标签对话框中,移除“AGG(2018 Sales (cube))”、“AGG(2019 Sales (cube))”和“AGG(% Difference (cube))”之间的回车换行符
选项 2:使用计算成员
作为一种解决方法,请改为创建计算成员。有关详细信息,请参见如何创建计算成员。其他信息
在将数据导入 Tableau Desktop 之前,多维数据集数据源会针对指定维度对度量值进行预先聚合。 因此,在计算中使用维度可能会生成不正确的结果。为了表达您对在将来的产品版本中包括此增强功能的支持,请为以下社区理念投下您的一票:
讨论本文... 反馈论坛
感谢您提供该文章是否有效的反馈。
打开新案例
继续搜索
知识库
社区
产品帮助
培训和教程