2014-03-18 106 views
1

我有一個稱爲ExDimension的維,其中有一個名爲ExAttribute的單一屬性。我目前在這方面有2名成員,還有unknownmember及其數據。當我運行以下MDX時,我沒有收到任何迴應,我不明白爲什麼。任何人都可以給我一個方向看看?MDX聲明無返回

SELECT 
{ 
    [ExDimension].[ExAttribute].CHILDREN 
} 
DIMENSION PROPERTIES [ExDimension].[ExAttribute].[Attribute Code], 
        [ExDimension].[ExAttribute].[Company], 
        [ExDimension].[ExAttribute].[Is Current], 
        [ExDimension].[ExAttribute].[Is Current Store], 
        [ExDimension].[ExAttribute].[Is Current Chain], 
        [ExDimension].[ExAttribute].[Attribute Label] 
ON 0 FROM [CR Data Warehouse] 
+1

將[ExDimension]。[ExAttribute] .CHILDREN'替換爲[ExDimension]。[ExAttribute] .Members'時,您會得到什麼?你確定你沒有輸入維度和屬性名稱嗎? Analysis Services的默認設置不會顯示錯誤,如果引用的屬性不存在,但只是默默地忽略它們。 – FrankPl

+0

我得到正確的價值觀......一切都看起來不錯。這是我不理解,因爲這個查詢結構將適用於我所有的其他維度/屬性 –

回答

1

你的代碼依賴於分析服務的隱式類型轉換:

Children作品件上,看到documentation。你給它一個層次結構。在這種情況下,SSAS會對層次結構的默認成員進行隱式類型轉換。 I. e。代碼

[ExDimension].[ExAttribute].CHILDREN 

相當於

[ExDimension].[ExAttribute].DefaultMember.CHILDREN 

在標準情況下,這可以作爲默認成員是0​​成員,它擁有所有「正常」的成員作爲其子。我會假設你的ExAttribute層次結構有一個默認成員,它不是All成員,而是最底層的成員。並且沒有孩子,因此上面的表達式返回空集。

假設你的意圖是讓除了All成員ExAttribute屬性層次結構的成員,我的首選編碼這種方式是使用

[ExDimension].[ExAttribute].[ExAttribute].Members 

這不使用隱式類型轉換,使用ExAttribute屬性層次結構的ExAttribute級別。屬性層次結構通常有兩個級別:All級別僅包含All成員,並且級別的名稱類似於包含直接來自維度表的所有成員的屬性。可能存在變體:如果將屬性屬性IsAggregatable設置爲false,則缺少All成員和All級別,並且可以將計算的成員添加到兩個級別。

你甚至可以使用

[ExDimension].[ExAttribute].[ExAttribute] 

的,再次,有一個隱式類型轉換,如果你有一個水平,需要一套:此隱式類型轉換應用Members功能。但我更喜歡明確,特別是因爲代碼沒有這麼長時間。

+0

神奇的解釋!這是我學習的方式。非常感謝! –