如何在MDX中创建逆正态分布函数?这将等同于Excel中的NORM.INV()函数。
答案 0 :(得分:3)
这不是一个很好的体系结构,但是可以在Analysis Services多维实例中从MDX调用Excel函数。我说这不是一个很好的体系结构,因为您必须在服务器上安装Excel,并且对于必须安装哪个版本的Excel存在一些疑问。我的笔记说安装Excel 2003或更高版本应该可以,但是大约十年来我没有测试这些笔记。我怀疑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))