MDX 逆正态分布

MDX Inverse Normal Distribution

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

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

支持的 Excel 函数列表没有详细记录。 doc I have 来自 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 function,它将具有更好的性能特征,因为它是本机实现的。 dax.guide 网站上的 Analysis Services 2019 似乎提供了此功能,我怀疑这意味着针对多维模型的 DAX 查询将能够使用此功能,例如:

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