MDX多级选择

MDX多级选择,mdx,Mdx,我有 现在我想在省='BeiJing'和设施='test'时查找地理数据。我该怎么办? 我编写的MDX代码如下: Geography Dimension -> Admin Hierarchy -> Province level -> District level -> Facility level. SELECT [Measures].[Internet Sales Amount] ON 0

我有

现在我想在省='BeiJing'和设施='test'时查找地理数据。我该怎么办? 我编写的MDX代码如下:

Geography Dimension
       -> Admin Hierarchy
          -> Province level
          -> District level
          -> Facility level.
SELECT 
  [Measures].[Internet Sales Amount] ON 0
 ,
    [Customer].[Customer Geography].[Country]
  * 
    [Customer].[Customer Geography].[State-Province] ON 1
FROM [Adventure Works];
SELECT 
  [Measures].[Internet Sales Amount] ON 0
 ,
    {[Country].[Country].[Australia]}
  * 
    {[State-Province].[State-Province].[Queensland]} ON 1
FROM [Adventure Works];

但它不起作用。设置特殊省份和设施时,如何将所有省份/地区/设施数据作为表格获取

AdvWrks
中,以下内容引发错误

查询(4,5)客户地理层次结构被多次使用 在交叉连接函数中

当我尝试运行以下操作时,会引发此错误:

        SELECT
        {} ON 0,
        {[Geography.Admin].[BeiJing].[All Geography.Admin].[test]} ON 1
FROM [EIDCube]
解决这一问题的方法是使用属性层次结构,
[Customer Geography]
用户层次结构的级别由这些属性层次结构组成,如下所示:

Geography Dimension
       -> Admin Hierarchy
          -> Province level
          -> District level
          -> Facility level.
SELECT 
  [Measures].[Internet Sales Amount] ON 0
 ,
    [Customer].[Customer Geography].[Country]
  * 
    [Customer].[Customer Geography].[State-Province] ON 1
FROM [Adventure Works];
SELECT 
  [Measures].[Internet Sales Amount] ON 0
 ,
    {[Country].[Country].[Australia]}
  * 
    {[State-Province].[State-Province].[Queensland]} ON 1
FROM [Adventure Works];
现在,如果我想要
澳大利亚
昆士兰
我可以交叉加入两个单一成员集:

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


编辑

将上述内容应用到您的结构中,您应该能够做到以下几点:

Geography Dimension
       -> Admin Hierarchy
          -> Province level
          -> District level
          -> Facility level.
SELECT 
  [Measures].[Internet Sales Amount] ON 0
 ,
    [Customer].[Customer Geography].[Country]
  * 
    [Customer].[Customer Geography].[State-Province] ON 1
FROM [Adventure Works];
SELECT 
  [Measures].[Internet Sales Amount] ON 0
 ,
    {[Country].[Country].[Australia]}
  * 
    {[State-Province].[State-Province].[Queensland]} ON 1
FROM [Adventure Works];

我想你可以用这个:

SELECT 
  {[Measures].[someMeasureInCube]} ON 0
 ,
  {[Province].[Province].[BeiJing]} 
* {[Facility].[Facility].[test]} ON 1
FROM [EIDCube];
编辑1:我以前的答案是错误的

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

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

假设您的层次结构是

SELECT
        {} ON 0,
        ([Geography].[Admin].[BeiJing],[Geography].[Admin2].[Facility].[test]) ON 1
FROM [EIDCube]
这里是MDX的长途跋涉(短途跋涉是直接在查询中输入值,这出人意料地不起作用)


为结构提供的名称与查询中的名称不匹配!你说的是
Admin Hierarchy
,所以我希望有一个名为
[Admin]
的层次结构,但在脚本中它说的是
[Geography.Admin]
,而我希望看到的是
[Geography].[Admin]
嗨,安吉拉。我们中有人以任何方式帮助过你吗?我们都花了时间试图提供帮助-你有时间反馈我们的答案吗?@polux2你刚刚尝试创建一个由来自同一层次结构的两个成员组成的元组-这怎么可能有效?@AngelaTian此技术有效-我使用
AdvWrks
显示的脚本是一个经过充分测试的脚本-请适应您的环境。我不知道你的确切环境,因为你最初的问题没有给出足够的细节,所以我的最后一个脚本是部分猜测工作。请在您的初始问题中添加SSMS的屏幕打印,以便我们都能看到您的层次结构和级别的确切名称。