2016-01-28 85 views
0

我在SSAS多維數據集上運行了一個MDX查詢,該查詢返回許多目標代碼以及它們的週期餘額。我可以通過在行上使用交叉連接來添加多個期間餘額,但是我想爲上一個會計期間添加一個包含期末餘額的行,並且似乎無法找到一種方法來執行此操作。使用元組將列添加到MDX查詢中

初始查詢是

select 
    non empty 
     { 
      [Object Code].[Object Code Number].[Object Code Number] 
      * 
      [Object Code].[Object Code Description].[Object Code Description] 
      * 
      [Object Code Pathing 1E 1R].[1E_R1 Value].[1E_R1 Value] 
      * 
      [Object Code Pathing 1E 1R].[1E_R2 Value].[1E_R2 Value] 
      * 
      [Object Code Pathing 1E 1R].[1E_R3 Value].[1E_R3 Value] 
      * 
      [Object Code Pathing 1E 1R].[1E_R4 Value].[1E_R4 Value] 
     } 
    on rows, 
     { 
      [Measures].[Current Period Balance] 
     } 
     * 
     { 
     [Date].[Fiscal].[Fiscal Period].&[2016]&[1]:[Date].[Fiscal].[Fiscal Period].&[2016]&[7] 
     } 
    on columns 
    from [Finance] 

,當我試圖增加一個列

select 
    non empty 
     { 
      [Object Code].[Object Code Number].[Object Code Number] 
      * 
      [Object Code].[Object Code Description].[Object Code Description] 
      * 
      [Object Code Pathing 1E 1R].[1E_R1 Value].[1E_R1 Value] 
      * 
      [Object Code Pathing 1E 1R].[1E_R2 Value].[1E_R2 Value] 
      * 
      [Object Code Pathing 1E 1R].[1E_R3 Value].[1E_R3 Value] 
      * 
      [Object Code Pathing 1E 1R].[1E_R4 Value].[1E_R4 Value] 
    } 
on rows, 
     { 
     [Measures].[Balance At Period End] 
     * 
     [Date].[Fiscal].[Fiscal Period]&[2016]&[7] 
     }, 
     { 
      [Measures].[Current Period Balance] 
     } 
     * 
     { 
     [Date].[Fiscal].[Fiscal Period].&[2016]&[1]:[Date].[Fiscal].[Fiscal Period].&[2016]&[7] 
     } 
    on columns 
from [Finance] 

我得到的 分析器:語句方言不能因模糊性得到解決。錯誤

,如果我添加它像

 { 
      [Measures].[Current Period Balance], 
      [Measures].[Balance At Period End] 
     } 
     * 
     { 
     [Date].[Fiscal].[Fiscal Period].&[2016]&[1]:[Date].[Fiscal].[Fiscal Period].&[2016]&[7] 
     } 
    on columns 

我得到各個時期的期末餘額,這是在報告中沒有必要,我只需要在期末餘額爲最後期限

+0

'Crossjoin'現在用星號'*' – whytheq

回答

0

這是你的第一件麻煩的代碼:

crossjoin (
[Measures].[Current Period Balance] 
,{ 
    [Date].[Fiscal].[Fiscal Period].&[2016]&[1] 
,[Date].[Fiscal].[Fiscal Period].&[2016]&[2] 
    ,[Date].[Fiscal].[Fiscal Period].&[2016]&[3] 
    } 
), //<<1 
crossjoin(
    [Measures].[Balance At Period End] 
    ,{[Date].[Fiscal].[Fiscal Period].&[2016]&[3]} 
) on columns 
from [Finance] 

在1點已經關閉了第一個交叉連接,然後把一個逗號 - 這是一個信達x錯誤。

你可以嘗試從1移動該支具的聲明的末尾:

crossjoin (
    [Measures].[Current Period Balance] 
    ,{ 
    [Date].[Fiscal].[Fiscal Period].&[2016]&[1] 
    ,[Date].[Fiscal].[Fiscal Period].&[2016]&[2] 
    ,[Date].[Fiscal].[Fiscal Period].&[2016]&[3] 
    } 
    , //<<1 
    crossjoin(
    [Measures].[Balance At Period End] 
    ,{[Date].[Fiscal].[Fiscal Period].&[2016]&[3]} 
) 
) on columns //<<now closing initial crossjoin here 
from [Finance] 

好吧,我只是測試上方通過以下,這是不是一種有效的方法:

SELECT 
    CrossJoin 
    (
    [Measures].[Internet Sales Amount] 
    ,{ 
     [Date].[Calendar].[Date].&[20060628] 
    ,[Date].[Calendar].[Date].&[20060629] 
    } 
    ,CrossJoin 
    (
     [Measures].[Internet Order Quantity] 
    ,{[Date].[Calendar].[Date].&[20060629]} 
    ) 
) ON COLUMNS 
,[Product].[Product Categories].[All] ON ROWS 
FROM [Adventure Works]; 

我們得到以下錯誤:

Query (2, 3) The Measures hierarchy is used more than once in the Crossjoin function.

您可以切換到以下結構,創建一組元組。這不運行:

SELECT 
    { 
     [Measures].[Internet Sales Amount] 
    * 
     { 
     [Date].[Calendar].[Date].&[20060628] 
     ,[Date].[Calendar].[Date].&[20060629] 
     } 
    ,(
     [Measures].[Internet Order Quantity] 
    ,{[Date].[Calendar].[Date].&[20060629]} 
    ) 
    } ON COLUMNS 
,[Product].[Product Categories].[All] ON ROWS 
FROM [Adventure Works]; 

結果:

enter image description here

+0

感謝您的格式簡單表示。但它仍然無法工作。 初始查詢我早已填充 行'選擇 \t非空 \t \t { \t \t \t [對象代碼] [目標代碼號]。[對象碼數】 \t \t \t * \t \t \t [對象代碼]。[對象代碼描述]。[對象代碼描述] \t \t \t * \t \t \t [對象代碼路徑1E 1R]。[1E_R1值]。[1E_R1值] \t \t \t * \t \t \t [目標代碼徑處理1E 1R]。[1E_R2值]。[1E_R2值] \t \t \t * \t \t \t [目標代碼徑處理1E 1R]。[1E_R3值] [1E_R3值] \t \t \t * \t \t \t [目標代碼徑處理1E 1R]。[1E_R4值]。[1E_R4值] \t \t} 在行上, ' – Mike

+0

當我嘗試將交叉連接添加到'[Measures]。[期末結餘] * [日期]。[財政]。[財政期間]。&[2016]&[7]'到行查詢我得到_The度量值層次結構已經出現在Axis0 axis._ error – Mike

+0

我試圖清理原始帖子的格式,以幫助更好地說明我的問題。基本上,在具有「所有產品」列的情況下,我需要具有對象代碼值的交叉連接的產品 – Mike