Excel中的多维数据集功能使用Powerpivot在工作表中显示特定的行值

时间:2015-09-14 18:38:06

标签: sql excel excel-vba mdx powerpivot vba

这是一个高度专业化的问题,我在网上搜索无济于事的答案。我正在使用连接到SQL数据库的Powerpivot创建基本上可以与Web应用程序进行比较的东西。我使用cubevalue函数来获取工作簿中与特定查询参数有关的总和和其他输出。我正在寻找一种方法查询具有一些键值的行,并输出一些不同的列值,该值位于数据库的同一行。基本上这就像vlookup一样容易,如果我只是从一张纸到另一张,而且数据不是很大,以至于它必须存储在powerpivot中。

这是我正在看的东西。

Example Image

鉴于对applicantid的查询,我想要mathner_id的输出。

这是我希望的工作,但它给出了#N / A

=CUBEMEMBERPROPERTY("ThisWorkbookDataModel","[MasterStartQuery].[applicantid].[1119195]","[learner_id]")

任何洞察力都会受到超级赞赏,或者如果您认识某个可能知道的人。谢谢。

1 个答案:

答案 0 :(得分:1)

坏消息是CUBEMEMBERPROPERTY()无法与PowerPivot一起使用 - http://www.mrexcel.com/forum/power-bi/730287-function-cubememberproperty-always-return-n.html

这不是解决这个问题的唯一方法,如果我们在讨论两个字段之间简单,独特的一对一关系,那么您可以简单地创建一个度量来返回learner_id,例如类似的东西:

get_learner_id = MAX(MasterStartQuery[learner_id])

然后用:

调用它
=CUBEVALUE("ThisWorkbookDataModel",
           CUBEMEMBER("ThisWorkbookDataModel","[MasterStartQuery].[applicantid].[1119195]"),
           CUBEMEMBER("ThisWorkbookDataModel","[Measures].[get_learner_id]")
           )

有更优雅的方法来构建这个......

这很简单,因为它是一个数字字段,基于文本的字段应该在VALUES()而不是MAX()中工作,但如果你有多个结果(不是坏事),你会得到一个错误。