Mdx 查询以仅显示二维中的匹配元素

Mdx 查询以仅显示二维中的匹配元素,mdx,Mdx,简短问题: 知道如何从一个维度条目中提取名称并将其作为筛选器应用于另一个维度条目吗 详细描述:我的立方体有制造商和销售商的尺寸,我只需要他们自己的销售。维度是从源中不同的表加载的,但具有完全相同名称的条目 Manufacturer Seller A A * A D B B * C C * C A C

简短问题: 知道如何从一个维度条目中提取名称并将其作为筛选器应用于另一个维度条目吗

详细描述:我的立方体有制造商和销售商的尺寸,我只需要他们自己的销售。维度是从源中不同的表加载的,但具有完全相同名称的条目

Manufacturer   Seller
  A              A       *
  A              D
  B              B       *
  C              C       *
  C              A
  C              D
A、 B和C自己销售他们的产品,A和C也通过经销商D销售。C也通过A销售。我只想筛选匹配的标记行名称

在SQL中,这很简单,或者多维数据集可以很容易地增强以标记自己的销售,但这两个选项都不可用。我需要按原样查询多维数据集

我尝试使用STRTOMEMBER和CURRENTMEMBER,比如NAME和MEMBER\u NAME:

STRTOMEMBER("[Dim Seller].[Seller].[" + [Dim Producer].[Producer].CURRENTMEMBER.NAME + "]
这在语法上确实有效,但CURRENTMEMBER似乎总是对ALL求值,并为ALL元素提供正确的度量值,而不是匹配名称的度量值

我还尝试创建一个将两个名称设置为相等的位置

[Dim Seller].[Seller].CURRENTMEMBER.NAME = [Dim Producer].[Producer].CURRENTMEMBER.NAME
但这是非常SQL的,在MDX中无效

整个查询如下所示:

SELECT
    NON EMPTY {
        [Measures].[Value]
    } ON COLUMNS
    , NON EMPTY { (
        {
            [Dim Producer].[Producer].[A]
            , [Dim Producer].[Producer].[B]
            , [Dim Producer].[Producer].[C]
        }
        * [Dim Seller].[Seller].[Seller].ALLMEMBERS
// This line needs to be trimmed to same name as producer
    ) } ON ROWS
FROM
    [Cube]
生产者列表来自连接到查询的配置文件和字符串,可能会发生更改。让第二个卖家列表保持同步将是一个负担,但当C通过a销售时也会产生错误的结果

知道如何从一个维度条目中提取名称并将其应用于另一个维度条目吗?

使用GENERATE函数为您完成这项工作

with set Producers as
{[Dim Producer].[Producer].[A]
,[Dim Producer].[Producer].[B]
,[Dim Producer].[Producer].[C]}

set Sellers as
[Dim Seller].[Seller].members

//For every producer, get the seller who shares the same name.
set ProducersHavingSameNameAsSellers as
GENERATE(Producers, GENERATE(Sellers, filter
                                                (Sellers, 
                                                    [Dim Seller].[Seller].CURRENTMEMBER.MEMBER_NAME = 
                                                    [Dim Producer].[Producer].CURRENTMEMBER.MEMBER_NAME
                                                )
                            )
        )

SELECT
NON EMPTY [Measures].[Value] ON COLUMNS,
ProducersHavingSameNameAsSellers ON ROWS
FROM [Cube]
使用GENERATE函数为您完成这项工作

with set Producers as
{[Dim Producer].[Producer].[A]
,[Dim Producer].[Producer].[B]
,[Dim Producer].[Producer].[C]}

set Sellers as
[Dim Seller].[Seller].members

//For every producer, get the seller who shares the same name.
set ProducersHavingSameNameAsSellers as
GENERATE(Producers, GENERATE(Sellers, filter
                                                (Sellers, 
                                                    [Dim Seller].[Seller].CURRENTMEMBER.MEMBER_NAME = 
                                                    [Dim Producer].[Producer].CURRENTMEMBER.MEMBER_NAME
                                                )
                            )
        )

SELECT
NON EMPTY [Measures].[Value] ON COLUMNS,
ProducersHavingSameNameAsSellers ON ROWS
FROM [Cube]
HAVING子句可能会帮助您:

SELECT
    NON EMPTY {
        [Measures].[Value]
    } ON COLUMNS
    , NON EMPTY { 
        {
              [Dim Producer].[Producer].[A]
            , [Dim Producer].[Producer].[B]
            , [Dim Producer].[Producer].[C]
        }
        * [Dim Seller].[Seller].[Seller].ALLMEMBERS
    } 
HAVING 
    [Dim Seller].[Seller].CURRENTMEMBER.MEMBER_NAME = 
            [Dim Producer].[Producer].CURRENTMEMBER.MEMBER_NAME
ON ROWS
FROM
    [Cube]
HAVING子句可能会帮助您:

SELECT
    NON EMPTY {
        [Measures].[Value]
    } ON COLUMNS
    , NON EMPTY { 
        {
              [Dim Producer].[Producer].[A]
            , [Dim Producer].[Producer].[B]
            , [Dim Producer].[Producer].[C]
        }
        * [Dim Seller].[Seller].[Seller].ALLMEMBERS
    } 
HAVING 
    [Dim Seller].[Seller].CURRENTMEMBER.MEMBER_NAME = 
            [Dim Producer].[Producer].CURRENTMEMBER.MEMBER_NAME
ON ROWS
FROM
    [Cube]

请投票选出答案/如果它对你有帮助,请将其标记为答案否,对不起,我需要收回我以前的成功评论。它不能正常工作。卖方同时也是制造商的组合通过原始问题示例的第5行。我希望这很容易解决,并且一般的方法是正确的。现在你把我弄糊涂了!我以为是关于卖家和制作人的!我的回答给了你们同时也是生产者的销售者。你到底想要什么?制造商只是生产者的另一个词,抱歉,它是相同的维度。我需要再调查一下,这些数字看起来是正确的。我自己可能在实际查询中引入了一个不需要的错误交叉连接,而您的生成部分似乎还可以!向上投票并回答,因为我很确定我现在明白了!请投票选出答案/如果它对你有帮助,请将其标记为答案否,对不起,我需要收回我以前的成功评论。它不能正常工作。卖方同时也是制造商的组合通过原始问题示例的第5行。我希望这很容易解决,并且一般的方法是正确的。现在你把我弄糊涂了!我以为是关于卖家和制作人的!我的回答给了你们同时也是生产者的销售者。你到底想要什么?制造商只是生产者的另一个词,抱歉,它是相同的维度。我需要再调查一下,这些数字看起来是正确的。我自己可能在实际查询中引入了一个不需要的错误交叉连接,而您的生成部分似乎还可以!向上投票并回答,因为我很确定我现在明白了!这个解决方案看起来不那么复杂,更短,效果也很好。与之前给出的解决方案相比,我更喜欢它。这个解决方案看起来不那么复杂,更短,效果也很好。我喜欢它胜过以前给我的那个。