我有一个查询,我需要进行一些过滤。我可以在子多维数据集中执行此操作,但我想知道是否可以在没有子多维数据集的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出现在结果集中。
答案 0 :(得分:0)
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
)