小编Art*_*hur的帖子

MDX - 非交叉的大交叉连接 - 如何优化性能

我在总帐管理系统代码块的基础上在icCube中构建了一个模型,该代码块具有以下维度(非限制性):

  • 时间
  • 实体
  • 成本中心
  • 帐户
  • 公司间派对
  • 项目
  • 活动
  • 金额(这是值)

将此模型加载到工具Planning中时,如果x轴上的3个以上维度折叠到底层,则会出现性能问题.

我试图检查icCube是否可以更好地处理这个问题,但是3维的语句花了我超过1700秒:

select [Dec] on 0
, non empty { Descendants([Account].[Account].[Total],,leaves) }
     * { Descendants([Activity].[Activity].[Total],,leaves) }
     * { Descendants([CostCenter].[CostCenter].[Total],,leaves) } on 1
from finance
Run Code Online (Sandbox Code Playgroud)

在行上具有多个维度的原因是用户希望尽可能多地查看代码块的细节,优选地是完整的代码块.

我受到以下事实的挑战:其他工具可以非常轻松地处理这类事情,因为它没有OLAP数据库底层,但它使用层次结构直接在数据单元上查询.在Excel中查询数据的提取时获得相同的性能(没有太多的数据行).

有关数据的信息:

  • 维度非常巨大:400个帐户,6000多个活动,50个实体,50​​0个CostCenters
  • 尺寸活动和项目非常平坦(几乎没有结构)
  • 只有50.000金额,因此数据非常稀少

有任何建议或暗示如何解决这个问题?

performance mdx iccube

5
推荐指数
1
解决办法
2110
查看次数

MDX查询以查找icCube中最后一个非空值

在Chris Web 的帖子之后,我正在寻找一种快速查找客户最后购买的方法.

我使用如下的MDX语句:

WITH FUNCTION previous_buys() AS tail( nonempty({NULL:[Time].[Time].currentmember.prevmember} ,[measures].[sales amt]),1)
MEMBER [last buy] as previous_buys().(0).key

select [measures].[last buy] on 0
,      [Customers].[Customers].[name].members on 1
from [Store Sales]
where [Time].[Time].[day].&[2015-12-20T00:00:00.000]
Run Code Online (Sandbox Code Playgroud)

这给出了预期,但需要很长时间.是否有一种简单的方法来加速这种查询.由于icCube与Microsoft MDX有所不同,我不能只复制Chris Web的解决方案.

有任何想法吗?

performance mdx iccube

5
推荐指数
1
解决办法
509
查看次数

标签 统计

iccube ×2

mdx ×2

performance ×2