MDX:具有过滤成员的前 10 个
MDX: Top 10 with filtered members
我正在 iReport 中为 JasperServer 创建报告。我正在为 selected 产品下载次数最多的前 10 家公司创建一份报告。用户可以在 JasperReports select 中列出哪些产品(参数 {$P{ProductFormat}})。
我的产品维度具有以下结构:[Product].[ProductFactory].[ProductType],因此参数的输入例如可以是:[Product].[ProductCategory1].[Product1], [Product ].[ProductCategory2].[Product2], ...我还希望这些产品以行的形式提供,这样我就可以将它们用作 iReport 中的字段。 (其中的产品不是一个选项)
SELECT
NON EMPTY {
[Measures].[Orders]
} ON COLUMNS,
NON EMPTY
Crossjoin({TopCount({[USER_COMPANY].[Company].Members}, 10, [Measures].[Orders])}, {$P{ProductFormat}})
ON ROWS
FROM [Products]
WHERE $P{DateFilter}
此查询 return 所有产品的前 10 家公司,数据按产品过滤。我想要 selected 产品的前 10 家公司,但我无法让它与 topcount 一起工作。
这个通过 SSMS
针对 AdvWrks
的查询似乎工作正常:
WITH
SET [ProductFormat] AS
{
[Product].[Product Categories].[Category].[Bikes]
,[Product].[Product Categories].[Category].[Clothing]
,[Product].[Product Categories].[Category].[Components]
}
SELECT
[Measures].[Reseller Sales Amount] ON 0
,Generate
(
[ProductFormat]
,
[Product].[Product Categories].CurrentMember
*
TopCount
(
[Geography].[Geography].[City].MEMBERS
,5
,[Measures].[Reseller Sales Amount]
)
) ON 1
FROM [Adventure Works];
它returns如下:
如果我像下面这样添加一个 WHERE
子句,那么它似乎是上下文感知的:
WHERE [Date].[Calendar].[Calendar Year].&[2006];
我正在 iReport 中为 JasperServer 创建报告。我正在为 selected 产品下载次数最多的前 10 家公司创建一份报告。用户可以在 JasperReports select 中列出哪些产品(参数 {$P{ProductFormat}})。
我的产品维度具有以下结构:[Product].[ProductFactory].[ProductType],因此参数的输入例如可以是:[Product].[ProductCategory1].[Product1], [Product ].[ProductCategory2].[Product2], ...我还希望这些产品以行的形式提供,这样我就可以将它们用作 iReport 中的字段。 (其中的产品不是一个选项)
SELECT
NON EMPTY {
[Measures].[Orders]
} ON COLUMNS,
NON EMPTY
Crossjoin({TopCount({[USER_COMPANY].[Company].Members}, 10, [Measures].[Orders])}, {$P{ProductFormat}})
ON ROWS
FROM [Products]
WHERE $P{DateFilter}
此查询 return 所有产品的前 10 家公司,数据按产品过滤。我想要 selected 产品的前 10 家公司,但我无法让它与 topcount 一起工作。
这个通过 SSMS
针对 AdvWrks
的查询似乎工作正常:
WITH
SET [ProductFormat] AS
{
[Product].[Product Categories].[Category].[Bikes]
,[Product].[Product Categories].[Category].[Clothing]
,[Product].[Product Categories].[Category].[Components]
}
SELECT
[Measures].[Reseller Sales Amount] ON 0
,Generate
(
[ProductFormat]
,
[Product].[Product Categories].CurrentMember
*
TopCount
(
[Geography].[Geography].[City].MEMBERS
,5
,[Measures].[Reseller Sales Amount]
)
) ON 1
FROM [Adventure Works];
它returns如下:
如果我像下面这样添加一个 WHERE
子句,那么它似乎是上下文感知的:
WHERE [Date].[Calendar].[Calendar Year].&[2006];