MDX查询以相同维度的成员计算AND条件的度量

时间:2015-06-18 10:57:18

标签: ssas mdx

我在OLAP数据库(SSAS 2012)中有多维数据集,其中[人员],[日期](订单日期),[类别](订单中的项目类别)是维度和[订单],[订单类别]是事实表。 [OrdersCategories]是用于将订单与类别连接的多对多表。

使用查询:

SELECT
    {[Measures].[Orders Distinct Count]} ON COLUMNS,
    {[Persons].[Id].Children} ON ROWS
FROM [DB]
WHERE ( 
    {[Dates].[Id].&[2015-06-11T00:00:00] : [Dates].[Id].&[2015-06-17T00:00:00]},  
    {[Categories].[Id].&[10], [Categories].[Id].&[11]}
) 

我可以计算每个人的订单数量(指定的时间段和指定的类别)。这种情况是否按类别起作用,如“OR”条件,无论顺序与第一类别或第二类别或两者都有关系。

是否可以按条件写条件查询条件类似于'AND'条件,即仅当订单与两个类别相关时才计算订单?

1 个答案:

答案 0 :(得分:2)

来自同一层次结构的成员的

AND通常如下所示实现:

SELECT 
  {[Measures].[Orders Distinct Count]} ON COLUMNS
 ,{[Persons].[Id].Children} ON ROWS
FROM [DB]
WHERE 
  Exists
  (
    Exists
    (
      {
        [Dates].[Id].&[2015-06-11T00:00:00] : [Dates].[Id].&[2015-06-17T00:00:00]
      }
     ,{[Categories].[Id].&[10]}
     ,"MeasuresGroupName"
    )
   ,{[Categories].[Id].&[11]}
   ,"MeasuresGroupName"
  );

您需要从多维数据集添加度量值组名称。度量组名称对应于Measures层次结构中的文件夹名称 - Adventure Works中的示例为"Internet Sales"

enter image description here

可能的替代方案

我认为您可以尝试使用嵌套的NonEmpty函数实现上述功能:

SELECT 
  {[Measures].[Orders Distinct Count]} ON COLUMNS
 ,{[Persons].[Id].Children} ON ROWS
FROM [DB]
WHERE 
  NonEmpty
  (
    NonEmpty
    (
      {
        [Dates].[Id].&[2015-06-11T00:00:00] : [Dates].[Id].&[2015-06-17T00:00:00]
      }
     ,{([Categories].[Id].&[10],[Measures].[Orders Distinct Count])}
    )
   ,{([Categories].[Id].&[11],[Measures].[Orders Distinct Count])}
  );