Mondrian MDX-过滤器不适用于多个成员查询

时间:2018-11-25 15:41:19

标签: mdx pentaho mondrian

我们目前有一个查询,显示总数量或商店位置和部门之间的销售额的值,我将销售数量汇总度量与位置相交,结果很好。

当我们尝试按总数量> 500进行过滤时,我只会看到按地点价值评估的数量总和,而不是按地点和部门分组。

HAVING似乎不受支持,如果我在底部包括一个where过滤器,则存在同一家庭/成员被多次使用的问题,这是不允许的。

SELECT 
  {HEAD([dim_productfamily.hier_productfamily].[lvl_department].Members, 5)}
ON ROWS,
  FILTER
  (
    {HEAD([dim_locations.hier_locations].[lvl_location].Members, 5) * [Measures].[total_qty]},
    [Measures].[total_qty] > 500
  )
ON COLUMNS
FROM 
  [sales_daily] 
WHERE 
  {[dim_date.hier_date].[lvl_date].[20170521] : [dim_date.hier_date].[lvl_date].[20170730] }

上面的查询返回的很好,但是我得到的测试值只能与位置求和(total_qty)进行真正的比较。

针对不同分组进行编辑

我尝试使用以下查询,这似乎有效。我认为在这种情况下,我们呈现表格的方式是不正确的,因为输出似乎确实可以正常工作。

SELECT 
  FILTER
  (
     {HEAD([dim_productfamily.hier_productfamily].[lvl_department].Members, 5) * HEAD([dim_locations.hier_locations].[lvl_location].Members, 5)},
     [Measures].[total_qty] > 26
  )
ON ROWS,
  [Measures].[total_qty]
ON COLUMNS
FROM 
   [sales_daily] 
WHERE 
  {[dim_date.hier_date].[lvl_date].[20170521] : [dim_date.hier_date].[lvl_date].[20170730] }

这是您的想法吗?

2 个答案:

答案 0 :(得分:1)

问题在于,在您的过滤器中,您实际上尚未按位置和部门进行分组。您仅按位置分组。一个简单的解决方法是将位置和产品都放在同一根轴上,而将度量值放在相反的轴上。然后将其过滤。会的。

答案 1 :(得分:0)

再次查看问题,您可以按照以下方式查询它。这将使您可以使用原始分组。

WITH 
MEMBER [Measures].[Data Type3] AS ([Geography].[Country].CurrentMember,[Product].[Product].CurrentMember,[Measures].[Reseller Sales Amount])

SELECT 
FILTER
(
{[Product].[Product].Members}
,[Measures].[Reseller Sales Amount] > 2000
)
ON rows,
FILTER
(
([Geography].[Country].members, {[Measures].[Reseller Sales Amount]
,[Measures].[Data Type3]}),
[Measures].[Reseller Sales Amount] > 2000
)
ON columns
FROM 
[Adventure Works]