簡體   English   中英

在SSRS中使用追溯報表和Analysis Service作為數據源

[英]Using Drill through reports and Analysis Service as Data source in SSRS

我希望能夠創建一個報告,在該報告中您提供一個商店密鑰作為參數,並且它將創建僅該商店的銷售額的表。 為此,我創建了一個名為“ StoreKey”的參數和一個將數據集提供為的查詢:

"SELECT NON EMPTY {
   [Measures].[Quantity] -- NOTE there are many more columns in reality
   } ON COLUMNS,
NON EMPTY {
            (
                [Dim Date].[Calender].[Date].[2014-11-20]:[Dim Date].[Calender].[Date].[2014-11-30]
            )
        } on rows
FROM [cube] 
WHERE WHERE ( STRTOMEMBER("[Dim Store2].[Store Key].&["+ @StoreKey + "]",CONSTRAINED))

但這為我在查詢開始時提供了有關=符號的錯誤(我已經測試了多種不同的技術,例如STRTOMEMBERSTRTOSET等,但是似乎都不起作用)

該數據集將用於創建表格,在該表格中,我按Weeks分組,然后按Dates分組,這樣,當您按日期時,將創建包含該日和商店更詳細數據的追溯報表。

我希望使用StoreKey和用於打開“追溯”報表的Date生成子報表。 我希望StoreKey參數在主報表和子報表中具有相同的值。

對於后者,我配置了一個Action以在主報告中創建一個新報告,該報告應使用StoreKey變量和Date變量來生成新報告。

在我的Subreport我想創建第一個數據集,如下所示:

 SELECT 
    NON EMPTY { 
        [Measures].[Quantity] 
        , [Measures].[Total Price]
        , [Measures].[Contribution Margin]
        , [Measures].[Profit Margin] 
    } ON COLUMNS, 
    NON EMPTY { 
        (
            [Dim Time].[Open Hour Bucket].[Open Hour Bucket].ALLMEMBERS
, [Dim Product2].[Product Group].[Product Group].ALLMEMBERS
, [Dim Product2].[Summary].[Summary].ALLMEMBERS 
        ) 
    } ON ROWS
        FROM [DSV_FactStoreSales 1] 
    WHERE ( STRTOMEMBER("[Dim Store2].[Store Key].&["+ @StoreKey + "]",CONSTRAINED))

但是后來SSRS告訴我,如果我使用MDX或DAX,這是無法理解的。

我希望這不是一個太寬泛的問題,但是我已經嘗試使它工作了很多很多小時,因此希望我能朝着正確的方向發展。 這是如此令人困惑-有時論壇用戶說應該使用StrToMember ,有時應該使用Parameters!StoreKey.value

我使用“ 預覽”選項在Visual Studios的SSRS中進行所有這些測試。 Main Report的變量StoreKey被顯示, Generated drill through reportStoreKeyDate是內部的。 我在使用不同的值測試Default valuesavailable values等。在我所設定的時刻None

編輯:

我終於得到了一個實際上“有效”的代碼,如下所示:

SELECT 
NON EMPTY 
    {
        [Measures].[Quantity]
        ,[Measures].[Total Price]
        ,[Measures].[Contribution Margin]
        ,[Measures].[Profit Margin]
    } ON COLUMNS,
NON EMPTY 
    { 
        (
            [Dim Date].[Calender].[Date].[2014-11-20]:[Dim Date].[Calender].[Date].[2014-11-30])
            ,STRTOMEMBER("[Dim Store2].[Store Key].&[" + @StoreKey + "]")
    } on rows
from [DSV_FactStoreSales 1] 

但是,我的問題是,如果我將此語句復制到Management Studios中,並用硬編碼值替換變量表達式,如下所示:

STRTOMEMBER('[Dim Store2].[Store Key].&[1024]')

我收到一個維度層次結構必須匹配的錯誤,因此我將代碼調整為:

    NON EMPTY { ([Dim Date].[Calender].[Date].[2014-11-20]:[Dim Date].[Calender].[Date].[2014-11-30]
,STRTOMEMBER('[Dim Store2].[Store Key].&[1024]'))} on rows

它返回一個集合。 但是,在SSRS中使用原始的Edited代碼不會在Query設計器中提供任何錯誤,但是,當我要預覽項目時,會收到不匹配的層次結構的錯誤。 然后,我繼續進行在Management Studios中所做的調整(但使用變量而不是硬編碼值),但是隨后我在SSRS中得到一個空集,當我嘗試在其中調用空數據集時會出現各種錯誤。我的桌子。

確保您的數據集已映射到SSRS參數。

在此處輸入圖片說明

同樣在Query Command Text表達式中,使用不帶=的MDX表達式,它也不是SSRS表達式:

在此處輸入圖片說明

您的WHERE子句中有一個錯誤:

WHERE ( STRTOMEMBER("[Dim Store2].[Store Key].&["+@StoreKey+"],CONSTRAINED)",
STRTOMEMBER("[Dim Date].[Date Key].&["+@Date+"],CONSTRAINED" )

它應該是:

WHERE ( STRTOMEMBER("[Dim Store2].[Store Key].&["+ @StoreKey + "]",CONSTRAINED), 
STRTOMEMBER("[Dim Date].[Date Key].&[" + @Date + "]",CONSTRAINED ))

更新:嘗試從“查詢命令文本”窗口中設置MDX表達式。

在此處輸入圖片說明

這按預期對我有效。

在此處輸入圖片說明

避免使用SS Management Studio,因為您無法從那里設置SSRS參數。

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM