2011-04-14 57 views
1

我是BI/DatawareHousing的新手,在構建了一些簡單的示例之後,我需要構建更復雜的結構。我的項目最初涉及產品許可證,我正在計算按月份/年和按計劃銷售的數量,並且只計算許可證數量。數據倉庫 - 維度建模

現在需要引入這些指標的跳躍。正如你所說的,當你來到某個特定的許可證組時,他們希望看到完全不同的指標。例如,如果在2011年3月銷售了100個許可證,其中有多少安裝,激活和取消了該產品。 (我們跟蹤該信息,但不在DW中)。所以,我正在尋找最好的方法來做到這一點...我假設我必須做的第一件事是添加三個維度來安裝,激活和取消 - 並且有三個事實表?或者每個許可證都有一個事實表,並且有一行用於取消,安裝或激活? (因此可以重複一個許可證)。或者有一個事實表,用於安裝,取消,激活的不同領域?另外,你如何將一個事實表與另一個事實表相關聯?它是通過維度,還是以其他方式相關?

任何幫助將不勝感激!

編輯:

謝謝你的職位......我還想到了第二個選項可能是正確的。但在這個實現中,我有一個獨特的問題。因此,衡量的事實之一是銷售許可證的數量 - 當然是按日期。比方說,我添加一行安裝,取消,激活。要求是他們能夠看到相關的事實。例如,如果我添加單獨的行,給定時間範圍,我可以知道有多少個已售出,以及安裝了多少個。

但他們希望看到給定的時間範圍,購買了多少,以及從中安裝了多少。例如,如果時間框架是行軍時間,並且在100人中有100人是在3月份出售的,那麼安裝了多少人 - 儘管他們可能比遊行時間晚安裝,因此行日期不會在他們期待的時間範圍內在....這是一個常見問題?它是如何解決的?

回答

4

我假設我要做的第一件事是爲已安裝,激活和取消添加三個維度 - 並且有三個事實表?

不是。許可證銷售是一個事實。它有一個價格。

許可證銷售具有日期,產品,客戶和計劃等維度。

「安裝」或「激活」是許可證的狀態更改事件。每個許可證都有「事件」(銷售,安裝,激活等)

因此,許可證具有「銷售」事實,「安裝」事實和「激活」事實。每一個都是(最低限度)與時間的關係。

或者每個許可證都有一個事實表,並且有一行用於取消,安裝或激活? (因此可以重複一個許可證)。

這給出了最大的靈活性,因爲每個事件可以具有多個維度豐富。然後可以組織一系列事件來提供許可證的歷史記錄。

這個結果非常好。

您通常需要爲簡單計數和總和創建彙總表,以避免必須遍歷最常見儀表板指標的所有事件。

要求是他們能夠看到相關的事實。

沒錯。你正在連接事實表中的幾行。事件被銷售的行,外部連接的事件被安裝的行外部連接事件被激活的行等等。這只是事實之間的外部連接。

所以。三月份的銷售計數很容易。活動=「銷售」。時間是time.month =「march」的所有行。簡單。

在成爲安裝的3月的銷售數。同樣的「三月銷售」,其中條款外部與這些許可證的所有「安裝」事件結合在一起。 「銷售額」的計數與計數(*)相同。由於外部連接存在一些空值,因此安裝計數可能會更小。

三月的銷售計數成爲激活。 「march sales」where clause與所有「激活」事件結合在一起。請注意,激活沒有日期限制。

或者有一個事實表,有不同的字段用於安裝,取消,激活?

這並不奏效,因爲表格的列決定了業務流程。該業務流程可能會發生變化,您將無休止地調整事實表中的列。

說了這麼做,「不如」意味着它不會給予最終的靈活性。在某些情況下,您不需要最終的靈活性。在某些情況下,行業(或法規)可能會定義一個相當固定的結構。

另外,你如何將一個事實表與另一個事實表相關聯?它是通過維度,還是以其他方式相關?

尺寸的定義。事實表只有兩件事 - 測量和FK的尺寸。

某些維度(如「許可證實例」)是退化的,因爲維度可能幾乎沒有可用的屬性而不是PK。

因此,您有一個「已售出」的事實,即與許可證綁定的事實,與許可證綁定的可選「已安裝」事實以及與許可證綁定的可選「激活」事實。許可證是對象ID(數據庫代理鍵),也可能是許可證標識符本身(可能是許可證序列號或數據庫外部的許可證)。

在做更多事情之前,請通過Ralph Kimball的數據倉庫工具包。

+0

@ user708305:對不起,我認爲這是情緒化的。我想在這裏提出一個非常明確的觀點。我試圖變得簡單直接。請刪除所有狀態評論。他們沒有幫助。我試圖使問題完整和一致,答案簡單而完整。狀態註釋既不能幫助,狀態評論既不是問題也不是答案,它們是一種元會話。請簡單地刪除它們。 – 2011-04-18 14:32:12