1

次の階層を持つ SQL データ キューブがあります。

ここに画像の説明を入力

倉庫部門とコード倉庫デスクをクロスジョインしたいです。私は次のようにMDXを書きました

SELECT NON EMPTY 
{ [Measures].[Total  Value]} 
DIMENSION PROPERTIES CHILDREN_CARDINALITY, 
PARENT_UNIQUE_NAME ON COLUMNS, 
NON EMPTY 
{      
   [Combined].[Drill Down Path 4].[Warehouse Division].MEMBERS*   [Combined].[Drill Down Path 4].[Code Warehouse Desc].MEMBERS
} 
DIMENSION PROPERTIES MEMBER_CAPTION ON ROWS FROM [InventoryAge]
WHERE ( [Calendar].[Report Days].[All Members].&[All].&[WantInReport].& [2].&[20141031] )

次のようなエラーが表示されます

Query (13, 8) The Drill Down Path 4 hierarchy is used more than once in the Crossjoin function.

これを行うためのより良い方法を提案できる機関はありますか

カレンダーの階層を見つけてください

ここに画像の説明を入力

4

2 に答える 2

2

必要なことを行うために、階層をクロス結合する必要はありません (これは不可能です)。その最下位レベルを照会するだけで、すべての親も取得できます

SELECT NON EMPTY 
{ [Measures].[Total  Value]} 
DIMENSION PROPERTIES CHILDREN_CARDINALITY, 
PARENT_UNIQUE_NAME ON COLUMNS, 
NON EMPTY 
{      
     [Combined].[Drill Down Path 4].[Code Warehouse Desc].allMEMBERS
} 
 DIMENSION PROPERTIES MEMBER_CAPTION ON ROWS FROM [InventoryAge]
 WHERE ( [Calendar].[Report Days].[All Members].&[All].&[WantInReport].& [2].&[20141031] )

PS。SSMS クエリ結果ビューアーでは表示できない場合がありますが、キューブ ブラウザーでクエリを使用するか、SSRS/その他のツールでデータセットとして使用すると表示されます。

于 2015-02-05T08:25:13.920 に答える
0

Tail(Existing [Calendar].[Report Days].[All members].&[All].&[WantInReport].members, 1).item(0) を使用して、セットの最後の日付を渡すことができます。

または、現在のシステム日付の文字列表現を提供する Format(Now()) を使用できます。ただし、ロケールに依存するため、おそらくドット/スラッシュを削除する必要があります. こちらをご覧ください

于 2015-02-05T09:47:03.790 に答える