我正在尝试使用子查询来计算行数(每个州的邮政编码)... 请帮我理解以下行为。 MDX:
WITH
SET [rows] AS
{[Customer].[Postal Code].members}
MEMBER [Measures].[RowsCount] AS
Count
(
[rows]
)
MEMBER [Measures].[RowsCount1] AS
Count
(
{[Customer].[Postal Code].members}
)
SELECT
{
[Measures].[RowsCount]
,[Measures].[RowsCount1]
} ON columns
FROM
(
SELECT
(
{[Customer].[State Province Name].&[Hamburg]}
) ON Columns
FROM [Analysis Services Tutorial]
)
修改
以下陈述将是一个解决方案:
MEMBER [Measures].[RowsCount1] AS
Count
(
{[Customer].[Postal Code].members} * {[Customer].[State Province Name].&[Hamburg]}
)
但是我想通过使用CurrentMember
函数实现它,就像这样(不起作用):
MEMBER [Measures].[RowsCount1] AS
Count
(
{[Customer].[Postal Code].members} * {[Customer].[State Province Name].CurrentMember}
)
答案 0 :(得分:0)
SUBSELECT
中的mdx
与sql中的SUBQUERY
不同 - 它不一定是子查询方式的完整过滤器 - 因此结果不同。
但是使用AdvWrks我很难复制你报告的行为。
我怀疑您可以将脚本修改为以下之一以获得所需的结果
MEMBER [Measures].[RowsCount1] AS
Count
(
[DIM bla].[HIER bla].[Level]
*
{[DIM bla2].[HIER bla2].&[test]}
)
或者代替test
使用全部成员:
MEMBER [Measures].[RowsCount1] AS
Count
(
[DIM bla].[HIER bla].[Level]
*
{[DIM bla2].[HIER bla2].[All]}
)
答案 1 :(得分:0)
如果在where子句和子查询中添加切片,则上下文似乎不同:您可以通过slicer-or-sub-cube获取引用。但仍然不知道为什么[RowCount]和[RowCount1]返回diff值。
我在adv cube上做了一个测试,你在下面添加了列轴,遇到了类似的情况,希望对你有帮助。
WITH MEMBER [Measures].[count product of bikes] AS
count(EXTRACT( [Product].[Product].[Product]* [Product].
[Category].CurrentMember, [Product].[Product]))
SELECT
{
[Measures].[count product of bikes]
} on 0
,{
tail([Product].[Category].MEMBERs).item(0).item(0)
} on 1
from (SELECT{[Product].[Category].[Category].[Bikes]} ON 0 FROM [Adventure Works])
使用子查询,设置[Product]。[Category]。外部1轴上的.MEMBER返回两个成员[Product]。[Category]。[ALL]和[Product]。[Category]。[Bikes],并设置轴1到[Bike]的属性[Product]。[Category]的默认成员,然后计算出的成员[自行车的产品]将返回CurrentMember的预期值。