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

Posted

技术标签:

【中文标题】如何在 SSAS 多维中显示实际上没有值的维度成员?【英文标题】:How to show dimension members for which there are no values in fact in SSAS Multi-Dimensional? 【发布时间】:2019-04-26 07:31:21 【问题描述】:

我的票务管理应用程序中有两个表格,“ExpositionPeriods”和“OrganisedVisits”。

ExpositionPeriods - 定义可以购买门票的时间段。

OrganisedVisits - 存储购票信息。

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

客户想要一份显示“每个可用时间段的访问者数量”的报告。这意味着,如果对于没有访客的任何时间段,该报告应显示该时间段的“0”。像这样的。

到目前为止一切顺利。由于生产数据库非常庞大(约 500 GB),因此不建议直接报告此数据库。当我使用此模式创建 OLAP 多维数据集并尝试在多维数据集中实现相同的报告功能时,事情变得具有挑战性。看起来多维数据集实际上执行了类似于 SQL INNER JOIN 而不是 LEFT OUTER JOIN 的操作,因此我看不到那些没有售出门票的时段。

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

看起来当我选择显示空单元格的选项时,这些单元格显示为 NULL。有什么办法可以让这些 NULL 值显示数字 0?【参考方案2】:

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

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

所以你有零而不是空值和副作用。您或客户无法隐藏空单元格,因为现在还不够空。

【讨论】:

以上是关于如何在 SSAS 多维中显示实际上没有值的维度成员?的主要内容,如果未能解决你的问题,请参考以下文章

SSAS 表格,处理维度空白值

如何获取 SSAS 多维数据集维度和维度属性的列表

SSAS 多维数据集计算的成员无穷大总计值

SSAS - 日期维度在不合适的地方显示未来值

在 Excel 数据透视表“更多字段”中显示 SSAS 维度属性

将关系迁移到多维 - 如何从时间戳创建时间维度 - SSAS