SSAS Cube 设计 - MDX 非常慢

标签 ssas mdx cube cross-join microstrategy

我正忙着用这个来撕我的头发。我有一个包含 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]

最佳答案

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

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

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

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

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

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

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

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

关于SSAS Cube 设计 - MDX 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18332663/

相关文章:

azure - 为什么 Azure Analysis Services 不支持多维模型?

MDX 查询包含来自同一层次结构的 2 个维度

ssas - MDX currentMember 让我出错

http - 在没有直接数据库连接的情况下跨域访问 SSAS 多维数据集

python - 如何在 python 中绘制数据立方体

ssas - 根据条件对数据透视表进行 MDX 查询

deployment - 如何在表格模型部署期间传递数据源的凭据?

azure - 用于区分 Azure Analysis Services 和 SQL Server Analysis Services 的查询

sql-server - SSAS Cube 中的条件颜色格式

hadoop - Apache Kylin - 创建立方体时没有平均度量