MDX-запрос не работает

Я пытаюсь выполнить между двумя датами (включительно) в mdx. У меня есть две таблицы фактов и одна таблица сопоставления.

Fact_TableA 
  TableAId,
  ValueA,
  Date_FK

Fact_TableB
  TableBId,
  ValueB,
  Date_FK

Fact_MappingTable
 TableAId,
 TableBId

Fact_MappingTable имеет отношение многие ко многим с Fact_TableA и Fact_TableB. Я написал ниже запрос

 SELECT 
 NON EMPTY 
 { 
    [Measures].[ValueA], 
    [Measures].[ValueB] 
 } ON COLUMNS, 
 NON EMPTY 
 { 
    (
     [Fact Table A].[Column AID].[Column AID].ALLMEMBERS * 
     [Fact Table B].[Date FK].[Date FK].ALLMEMBERS 
     ) 
 } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS FROM 
 (
    select ([Fact Mapping Table].[Date FK].&[2014-12-10T00:00:00] : [Fact Mapping Table].[Date FK].&[2015-01-01T00:00:00]) ON COLUMNS FROM [DW Testing] 
 )

Этот запрос выполняет

Select 
   Fact_TableA.ValueA
  ,Fact_TableB.ValueB 
from 
   Fact_TableA 
   left outer join Fact_MappingTable on 
     Fact_TableA.TableAId = Fact_MappingTable.TableAId 
   left outer join Fact_TableB on 
     Fact_TableB.TableBId = Fact_MappingTable.TableBId
where Date_FK between '2015-01-01' and '2015-01-01'

Но мое требование

 Select 
   Fact_TableA.ValueA
  ,Fact_TableB.ValueB 
 from 
    Fact_TableA 
    left outer join Fact_MappingTable on 
      Fact_TableA.TableAId = Fact_MappingTable.TableAId and 
      Fact_MappingTable.DateM_FK between '2015-01-01' and '2015-01-10'
    left outer join Fact_TableB on 
    Fact_TableB.TableBId = Fact_MappingTable.TableBId
  where Date_FK between '2015-01-01' and '2015-01-10' 

Я попытался выполнить слайсер Subselect и Where, но он работает неправильно. Любое предложение, как это можно сделать в MDX? Как использование измерения должно иметь отношения между измерениями и таблицей фактов для выполнения фильтрации. Прикрепил скриншоты

введите здесь описание изображения

введите здесь описание изображения


person 107    schedule 18.09.2015    source источник
comment
Я думаю, что вы, возможно, неправильно настроили измерение «многие ко многим» на вкладке «Использование измерения». Можете ли вы предоставить скриншот вкладки и диалогового окна отношения «многие ко многим»?   -  person GregGalloway    schedule 19.09.2015
comment
@GregGalloway: я приложил оба скриншота   -  person 107    schedule 21.09.2015
comment
Date_FK в вашем предложении where взят из таблицы A или таблицы B?   -  person GregGalloway    schedule 25.09.2015


Ответы (1)


Может быть, это:

 SELECT 
 NON EMPTY 
 { 
    [Measures].[ValueA], 
    [Measures].[ValueB] 
 } ON COLUMNS, 
 NON EMPTY 
 { 
     EXISTS(
        [Fact Table A].[Column AID].[Column AID].ALLMEMBERS
       ,{[Fact Mapping Table].[Date FK].&[2014-12-10T00:00:00] 
          : 
         [Fact Mapping Table].[Date FK].&[2015-01-01T00:00:00])}
     ) 
     * [Fact Table B].[Date FK].[Date FK].ALLMEMBERS 
 } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS FROM 
 (
    select ([Fact Mapping Table].[Date FK].&[2014-12-10T00:00:00] : [Fact Mapping Table].[Date FK].&[2015-01-01T00:00:00]) ON COLUMNS FROM [DW Testing] 
 )

Попробуйте заменить функцию Exists на функцию NonEmpty:

SELECT 
 NON EMPTY 
 { 
    [Measures].[ValueA], 
    [Measures].[ValueB] 
 } ON COLUMNS, 
 NON EMPTY 
 { 
     NonEmpty(
        [Fact Table A].[Column AID].[Column AID].ALLMEMBERS
       ,{[Fact Mapping Table].[Date FK].&[2014-12-10T00:00:00] 
          : 
         [Fact Mapping Table].[Date FK].&[2015-01-01T00:00:00])}
     ) 
     * [Fact Table B].[Date FK].[Date FK].ALLMEMBERS 
 } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS FROM 
 (
    select ([Fact Mapping Table].[Date FK].&[2014-12-10T00:00:00] : [Fact Mapping Table].[Date FK].&[2015-01-01T00:00:00]) ON COLUMNS FROM [DW Testing] 
 )
person whytheq    schedule 18.09.2015
comment
этот запрос не фильтрует значения для [Таблица сопоставления фактов].[Дата FK].&[2014-12-10T00:00:00] : [Таблица сопоставления фактов].[Дата FK].&[2015-01-01T00 :00:00] диапазон дат - person 107; 21.09.2015