MDX 查询:如果与其他维度无关,如何在查询结果中显示虚拟集?
Posted
技术标签:
【中文标题】MDX 查询:如果与其他维度无关,如何在查询结果中显示虚拟集?【英文标题】:MDX Query : How I can show dummy set in query result if it is not related to other dimension? 【发布时间】:2017-08-19 10:19:06 【问题描述】:需要您的帮助来解决客户报告中的一个问题。
请检查下面 2 个 mdx 查询的结果。
注意:我使用了联合运算符,以便我可以将 2 个成员的结果与 1 个(法国和德国合并)合并。 在 Union 中使用 Exist 函数,因为需要检查函数中的第一个集合是否与第二个集合的维度成员相关。
我使用 Union 和 Exist 来实现 OR 条件。
在第一个 MDX 查询中,您可以在结果集中找到虚拟集(法国和德国),但在第二个 MDX 中您找不到虚拟集(法国和德国),因为产品类别层次结构与国家/地区相关,并且存在函数检查dummy set 不是 Country 层次结构的实际成员,因此它会从结果集中删除 dummy set。
是否有任何方法或替代方法可以强制存在函数在最终结果(mDX 2)中显示虚拟集?
是否有任何方法或替代方法可以强制存在函数在最终结果(mDX 2)中显示虚拟集?
MDX 1)
WITH
SET [Combined] AS
[Customer].[Customer Geography].[Country].&[France],
[Customer].[Customer Geography].[Country].&[Germany]
MEMBER [Customer].[Customer Geography].[France & Germany] AS Aggregate([Combined])
SELECT
[Measures].[Internet Sales Amount] ON 0,
Union(
Except([Customer].[Customer Geography].[Country], [Combined]),
[Customer].[Customer Geography].[France & Germany]
) ON 1
FROM [Adventure Works]
结果 MDX 1
Internet Sales Amount
Australia $9,061,000.58
Canada $1,977,844.86
United Kingdom $3,391,712.21
United States $9,389,789.51
France & Germany $5,538,330.05
MDX 查询 2)
WITH
SET [Combined] AS
[Customer].[Customer Geography].[Country].&[France],
[Customer].[Customer Geography].[Country].&[Germany]
MEMBER [Customer].[Customer Geography].[France & Germany] AS Aggregate([Combined])
SELECT
[Measures].[Internet Sales Amount] ON 0,
Union( Exists(Except([Customer].[Customer Geography].[Country], [Combined]),
[Product].[Product Categories].[Category].&[3]
, "Internet Sales") ,
Exists([Customer].[Customer Geography].[France & Germany],[Product].[Product Categories].[Category].&[3]
, "Internet Sales"))
ON 1
FROM [Adventure Works]
结果 MDX 查询 2)
Internet Sales Amount
Australia $9,061,000.58
Canada $1,977,844.86
United Kingdom $3,391,712.21
United States $9,389,789.51
【问题讨论】:
【参考方案1】:为什么要在第二个查询中使用两次exists?
WITH
SET [Combined] AS
[Customer].[Customer Geography].[Country].&[France],
[Customer].[Customer Geography].[Country].&[Germany]
MEMBER [Customer].[Customer Geography].[France & Germany] AS Aggregate([Combined])
SELECT
[Measures].[Internet Sales Amount] ON 0,
Union(
Exists(
Except([Customer].[Customer Geography].[Country], [Combined]),
[Product].[Product Categories].[Category].&[3]
,"Internet Sales"
)
//,Exists(
// [Customer].[Customer Geography].[France & Germany]
// ,[Product].[Product Categories].[Category].&[3]
// ,"Internet Sales"
// )
,[Customer].[Customer Geography].[France & Germany]
)
ON 1
FROM [Adventure Works];
【讨论】:
以上是关于MDX 查询:如果与其他维度无关,如何在查询结果中显示虚拟集?的主要内容,如果未能解决你的问题,请参考以下文章
当 MDX 查询包含 2 个或更多级别的相同维度时,速度较慢