0

有没有人有在 Excel 中编写 CUBE* 函数的经验?

我正在通过这些函数针对数据库中的一个OLAP db和触发MDX字符串编写这些函数。

似乎在某些情况下,如果其中一个函数失败并返回#NA,那么它们都会失败。

MDX这些函数中是否有不应使用的特定Excel函数?

这里有些例子:

1.MDX字符串:

PARALLELPERIOD([Date].[Date - Calendar Month].[Calendar Year],1,TAIL([Date].[Date - Calendar Month].[Calendar Day].MEMBERS,1).item(0))

立方体功能:

=CUBESET("connectionToCube","PARALLELPERIOD([Date].[Date - Calendar Month].[Calendar Year],1,TAIL([Date].[Date - Calendar Month].[Calendar Day].MEMBERS,1).item(0))")

2.MDX字符串:

TAIL([Date].[Date - Calendar Month].[Calendar Day].MEMBERS,1).item(0)

立方体功能:

=CUBEMEMBER("connectionToCube","TAIL([Date].[Date - Calendar Month].[Calendar Day].MEMBERS,1).item(0)")

编辑

此工作簿还包含多个包含自定义集的数据透视表。这些集使用以下设置保存:

在此处输入图像描述

这会导致某种冲突吗?


编辑

另一个稍微复杂的 MDX 字符串是我用来捕获过去 7 天之前的 7 天期间的字符串:

MDX:

Tail([Date].[Date - Calendar Month].[Calendar Day].MEMBERS,1).item(0).lag(7):Tail([Date].[Date - Calendar Month].[Calendar Day].MEMBERS,1).item(0).lag(13)

立方体*功能:

=CUBESET("LiveDealer_LiveDealer2",("Tail([Date].[Date - Calendar Month].[Calendar Day].MEMBERS,1).item(0).lag(7):Tail([Date].[Date - Calendar Month].[Calendar Day].MEMBERS,1).item(0).lag(13)"))
4

1 回答 1

1

我没有找到任何不能在 Excel 多维数据集函数中使用的 MDX 函数。我尝试了针对 AdventureWorks 表格模型的多维数据集函数的变体,它们运行良好。在第一个示例中,您有:

=CUBESET("connectionToCube","PARALLELPERIOD([Date].[Date - Calendar Month].[Calendar Year],1,
TAIL([Date].[Date - Calendar Month].[Calendar Day].MEMBERS,1).item(0))")

在 AW 表格模型中,日期层次结构称为日历,具有年、学期、季度、月、日等级别。我的立方体功能是:

=CUBEMEMBER("AWCube","PARALLELPERIOD([Date].[Calendar].[Year],1,
TAIL([Date].[Calendar].[Day].MEMBERS,1).item(0))")

我不确定你为什么选择在那里使用 cubeset。你总是只返回一个项目,所以我将它设为一个多维数据集成员,这样它就可以直接返回该成员,而无需我为其添加标题。如果您在此处使用多维数据集而不添加标题,它将在 Excel 中返​​回一个空白单元格,但它可以正常工作。您可以通过使用该多维数据集在 excel 中编写一个 cuberankedmember 函数来检查这一点。

在你的第二个例子中,你有:

=CUBEMEMBER("connectionToCube",
"TAIL([Date].[Date - Calendar Month].[Calendar Day].MEMBERS,1).item(0)")

我的公式是:

=CUBEMEMBER("AWCube",
"TAIL([Date].[Calendar].[Day].MEMBERS,1).item(0)")

我看不出与此有任何重大差异,因此请检查您的成员名称和括号中是否存在任何小的差异。

于 2014-05-21T13:02:54.123 回答