发布时间: 30 Jan 2013
上次修改日期: 20 Jul 2023
问题
如何在使用混合数据时显示总计。
例如,当主数据源中的计算字段引用辅助数据源中的字段时,针对总计返回的结果可能不会反映预期的数字。
答案
附带的工作簿中使用示例数据集“Superstore”演示了全部三个选项。选项 1:
使用跨数据库联接而不是混合来联接数据源。有关说明,请参见联接数据。选项 2:使用 WINDOW_SUM() 创建计算
- 将链接字段从辅助数据源拖到“标记”卡上的“详细信息”。
- 使用类似于如下的计算创建一个计算字段:
If FIRST()=0 THEN WINDOW_SUM(<Calculated Field that references Field in Secondary Data Source>) END
- 将引用辅助数据源中的字段的计算字段替换为步骤 2 中创建的计算字段
- 在功能区上右键单击替换计算,并选择“编辑表计算...”
- 在“表计算”对话框中,执行以下操作:
- 选择“特定维度”
- 仅检查链接字段
- 导航到“分析”>“标记叠加”>“关闭”
- 可选:为视图中的所有度量重复步骤 2-5
注意: 必须在主数据源中创建计算,并引用辅助数据源中的字段。
选项 3:使用 INCLUDE 创建计算
修改原始计算,使计算的非相加部分包含在详细级别 (LOD) INCLUDE 表达式内。例如,计算
AVG([Discount])
+ SUM([Category Costs].[Cost])
可能会变为:
SUM({ INCLUDE [Sub-Category] : AVG([Discount]) })
+ SUM([Category Costs].[Cost])
注意: 只有当确定详细级别和非相加表达式的维度位于同一数据源中时,此选项才起作用。详细级别 (LOD) 表达式不能包括来自多个数据源的字段。
其他信息
只有非相加表达式会出现此问题,非相加表达式是指在合计设置为“汇总依据”>“自动”时必须在进行合计之前按特定详细级别计算的表达式。自动总计将忽略视图中的详细级别,并在整个数据集上对计算进行运算。举例来说,如果视图显示每日平均值,则自动总计将在视图中显示整个数据集的平均值,而不是所有每日平均值的总和。
使用来自辅助数据源的字段的计算只能显示自动总计。