2011-06-24 101 views
0

我是OLAP的新手,但仍不確定如何創建2個或更多實體之間的關係。SSAS OLAP MDX和關係

我基於我的立方體的意見。爲了簡便起見,我們稱它們是這樣的:

viewParent(PARENTID PK)

viewChild(childID的PK,PARENTID FK)

這些意見有更多的領域,但他們並不重要對於這個問題。

在我的數據源中,我使用ParentID爲鏈接定義了viewParent和viewChild之間的關係。

至於措施,我被迫爲父母和孩子創建單獨的措施。

但是在我的MDX查詢中,這種關係似乎沒有被強制執行。如果我選擇父母,子女記錄計數,並添加一些過濾器對父,子計數不反映呢..

SELECT { 
    [Measures].[ParentCount],[Measures].[ChildCount] 
} ON COLUMNS 
FROM [Cube] 
WHERE { 
    (
    {[Time].[Month].&[2011-06-01T00:00:00]} 
    ,{[SomeDimension].&[Foo]} 
    ) 
} 

選擇ParentCount是正確的,但ChildCount不受任何過濾器(因爲它們是父過濾器)。但是,由於我定義了一個關係,我如何利用這個來利用WHERE子句來過濾父項?

事實:

viewParent,viewChild

尺寸:

ParentDimension(包含從父視圖屬性,我會彙總計算) ChildDimension(包含子視圖屬性,我會彙總上)

這只是一個想法,我想出了,但也許我的設計/關係是關閉的。

+0

這將有助於爲您的維度和事實添加說明 – ic3

回答

1

想通了。

查看VS2008中多維數據集的維度標籤,它變得很明顯。

我和維度之間的關係沒有正確設置。我的維度被keyed在與parentView uniqueID相對應的uniqueID上。

我改變了關係(SomeDimension)到不同的ID字段(由parentView和childView共享)的關鍵,我們稱之爲ViewID。

和我的MDX查詢開始按預期工作。含義WHERE子句影響兩個度量組:父母和子女。

0

這可能是因爲我正在閱讀您在描述中選擇的措辭,但您可能想澄清過濾器的含義。從技術上講,WHERE子句不是過濾器,而是identifies the slicer axis用於結果數據集。如果您的意思是FILTER,那麼您可能需要查看名爲FILTER的MDX函數,您可以將其應用於一個表達式。

您可能會嘗試重新排列您的MDX查詢以定義兩個軸 - ROWS和COLUMNS。

SELECT 
{ 
    [Measures].[ParentCount],[Measures].[ChildCount] 
} ON COLUMNS, 
{ 
    [SomeDimension].&[Foo] 
} ON ROWS 
FROM [Cube] 
WHERE ([Time].[Month].&[2011-06-01T00:00:00])