首页 > 解决方案 > MDX 逆正态分布

问题描述

如何在 MDX 中创建逆正态分布函数?这相当于 Excel 中的 NORM.INV() 函数。

标签: statisticsmdxnormal-distribution

解决方案


这不是一个很好的体系结构,但可以从 Analysis Services 多维实例中的 MDX 调用 Excel 函数。我说这不是一个好的架构,因为您必须在服务器上安装 Excel,而且对于您必须安装的 Excel 版本存在一些问题。我的笔记说安装 Excel 2003 或更高版本应该可以工作,但我已经有大约 10 年没有测试过这些笔记了。我怀疑 Excel 的 Office 365 安装将无法正常工作。如果你让它工作,那么你会看到一个 excel.exe 进程启动,因为 SSAS 在进程外运行 Excel 函数。

支持的 Excel 函数列表没有很好的记录。我拥有的文档来自 Analysis Services 2000,但我相当确定在最近的 Analysis Services 2008 测试中仍然准确(并且目前在 Analysis Services 2017 及更高版本中可能仍然准确)。

无论如何,如果你得到这个工作,那么下面的 MDX 计算成员应该工作,我相信:

create member CurrentCube.[Measures].[test] as NormInv(0.908789, 40, 1.5);

顺便说一句,如果您在 SSMS 中展开 SSAS 实例下的 Assemblies 文件夹,您将看到一个 ExcelMDX 程序集,我相信它是通往 Excel 的桥梁。这是预装的。

另一种选择是 DAX 语言具有一个NORM.INV 函数,该函数在本机实现时具有更好的性能特征。dax.guide 网站上的 Analysis Services 2019 中似乎提供了此功能,我怀疑这意味着针对多维模型的 DAX 查询将能够使用此功能,例如:

evaluate row("My NORM.INV Calc",Norm.Inv(0.908789, 40, 1.5))

推荐阅读