我对数据仓库和MDX查询还比较陌生,意识到在下面的情况中可能没有正确使用MDX语法。
我正在使用SSAS 2005和MS SQL Server 2005,想要查询我的多维立方体,并使用来自同一个层次结构的多个成员(筛选的成员为“兄弟姐妹”),给定特定年份([2013])和按市场细分的行结果进行过滤。
WITH
MEMBER [Measures].[Value] AS Format([Measures].[Expected Sale Price EUR], '#,###')
MEMBER [Measures].[Pieces] AS Format([Measures].[Line Quantity], '#,###')
SELECT
CrossJoin(
{[Time].[Calendar Year].&[2013]},
{[Measures].[Value],[Measures].[Measures].[Pieces]})
ON COLUMNS,
{[Customers].[Markets].Members}
DIMENSION PROPERTIES MEMBER_NAME ON ROWS
FROM [Po System]
WHERE ({[Order Type].[Order Type].&[1],
[Order Type].[Order Type].&[5],
[Order Type].[Order Type].&[6]},
{[Customers].[Customers].&[1012],
[Customers].[Customers].&[1922]})
我得到的结果是该客户所属的整个市场的可量化指标的聚合。
问题在于,如果我仅在WHERE子句中使用[Customers]维度中的成员,并且只有当我不使用{ }括号将其包装时,我才会获得想要的结果——仅对客户[1012]进行数据汇总,正如它应该(使用我的原始数据源进行验证)。
以下是相同查询中的WHERE子句示例,它为我提供了正确的单个客户过滤结果:
WHERE ({[Order Type].[Order Type].&[1],
[Order Type].[Order Type].&[5],
[Order Type].[Order Type].&[6]},
[Customers].[Customers].&[1012])
在带有这个WHERE子句的查询中,我可以得到正确的结果,但只针对一个成员。
我经常使用BI Development Studio(v. 2005)中的Cube Browser验证我的立方体数据的完整性。
我还查看了SQL Server Profiler以获取由Cube Browser生成的查询,但是这些查询无法从Management Studio中执行,那里运行我的MDX查询进行测试。
对于我使用的语法有什么问题,您有任何想法吗?