[英]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))
但這為我在查詢開始時提供了有關=
符號的錯誤(我已經測試了多種不同的技術,例如STRTOMEMBER
, STRTOSET
等,但是似乎都不起作用)
該數據集將用於創建表格,在該表格中,我按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 report
的StoreKey
和Date
是內部的。 我在使用不同的值測試Default values
, available 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.