MDX多级选择

时间:2015-06-05 02:56:41

标签: mdx

我有

Geography Dimension
       -> Admin Hierarchy
          -> Province level
          -> District level
          -> Facility level.

现在我想查找省='北京'和设施='测试'。我应该怎么做 ? 我写这样的MDX代码:

        SELECT
        {} ON 0,
        {[Geography.Admin].[BeiJing].[All Geography.Admin].[test]} ON 1
FROM [EIDCube]

但它没有用。当我设置特殊省份和设施时,如何将所有省/区/设施数据作为表格?

3 个答案:

答案 0 :(得分:0)

AdvWrks中,以下内容会引发错误

  

查询(4,5)客户地理层次结构不止一次使用   在Crossjoin函数中。

当我尝试运行以下内容时抛出此内容:

SELECT 
  [Measures].[Internet Sales Amount] ON 0
 ,
    [Customer].[Customer Geography].[Country]
  * 
    [Customer].[Customer Geography].[State-Province] ON 1
FROM [Adventure Works];

解决这个问题的方法是使用[Customer Geography]用户层次结构的级别构成的属性层次结构,如下所示:

SELECT 
  [Measures].[Internet Sales Amount] ON 0
 ,
    [Country].[Country]
  * 
    [State-Province].[State-Province] ON 1
FROM [Adventure Works]; 

现在,如果我想要AustraliaQueensland,我可以交叉加入几个单一成员集:

SELECT 
  [Measures].[Internet Sales Amount] ON 0
 ,
    {[Country].[Country].[Australia]}
  * 
    {[State-Province].[State-Province].[Queensland]} ON 1
FROM [Adventure Works];

结果如下:

enter image description here

修改

将上述内容应用到您的结构中,您应该可以执行以下操作:

SELECT 
  {[Measures].[someMeasureInCube]} ON 0
 ,
  {[Province].[Province].[BeiJing]} 
* {[Facility].[Facility].[test]} ON 1
FROM [EIDCube];

答案 1 :(得分:0)

假设你的等级结构是

Geography-->Geography.Admin-->Province-->District-->Facility
(dimension) (hierarchy)       (level 1)  (level 2)  (level 3)

这是MDX要做的很长的事情(直接在查询中提供值的简短方法,这出乎意料地不起作用)

select [Geography].[Geography.Admin].CHILDREN 
    having 
        [Geography].[Geography.Admin].currentmember.member_caption = "test" and
        ancestors([Geography].[Geography.Admin].currentmember, 3).item(0).member_caption = "BeiJing"
    on 1,
{} on 0
from EIDCube]

答案 2 :(得分:-1)

我认为你可以使用它:

SELECT
        {} ON 0,
        ([Geography].[Admin].[BeiJing],[Geography].[Admin].[Province].[District].[test]) ON 1
FROM [EIDCube]

编辑1:我之前的回答是错误的。

所以现在我认为更好的解决方案是为仅由级别 [Facility] 组成的地理维度创建新的层次结构 [admin2] 并使用此查询。

SELECT
        {} ON 0,
        ([Geography].[Admin].[BeiJing],[Geography].[Admin2].[Facility].[test]) ON 1
FROM [EIDCube]