我是MDX的新手,查看此查询,为什么[Top Product Sales]中交叉联接中的item(0)仅返回Internet Sales Amount?交叉连接是否应该返回一组(产品,互联网销售额)?那么为什么item(0)会返回互联网销售额而不是产品?
WITH
MEMBER [Measures].[Top Product Sales] AS
{
EXISTING
TopCount(
[Product].[Product].[Product].Members,
1,
([Measures].[Internet Sales Amount])
) *
{[Measures].[Internet Sales Amount]}
}.Item(0)
,FORMAT_STRING="Currency"
SELECT
{
([Measures].[Internet Sales Amount]),
([Measures].[Top Product Sales])
} ON COLUMNS,
{
([Date].[Calendar Year].[CY 2005]),
([Date].[Calendar Year].[CY 2006]),
([Date].[Calendar Year].[CY 2007]),
([Date].[Calendar Year].[CY 2008])
} ON ROWS
FROM [Adventure Works]
如果我运行以下查询,我从两个维度(产品和互联网销售额)得到一个集合,这对我来说很有意义,但为什么上面的交叉加入只返回互联网销售额?
WITH
set x AS
{
TopCount(
[Product].[Product].[Product].Members,
1,
([Measures].[Internet Sales Amount])
) *
{[Measures].[Internet Sales Amount]}
}
SELECT
{} ON COLUMNS,
x ON ROWS
FROM [Adventure Works]
答案 0 :(得分:0)
实际上,查询中的Item(0)
会返回一个由产品和度量组成的元组。但是您的第一个SELECT
语句不使用该元组,而是[Measures].[Top Product Sales]
,它不是元组,而是单个层次结构的成员,即度量层次结构。您在WITH
子句中定义了它,以便在每次评估元组时提供元组的值,但不是元组的别名。使用WITH MEMBER
子句中的任何表达式将其转换为简单成员。
在Analysis Services中,您只能在WITH
子句中创建成员和集,而不能创建元组。