SSAS 多维数据集上的数据透视表:隐藏没有测量结果的行

Pivottable on SSAS cube: hide rows without result on measure

我无法隐藏所选度量的某些维度成员没有数据的行,但度量组中有该成员的行。

考虑度量值组的以下数据源:

+---------+----------+----------+----------+--------+
| invoice | customer | subtotal | shipping | total  |
+---------+----------+----------+----------+--------+
| 1       | a        | 12.95    | 2.50     | 15.45  |
| 2       | a        | 7.50     |          | 7.50   |
| 3       | b        | 125.00   |          | 125.00 |
+---------+----------+----------+----------+--------+

尝试基于 SSAS 多维数据集中的度量值组创建数据透视表时,这可能会导致以下结果:

但是,我想隐藏 Customer b 的行,因为给定的数据透视表中没有结果。我尝试使用 数据透视表选项 -> 显示 -> 显示行上没有数据的项目 但这只适用于 showing/hiding 给定度量组中根本没有引用的客户,说 Customer c.

有没有办法隐藏没有给定度量结果的行,而不创建单独的度量组WHERE shipping IS NOT NULL

我正在使用 SQL-server 2008 和 Excel 2013

编辑:

为澄清起见,我使用 Excel 连接到 SSAS 多维数据集。生成的数据透视表(在 Excel 中)看起来像给定的图像。

也许是这样的(但我没有看到枢轴...)

DECLARE @tbl TABLE(invoice INT,customer VARCHAR(10),subtotal DECIMAL(8,2),shipping DECIMAL(8,2),total DECIMAL(8,2));
INSERT INTO @tbl VALUES
 (1,'a',12.95,2.50,15.45)
,(2,'a',7.50,NULL,7.50)
,(3,'b',125.00,NULL,125.00);

SELECT customer, SUM(shipping) AS SumShipping
FROM @tbl 
GROUP BY customer
HAVING SUM(shipping) IS NOT NULL

在 DSV 中找到带有运输列的 table 并添加一个带有表达式的计算列:

Case when shipping <> 0 then shipping end

请转到 BIDS 多维数据集设计器中 Shipping 度量的属性 window,并将 NullHandling 属性 更改为 Preserve。将源列更改为新的计算列。然后重新部署,我希望你的数据透视表中的那一行会消失。

并确保 Pivottable 选项 -> 显示 -> 显示行上没有数据的项目未选中。

如果还是不行,请将 Management Studio 的对象资源管理器 window 连接到 SSAS,并告诉我们它在服务器节点中显示的版本号。可能是您没有使用最新的服务包,这是一个错误。

进入 Excel 中的枢轴 table,单击客户列上的下拉菜单。在下拉菜单中,您会找到一个名为 Value Filters 的选项。在那里你可以设置类似 Shipping greater than 0.1.

这会根据度量值过滤您的客户维度列。