Ssas 处理MDX查询的逻辑顺序

Ssas 处理MDX查询的逻辑顺序,ssas,mdx,olap,Ssas,Mdx,Olap,MDX脚本中子句的求值顺序是什么 WITH MEMBER measures.A AS ... MEMBER measures.B AS ... SET S1 AS ... SELECT { measures.A ,measures.B ,measures.x } ON COLUMNS {S1} HAVING <condition> on ROWS FROM [Cube] WHERE ({S2}) 与 成员措施A如。。。 成员措施B作为

MDX
脚本中子句的求值顺序是什么

WITH 
  MEMBER measures.A AS ...
  MEMBER measures.B AS ...
  SET S1 AS ...
SELECT 
  {
    measures.A
   ,measures.B
   ,measures.x
  } ON COLUMNS
  {S1} HAVING <condition> on ROWS
FROM [Cube]
WHERE ({S2})
与
成员措施A如。。。
成员措施B作为。。。
将S1设置为。。。
挑选
{
措施A
,措施B
,measures.x
}柱上
{S1}行上有
从[立方体]
其中({S2})
  • FROM
  • 其中
  • 选择
  • 具有
  • ?

    但是可能没有那么简单,因为
    成员
    集合
    在上下文方面的处理是不同的-那么如果这个顺序是正确的,上下文如何配合呢

    我想说:

  • 来自(包括潜在的子选择)
  • 在哪里
  • 在WITH子句中设置和成员位置
  • 并行地为所有查询轴(列、行等)构建元组列表,忽略非空和
  • 所有轴交点的单元值
  • 根据NON EMPTY和Have的请求,从轴中移除元组
  • 在步骤3中,我所说的“成员位置”是指该成员存在的信息,以及该成员在该层次结构中所处的层次结构以及可能位于该层次结构中的父级下的信息。这不涉及成员定义表达式。这将在步骤5和6中进行评估。但是步骤4需要位置

    轴的并行计算意味着在查询处理中轴之间没有关系


    还要注意,这是概念视图。实际上,第6步可能发生在第4步的处理过程中,或者优化器决定的任何正确的执行顺序,只要结果相同。

    希望听到投票结束此帖子的人的评论,因为它似乎与编程无关。我很难找到一个
    MDX
    问题,这个问题更多的是关于编程,而不是脚本处理的顺序:它是所有
    MDX
    脚本结构的基础。+1
    概念视图
    是完美的,因为这是构建这些脚本时需要记住的——即,而不是处理器的观点,这是我目前想弄清楚的。@FrankPI在OP中没有提到,但您能在
    subselect
    s中添加吗?@FrankPI
    WITH
    子句中的自定义命名集是上下文无关的,因为axes元组是在步骤4中创建的?@whytheq subselect是FROM的一部分,我延长了我的回答。和命名集对来自何处的上下文更改敏感,但对来自查询轴的上下文更改不敏感。@FrankPl-您有任何博客引用吗?我有兴趣详细了解它。