我有一个查询,我需要在其中进行一些过滤。我可以在子多维数据集中执行此操作,但我想知道我是否可以在没有子多维数据集的情况下在 WHERE 子句中执行此操作。我认为这个解决方案会更快/更清洁。我需要过滤掉上个月 IB>0 的产品型号,这是我目前的解决方案(仅查询的一部分):
SELECT {[Measures].[AFR],[Measures].[IB]} ON COLUMNS,
([dim_ProductModel].[ODM].children)*[Dim_Date].[Date Full].children ON ROWS
FROM
(
SELECT
FILTER([dim_ProductModel].[Product Model].children,
([Measures].[IB]*[Dim_Date].[Date Full].&[2014-04-01]>0)) ON COLUMNS FROM
[cub_dashboard_spares]
)
但是,我更愿意将它放在一个查询中而不使用像这样的子查询(虽然它不起作用):
SELECT {[Measures].[AFR],[Measures].[IB]} ON COLUMNS,
([dim_ProductModel].[ODM].children)*[Dim_Date].[Date Full].children ON ROWS
FROM
[cub_dashboard_spares]
WHERE FILTER([dim_ProductModel].[Product Model].children,
([Measures].[IB]*[Dim_Date].[Date Full].&[2014-04-01]>0))
我收到一些错误消息: MDX 函数 CURRENTMEMBER 失败,因为...的坐标包含一个集合..
我基本上理解他为什么不接受是在 WHERE 子句中我应该更具体但我想知道是否有可能重写它以使其起作用。
我不希望 ProductModel 出现在结果集中。
最佳答案
SELECT {[Measures].[AFR],[Measures].[IB]} ON COLUMNS,
([dim_ProductModel].[ODM].children)*[Dim_Date].[Date Full].children ON ROWS
FROM
[cub_dashboard_spares]
WHERE
({[dim_ProductModel].[Product Model].children},
[Measures].[IB],
PERIODSTODATE(
[Dim_Date].[Date Full], //<<needs to be a level from your Dim_date
[Dim_Date].[Date Full].&[2014-04-01]) //<<needs to be a member from the levelyou have used in above argument
)
关于ssas - MDX WHERE 与 FILTER 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23912166/