Mondrian MDX - 过滤器不适用于多个成员查询
Mondrian MDX - Filter Not Applying to Multiple Members Query
我们目前有一个显示总数量值或跨商店位置和部门的销售额的查询,我将销售数量聚合度量值与位置相交,结果很好。
当我们尝试按总数量 > 500 进行过滤时,我只看到按位置值评估的数量总和,而不是按位置和部门分组。
HAVING 似乎不受支持,如果我在底部包含一个 where 过滤器,则同一个 family/members 被多次使用会出现问题,这是不允许的。
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] }
上面的查询 returns 很好,但我得到的值是我测试过的,只是与位置总和 (total_qty).
进行了真正的比较
编辑不同分组
我尝试使用以下查询,它似乎有效。我认为我们渲染 table 的方式在这种情况下是不正确的,因为输出似乎工作正常。
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] }
这是你的想法吗?
问题是在您的过滤器中您确实没有按位置和部门分组。您只按位置分组。一个简单的解决方法是将位置和产品放在同一轴上,并将测量放在相反的轴上。然后过滤它。它会起作用。
再看问题,可以通过下面的方式查询。这将使您可以使用原始分组。
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]
我们目前有一个显示总数量值或跨商店位置和部门的销售额的查询,我将销售数量聚合度量值与位置相交,结果很好。
当我们尝试按总数量 > 500 进行过滤时,我只看到按位置值评估的数量总和,而不是按位置和部门分组。
HAVING 似乎不受支持,如果我在底部包含一个 where 过滤器,则同一个 family/members 被多次使用会出现问题,这是不允许的。
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] }
上面的查询 returns 很好,但我得到的值是我测试过的,只是与位置总和 (total_qty).
进行了真正的比较编辑不同分组
我尝试使用以下查询,它似乎有效。我认为我们渲染 table 的方式在这种情况下是不正确的,因为输出似乎工作正常。
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] }
这是你的想法吗?
问题是在您的过滤器中您确实没有按位置和部门分组。您只按位置分组。一个简单的解决方法是将位置和产品放在同一轴上,并将测量放在相反的轴上。然后过滤它。它会起作用。
再看问题,可以通过下面的方式查询。这将使您可以使用原始分组。
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]