在 MDX 中添加多个计算过滤器
Add multiple calculating filters in MDX
我真的是 MDX 的新手,但过去两天我一直在寻找答案但没有成功。因此,非常感谢您的帮助和耐心等待。
我正在尝试查询具有多维过滤器的多维数据集,我意识到那里已经有很多类似的问题,比如 this or 。
事实是,我没有指定我要查找的特定内容,而是尝试设置过滤器来挑选以特定字符串开头的所有记录。这需要过滤器中的 left
函数(即计算过滤器?),但我无法将它们很好地融入代码中。
我失败的代码是这样的(两个过滤器应该是AND
关系)
Select Non Empty ([Measures].[Sales]) ON 0
FROM [Cube_Name]
WHERE
(
FILTER
(
[Customer].[CustomerID].Members, Left([Customer].[CustomerID].CurrentMember.Name,4)="ABCD"),
[Product].[ProductID].Members, Left([Product].[ProductID].CurrentMember.Name,3)="EFG")
)
)
(我的试用是根据上次回答here。)
我还读到有一些解决方法,例如 CROSSJOIN
WITH
AGGREGATE
或 Sub-SELECT
,但我对 1) 如何做一无所知将条件纳入其中; 2)性能(听说CROSSJOIN
会很慢)。
我不确定是否应该在这里提及它,但我实际上是通过使用 ADOMB.Cellset
对象从 Excel VBA 实现 MDX。它只给出了我在 Cellset.Items(0)
下实施的查询的总计(没有更多项目)。
谢谢!
您需要将两组分成两个过滤器:
Select
Non Empty [Measures].[Sales] on 0
From [Cube_Name]
Where
(
Filter(
[Customer].[CustomerID].[CustomerID].Members,
Left(
[Customer].[CustomerID].CurrentMember.Name,
4
) = "ABCD"
),
Filter(
[Product].[ProductID].[ProductID].Members,
Left(
[Product].[ProductID].CurrentMember.Name,
3
) = "EFG"
)
)
我真的是 MDX 的新手,但过去两天我一直在寻找答案但没有成功。因此,非常感谢您的帮助和耐心等待。
我正在尝试查询具有多维过滤器的多维数据集,我意识到那里已经有很多类似的问题,比如 this or
事实是,我没有指定我要查找的特定内容,而是尝试设置过滤器来挑选以特定字符串开头的所有记录。这需要过滤器中的 left
函数(即计算过滤器?),但我无法将它们很好地融入代码中。
我失败的代码是这样的(两个过滤器应该是AND
关系)
Select Non Empty ([Measures].[Sales]) ON 0
FROM [Cube_Name]
WHERE
(
FILTER
(
[Customer].[CustomerID].Members, Left([Customer].[CustomerID].CurrentMember.Name,4)="ABCD"),
[Product].[ProductID].Members, Left([Product].[ProductID].CurrentMember.Name,3)="EFG")
)
)
(我的试用是根据上次回答here。)
我还读到有一些解决方法,例如 CROSSJOIN
WITH
AGGREGATE
或 Sub-SELECT
,但我对 1) 如何做一无所知将条件纳入其中; 2)性能(听说CROSSJOIN
会很慢)。
我不确定是否应该在这里提及它,但我实际上是通过使用 ADOMB.Cellset
对象从 Excel VBA 实现 MDX。它只给出了我在 Cellset.Items(0)
下实施的查询的总计(没有更多项目)。
谢谢!
您需要将两组分成两个过滤器:
Select
Non Empty [Measures].[Sales] on 0
From [Cube_Name]
Where
(
Filter(
[Customer].[CustomerID].[CustomerID].Members,
Left(
[Customer].[CustomerID].CurrentMember.Name,
4
) = "ABCD"
),
Filter(
[Product].[ProductID].[ProductID].Members,
Left(
[Product].[ProductID].CurrentMember.Name,
3
) = "EFG"
)
)