ssas - MDX WHERE 与 FILTER 选项

标签 ssas mdx cube

我有一个查询,我需要在其中进行一些过滤。我可以在子多维数据集中执行此操作,但我想知道我是否可以在没有子多维数据集的情况下在 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/

相关文章:

ssas - MDX 函数查找成员 IsMemberOf 是否为集合

sql - 在 MDX 查询上添加过滤器

mdx - 在计算成员中使用 EXCEPT

azure - Azure Analysis Services 中使用的内存

sql - 用表或 View 构建立方体是否更有效?

c# - 处理立方体的组件

reporting-services - SSRS mdx 报告 : calculated member with maximum rank value for passes multivalue parameter

android - 如何在动态壁纸上渲染 OpenGL(太难了!)?

SSAS MDX 计算 - 基于组值的总和

ssas - 为什么要使用 Process Data 与 Process Full 来处理分区