2013-08-20 46 views
2

我忙着用这件东西撕掉我的头发。我有一个事实和9个维度的立方体。事实表中只有大约120k行,所以它不是一个大数据库。SSAS立方体设计 - MDX很慢

问题是,在我使用的报告软件(Microstrategy)中,它生成的MDX获取所有数据并将其用作数据源(而不是在操作报告时生成MDX)。无论哪种方式,当添加几个字段时,查询很快变得不可用,并且实际上内存不足。我怀疑它与我的多维数据集设计有关。

例如,它对所有属性进行交叉连接,即使它们在同一维上,就好像它没有意识到它们之间存在关系。

我玩过BIDS中的属性关系(尽可能使关系僵化),但似乎没有任何区别。

生成的MDX如下所示。我没有自定义MDX的选项,但我确定我没有告诉它关系是正确的。

我曾尝试发布Microstrategy支持网站上没有太多的喜悦。

任何援助将不胜感激。

感谢

WITH SET AS '{[Dim Date].[Date].[Date].AllMembers}' 
... 
(all my dimensions appear here) 
... 
select {[Measures].[Total Purchases], [Measures].[New Cards Issued], [Measures].[New  Applications Received], [Measures].[New Applications Declined], [Measures].[New  Applications Approved], [Measures].[New Accounts Activated]} on columns, 
non empty CROSSJOIN(CROSSJOIN(CROSSJOIN(CROSSJOIN(CROSSJOIN(CROSSJOIN(CROSSJOIN(CROSSJOIN(CROSSJOIN(C ROSSJOIN(CROSSJOIN(CROSSJOIN(CROSSJOIN(CROSSJOIN(CROSSJOIN(CROSSJOIN(CROSSJOIN([dim0_select_members], [dim1_select_members]), [dim2_select_members]), [dim3_select_members]), [dim4_select_members]), [dim5_select_members]), [dim6_select_members]), [dim7_select_members]), [dim8_select_members]), [dim9_select_members]), [dim10_select_members]), [dim11_select_members]), [dim12_select_members]), [dim13_select_members]), [dim14_select_members]), [dim15_select_members]), [dim16_select_members]), [dim17_select_members]) on rows 
from [Cards_Transactions] 
+0

这是否意味着Microstrategy发布的查询包含多维数据集中的所有度量和所有属性,而与用户发出的查询无关?顺便说一句:Analysis Services在一个维度内使用'autoexists'。这意味着在一个维度内,“CrossProduct”只会传递组合存在的行。这与您定义的关系无关。 – FrankPl

+0

属性是否有父子关系?在过去,我在MicroStrategy中使用了一些SSAS多维数据集,没有遇到任何麻烦。 – TheMacroGuru

回答

2

这将是很好,如果你可以在你需要详细说明。

是否适合最终用户或开发人员? 是否允许用户在mdx多维数据集上执行自助服务? 他们查询的数据是否需要实时生效(现在已更新),还是可以更新至前一小时\?......?

有两种方法可以连接到MSTR中的MDX源。

一种方法是 - 直接连接通过导入数据接口。

用这种方式 - mstr根据您的选择即时生成mdx查询。这就是为什么在Visual insight中将某些属性拖到屏幕之前使用某些过滤器非常重要的原因。第二个选项是connect MSTR to the MDX cube at the schema level。 它读取多维数据集定义并创建多维数据集中存在的属性和指标。它还允许您将MDX属性映射到项目属性以实施安全过滤器。 通过这种方式,您可以构建常规报告(您也可以使用提示和过滤器...),并且可以从mdx多维数据集构建i-cube。

您可能会发现第二个选项更适合您的需求。

由于您的MDX立方体非常小我建议您创建一个i立方体+增量刷新报告来更新它(例如 - 每5分钟更新一次今天的数据)。