2

我正忙着用这个把头发扯下来。我有一个有 1 个事实和大约 9 个维度的立方体。事实表中只有大约 120k 行,因此无论如何它都不是一个大数据库。

问题在于,使用我正在使用的报告软件(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]
4

1 回答 1

2

如果您能详细说明您的需求,那就太好了。

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

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

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

通过这种方式 - mstr 根据您的选择即时生成 mdx 查询。这就是为什么在 Visual Insight 中将某些属性拖到屏幕之前使用一些过滤器很重要的原因。

第二个选项是在架构级别将 MSTR 连接到 MDX 多维数据集。它读取多维数据集定义并创建存在于多维数据集中的属性和度量。它还允许您将 MDX 属性映射到项目属性以强制执行安全过滤器。通过这种方式,您可以构建常规报告(您也可以使用提示和过滤器...),并且可以从 mdx 多维数据集构建 i-cube。

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

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

于 2016-10-05T19:40:04.533 回答