Ssas MDX查询,用于计算具有相同维度的成员的度量值和条件

Ssas MDX查询,用于计算具有相同维度的成员的度量值和条件,ssas,mdx,Ssas,Mdx,我有OLAP数据库中的多维数据集(SSAS 2012),其中[人员],[日期](订单日期),[类别](订单中的项目类别)是维度,[订单],[订单分类]是事实表。[OrdersCategories]是一个多对多表,用于将订单与Categories连接起来 使用查询: SELECT {[Measures].[Orders Distinct Count]} ON COLUMNS, {[Persons].[Id].Children} ON ROWS FROM [DB] WHERE (

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

使用查询:

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]}
) 
我可以计算每个人的订单数量(指定时间段和指定类别)。在这种情况下,分类条件的作用类似于“或”条件,无论顺序与第一类或第二类或两者都有关系


是否可以按类别编写查询,其工作方式类似于“和”条件,即仅当顺序与两个类别相关时才计算顺序?

与来自同一层次结构的成员通常实现如下:

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"
  );
您需要从多维数据集中添加度量值组名称。度量值组名称对应于度量值层次结构中的文件夹名称-Adventure Works中的一个示例是
“Internet Sales”


可能的替代方案

我认为您可以尝试使用嵌套的
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])}
  );

答案一目了然。我更喜欢第二个答案。@Sourav_Agasti如果第一个答案有效,那么它比第二个更标准。第一个是我看到Tomislav Piasevoli使用的一种方法。我想只是一个小小的修正。“MeasuresGroupName”需要与
[Measures].[Orders Distinct Count]
所属的度量值组相同,而不仅仅是任何度量值组。@Sourav_Agasti我同意,谢谢您的回答。我尝试了这两种方法,但返回的[Orders Distinct Count]比上面的查询返回的要大(但应该小,因为它应该像“AND”一样工作)。无论如何,我认为这并不是简单的taks,我需要对SSAS/MDX有一点更深入的理解,去学习