MDX:排名前10的过滤成员

时间:2015-04-28 07:43:17

标签: jasper-reports mdx jasperserver

我在iReport中为JasperServer创建报告。我正在与前10家公司一起创建一份报告,其中所选产品的产品下载量最多。用户可以在JasperReports中选择带有列表的产品(参数{$ 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}

此查询返回所有产品的前10家公司,每个产品都过滤了数据。我想要所选产品的前十大公司,但我无法使用topcount和一行。

1 个答案:

答案 0 :(得分:0)

通过AdvWrks针对SSMS的此查询似乎无效:

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];

返回以下内容:

enter image description here

如果我添加如下所示的WHERE子句,那么它似乎可以识别上下文:

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