Jasper reports MDX:筛选成员的前10名

Jasper reports MDX:筛选成员的前10名,jasper-reports,mdx,jasperserver,Jasper Reports,Mdx,Jasperserver,我正在iReport中为JasperServer创建报告。我正在创建一份报告,其中列出了所选产品下载量最多的前10家公司。用户可以在JasperReports中选择具有列表的产品(参数{$P{ProductFormat}) 产品的My维度具有以下结构:[Product].[ProductFactory].[ProductType],因此示例参数的输入可以是:[Product].[ProductCategory1].[Product1],[Product].[ProductCategory2].[

我正在iReport中为JasperServer创建报告。我正在创建一份报告,其中列出了所选产品下载量最多的前10家公司。用户可以在JasperReports中选择具有列表的产品(参数{$P{ProductFormat})

产品的My维度具有以下结构:[Product].[ProductFactory].[ProductType],因此示例参数的输入可以是:[Product].[ProductCategory1].[Product1],[Product].[ProductCategory2].[Product2]。。。我还希望这些产品以行的形式提供,以便在iReport中将它们用作字段。(其中的产品不是选项)


此查询返回所有产品的前10家公司,并按产品筛选数据。我想要一个所选产品的前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];
它返回以下内容:

如果我添加一个
WHERE
子句,如下所示,那么它似乎是上下文感知的:

WHERE [Date].[Calendar].[Calendar Year].&[2006];

在ireport中提供的mdx函数
GENERATE
?是的,据我所知,mdx的每个函数都是可用的。我可以在AdvWrks中模拟一些东西来说明如何使用GENERATE来解决这个问题,如果您愿意的话。这会很有帮助,我已经尝试过使用GENERATE。但我不能让它与topcount和多成员过滤器一起工作。如果你能用AdvWrks来说明,我将不胜感激。
WHERE [Date].[Calendar].[Calendar Year].&[2006];