For loop MDX查询过滤函数,用于多个维度;或;条件
我有一个mdx查询,如下所示,其中包含产品类别名称和产品名称维度的过滤条件。我需要产品类别和产品名称的匹配记录。For loop MDX查询过滤函数,用于多个维度;或;条件,for-loop,filter,mdx,dimensions,For Loop,Filter,Mdx,Dimensions,我有一个mdx查询,如下所示,其中包含产品类别名称和产品名称维度的过滤条件。我需要产品类别和产品名称的匹配记录。 SELECT {[Measures].[Inventory On Order Quantity]} ON COLUMNS , Filter ( [Product].[Product Category Name].[Product Category Name].MEMBERS , [Product].[Product Cat
SELECT
{[Measures].[Inventory On Order Quantity]} ON COLUMNS
,
Filter
(
[Product].[Product Category Name].[Product Category Name].MEMBERS
,
[Product].[Product Category Name].Member_value = 'Audio'
OR
[Product].[Product Category Name].Member_value = 'Cameras and camcorders'
)
*
Filter
(
[Product].[Product Name].[Product Name].MEMBERS
,
[Product].[Product Name].Member_value
= 'A. Datum Advanced Digital Camera M300 Azure'
OR
[Product].[Product Name].Member_value
= 'A. Datum Advanced Digital Camera M300 Black'
OR
[Product].[Product Name].Member_value
= 'A. Datum Advanced Digital Camera M300 Grey'
) ON ROWS
FROM [Operation];
由于介于“产品类别名称”和“产品名称”之间的“*”,它在“产品类别名称”和“产品名称”之间应用“和”条件。
SELECT
{[Measures].[Inventory On Order Quantity]} ON COLUMNS
,
Filter
(
[Product].[Product Category Name].[Product Category Name].MEMBERS
,
[Product].[Product Category Name].Member_value = 'Audio'
OR
[Product].[Product Category Name].Member_value = 'Cameras and camcorders'
)
*
Filter
(
[Product].[Product Name].[Product Name].MEMBERS
,
[Product].[Product Name].Member_value
= 'A. Datum Advanced Digital Camera M300 Azure'
OR
[Product].[Product Name].Member_value
= 'A. Datum Advanced Digital Camera M300 Black'
OR
[Product].[Product Name].Member_value
= 'A. Datum Advanced Digital Camera M300 Grey'
) ON ROWS
FROM [Operation];
谁能帮我使它“或”的条件,我看到了下面的链接,但无法使它工作
我不知道您的成员的确切姓名,因此您需要使用这些名称,但我怀疑您可以对
元组的集合使用Exists
函数,该集合的维度与交叉连接的层次结构相同:
SELECT
{[Measures].[Inventory On Order Quantity]} ON COLUMNS
,Exists
(
{
[Product].[Product Category Name].[Product Category Name].MEMBERS
*
[Product].[Product Name].[Product Name].MEMBERS
}
,{
(
[Product].[Product Category Name].[Product Category Name].[Audio]
,[Product].[Product Name].[Product Name].[(All)]
)
,(
[Product].[Product Category Name].[Product Category Name].[Cameras and camcorders]
,[Product].[Product Name].[Product Name].[(All)]
)
,(
[Product].[Product Category Name].[Product Category Name].[(All)]
,[Product].[Product Name].[Product Name].[A. Datum Advanced Digital Camera M300 Azure]
)
,(
[Product].[Product Category Name].[Product Category Name].[(All)]
,[Product].[Product Name].[Product Name].[A. Datum Advanced Digital Camera M300 Black]
)
,(
[Product].[Product Category Name].[Product Category Name].[(All)]
,[Product].[Product Name].[Product Name].[A. Datum Advanced Digital Camera M300 Grey]
)
}
) ON 1
FROM [Operation];
以下是一个AdvWks脚本,可以让所有客户了解他们各自的性别和婚姻状况:
SELECT
{} ON 0
,
[Customer].[Customer].[Customer]*
[Customer].[Gender].[Gender]*
[Customer].[Marital Status].[Marital Status] ON 1
FROM [Adventure Works];
然后,为了找到男性或已婚女性,我们会这样做:
SELECT
{} ON 0
,Exists
(
[Customer].[Customer].[Customer]*
[Customer].[Gender].[Gender]*
[Customer].[Marital Status].[Marital Status]
,{
(
[Customer].[Customer].[(All)]
,[Customer].[Gender].&[M]
,[Customer].[Marital Status].[(All)]
)
,(
[Customer].[Customer].[(All)]
,[Customer].[Gender].[(All)]
,[Customer].[Marital Status].&[M]
)
}
) ON 1
FROM [Adventure Works];
好的-我想我明白了-例如,您可能想要Cat名称为“Cameras and camcorders”的数据,然后产品名称可以是任何内容。或者产品名称是“A.Datum Advanced Digital Camera M300 Azure”,Cat名称是什么?因为它们是相同的维度,所以交叉连接*
强制执行自动存在行为-这是意料之中的。不过会有办法的——我现在正在演戏。