如何显示SSAS多维中实际上没有值的维成员?

时间:2019-04-26 07:31:21

标签: sql ssas olap

我的票务管理应用程序中有两个表,分别是“ 博览会期间”和“ OrganisedVisits ”。

博览会时期-定义可以购买门票的时期。

组织访问-存储购票信息。

在下面的示例中,我们有5个可用时段,并且已经购买了其中2个时段的门票。

enter image description here

客户需要一个报告,其中显示“每个可用时间段的访问者数量”。这意味着,如果在没有访问者的任何时期内,报告在该时期内应显示为“ 0”。像这样的东西。

enter image description here

到目前为止,一切都很好。由于生产数据库非常庞大(〜500 GB),因此不建议直接在此数据库上进行报告。当我从此架构创建OLAP多维数据集并尝试在多维数据集中实现相同的报表功能时,事情变得充满挑战。似乎该多维数据集实际上执行的操作类似于SQL INNER JOIN,而不是LEFT OUTER JOIN,因此,我看不到没有售票的那些Period。

enter image description here

这是SSAS的实际行为方式吗?我是否遗漏了任何特定的设置,这些设置将指示SSAS引擎以不同的方式处理多维数据集,以便也包括丢失的时间段?请注意,最终客户无权访问MDX / DAX脚本,他们只能通过拖放方式和尺寸(如Excel数据透视表中那样)使用多维数据集。

2 个答案:

答案 0 :(得分:1)

在图像中,浏览器对日期维度上的行执行非空操作。如果要显示没有访问者的日期,请选择显示空白单元格的选项。

答案 1 :(得分:0)

您可以在“计算”中将范围定义为

SCOPE 
([Measures].[Visitors]);
THIS=IIF(ISEMPTY([Measures].[Visitors]),0,[Measures].[Visitors]);
END SCOPE;

因此,您使用零而不是null和副作用。您或客户无法隐藏空单元格,因为现在它还不够空。