3

mdx で 2 つの日付 (両端を含む) を実行しようとしています。2 つのファクト テーブルと 1 つのマッピング テーブルがあります。

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 で行う方法について何か提案はありますか? フィルター処理を実行するために、ディメンションの使用法がディメンションとファクト テーブル間の関係をどのように持つ必要があるか。スクリーンショットを添付

ここに画像の説明を入力

ここに画像の説明を入力

4

1 に答える 1

0

多分これ:

 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] 
 )
于 2015-09-18T17:27:26.413 に答える