知识库

使用包含多维数据集数据源的维度创建计算字段


发布时间: 17 May 2013
上次修改日期: 07 Jun 2023

问题

如何使用多维(多维数据集)数据源中的维度创建计算字段。

环境

  • Tableau Desktop
  • 多维(多维数据集)数据源

答案

选项 1:使用表函数

尽管多维数据集数据源中的 Tableau 计算字段无法直接引用维度,但表函数可以引用视图中的维度成员。例如,INDEX() 可用于引用视图中某个维度值的列/行。或者,WINDOW_SUM(SUM(1)) 可用于对视图中的维度成员进行计数。

注意:此方法要求在视图中包括计算中间接引用的所有维度,但可对视图进行进一步修改以隐藏这些维度。请参见依据视图中不存在的维度运算表计算

下面的说明演示如何使用表示 2019 年销售额、2018 年销售额的列以及表示这两年的百分比差异的列来创建交叉表视图。若要查看这些说明的实际运行效果(并查看有关此方法工作原理的附加说明),请从本文右侧的窗格中下载工作簿。
  1. 将“[Order Date]”(订单日期)拖到“列”功能区
  2. 在“列”功能区上右键单击“YEAR(Order Date)”,并选择“排序...”
  3. 在“排序”对话框中,执行以下操作并关闭对话框:
    1. 对于“排序依据”,选择“手动”
    2. 将“2016”移到底部
  4. 在视图中右键单击“2017”标题,并选择“排除”
  5. 选择“分析”>“创建计算字段”
  6. 在打开的“计算字段”对话框中,执行以下操作,然后单击“确定”
    1. 命名此计算字段。在此示例中,计算字段名为“Index”(索引)
    2. 在公式字段中,创建一个类似于如下的计算:

      INDEX()
  7. 将“[Index]”(索引)拖到“标记”卡上的“文本”
  8. 使用类似于如下的计算创建一个名称类似于“2018 Sales (cube)”(2018 年销售额(多维数据集))的计算字段:

    IF INDEX() = 1
    THEN SUM([Sales])
    END

     
  9. 使用类似于如下的计算创建一个名称类似于“2019 Sales (cube)”(2019 年销售额(多维数据集))的计算字段:

    IF INDEX() = 2
    THEN SUM([Sales])
    END

     
  10. 使用类似于如下的计算创建一个名称类似于“% Difference (cube)”(差异百分比(多维数据集))的计算字段:

    IF INDEX() = 3
    THEN
    (WINDOW_SUM([2018 Sales (cube)])-WINDOW_SUM([2019 Sales (cube)]))
    /
    WINDOW_SUM([2018 Sales (cube)])
    END

     
  11. 使用类似于如下的计算创建一个名称类似于“Headers”(标题)的计算字段:

    IF INDEX() = 2
    THEN '2019 Sales'

    ELSEIF INDEX() = 1
    THEN '2018 Sales'

    ELSEIF INDEX() = 3
    THEN '% Diff'

    END

     
  12. 将“[Headers]”(标题)拖到“列”功能区
  13. 在“列”功能区上右键单击“YEAR(Order Date)”,并取消选中“显示标题”
  14. 在视图中右键单击“Order Date”(订单日期)/“Headers”(标题),并选择“隐藏列字段标签”
  15. 将“[2018 Sales (cube)]”(2018 年销售额(多维数据集))、“[2019 Sales (cube)]”(2019 年销售额(多维数据集))和“[% Difference (cube)]”(差异百分比(多维数据集))拖到“标记”卡上的“文本”
  16. 在“标记”卡上单击“文本”,并单击“…”按钮
  17. 在“编辑”标签对话框中,移除“AGG(2018 Sales (cube))”、“AGG(2019 Sales (cube))”和“AGG(% Difference (cube))”之间的回车换行符
 

选项 2:使用计算成员

作为一种解决方法,请改为创建计算成员。有关详细信息,请参见如何创建计算成员
此文章是否已解决问题?