Ssas

STRTOMEMBER 函式在查找維度時引發錯誤

  • January 17, 2017

我真的很難過……試圖為一個多維數據集創建一些年初至今的度量,NOW()指定目前的月份和日期(減去兩天的滯後),年份由年度的目前成員指定層次結構上的值 - 並STRTOMEMBER用於將年份的這些位粘貼到對維度特定成員的引用中,該維度可以與度量交叉連接以獲得最新的年度值。

此程式碼在STRTOMEMBER用於指定範圍時工作得很好……它列出了第一天和第十天之間的每一天,以及每一天的收入:

SELECT [Measures].[Revenue USD] ON COLUMNS,
{
STRTOMEMBER('[Time Dimension].[Year-Qtr-Month-Date].[Date].&[2017-01-01T00:00:00]') : 
STRTOMEMBER('[Time Dimension].[Year-Qtr-Month-Date].[Date].&[2017-01-10T00:00:00]') 
}  ON ROWS
FROM [CurrentCube]
WHERE [Time Dimension].[Year].&[2017]

但隨後以下不起作用,它給出了錯誤:

“維度 '

$$ Time Dimenson $$’ 未在多維數據集中找到字元串時,$$ Time Dimenson $$.$$ Year-Qtr-Month-Date $$.$$ Date $$.&$$ 2017-01-07T00:00:00 $$,被解析了。”

我意識到日期與相同的範圍並不完全匹配,但是正在構造一個相同的字元串。對我來說,前者會起作用而後者不會起作用,這對我來說毫無意義。也嘗試在它周圍加上單引號,然後它抱怨STRTOMEMBER需要一個成員表達式但使用了一個字元串或數字表達式。對我來說,第一個選項可行但第二個不可行,這對我來說毫無意義。也無法在網上找到太多解釋此錯誤消息的內容。

SELECT [Measures].[Revenue USD] ON COLUMNS,
{
STRTOMEMBER(FORMAT(CSTR("[Time Dimenson].[Year-Qtr-Month-Date].[Date].&[" + [Time Dimension].[Year].CURRENTMEMBER.MEMBER_CAPTION + "-" + RIGHT("0" + FORMAT(CSTR(MONTH(NOW()-5))),2) + "-"  + RIGHT("0" + FORMAT(CSTR(DAY(NOW()-5))),2) + "T00:00:00]"))) : 
STRTOMEMBER(FORMAT(CSTR("[Time Dimenson].[Year-Qtr-Month-Date].[Date].&[" + [Time Dimension].[Year].CURRENTMEMBER.MEMBER_CAPTION + "-" + RIGHT("0" + FORMAT(CSTR(MONTH(NOW()-2))),2) + "-"  + RIGHT("0" + FORMAT(CSTR(DAY(NOW()-2))),2) + "T00:00:00]"))) 
}  ON ROWS
FROM [DataInsight]
WHERE [Time Dimension].[Year].&[2017]

發現錯誤 - 這是一個拼寫錯誤……“Time Dimenson”的“dimension”一詞拼寫錯誤。在這種情況下,錯誤發生在鍵盤和椅子之間。

引用自:https://dba.stackexchange.com/questions/160927