[原创]附1.知識準備之統一維度模型UDM
UDM有很強的建模能力概括為:
A.DSV(數據源視圖)
同模型使用多數據源
客戶端view和計算列
豐富的圖形環境
B.單UDM多事實表
C.主動緩存->實現實時訪問
D.維度
事實維度
多對多維度
參考維度
數據挖掘
E.元數據全球化/多語言支持
F.UDM視圖
模型視圖上提供"邏輯視圖",不同人看到不同視圖.
下面是微軟對UDM的敘述,應該仔細體會。
想要直接從資料來源 (例如 Enterprise Resource Planning (ERP) 資料庫) 擷取資訊的一般使用者,面臨到許多重大的挑戰:
- 這些資料來源的內容通常很難瞭解,設計時考慮到的是系統和開發人員,而非一般使用者。
- 使用者需要的資訊,通常是分佈在多個異質資料來源中。即使只是處理不同的關聯式資料庫,使用者也需要瞭解每個資料庫的特色 (例如,使用之 SQL 的方言)。尤有甚者,這些資料來源的類型可能大不相同,不只包含關聯式資料庫,還包含檔案和 Web 服務。
- 雖然許多資料來源的目的都是保存大量的交易層級詳細資料,不過支援商務決策所需的查詢常會牽涉到摘要、彙總的資訊。隨著資料量的增加,擷取這些摘要值以供互動式一般使用者分析,所需的時間往往變得太長。
- 資料來源中通常並未封裝商務規則。使用者必須自行解譯資料。
統一維度模型 (UDM) 的角色,旨在提供使用者和資料來源之間的橋樑。UDM 建構在一或多個實體資料來源之上,然後一般使用者使用各種用戶端工具之一 (例如 Microsoft Excel),針對 UDM 發出查詢。

最低限度,UDM 只是建構為資料來源上的簡易層時,對一般使用者而言,就具有更簡單且更容易瞭解的資料模型、與異質後端資料來源隔離,以及提高摘要類型查詢的效能等等優點。在某些狀況下,會完全自動建構像這樣的簡單 UDM。對 UDM 建構的投資愈大,模型可以提供的豐富中繼資料會產生更多的優點。
UDM 提供下列優點:
- 可以大幅增進使用者模型的內容。
- 即使資料量很大,也能提供支援互動式分析的高效能查詢。
- 可以在模型中擷取商務規則,以支援更豐富的分析。
- 支援「封閉迴圈」,使用者在這種迴圈中操作自己看到的資料。
基本一般使用者模型
假設一個範例,一般使用者想要比較不同時間週期的銷售和配額。
銷售資料儲存在主要的 Sales and Inventory 資料庫中,當然包含其他許多資料表。即使在識別相關資料表後,我們發覺單一實體 (例如 Product) 的資料已在許多資料表上混亂掉,且由於應用程式邏輯強制執行參考完整性,因此這些資料表之間並未定義關聯性。Sales Quotas 儲存在其他應用程式的資料庫中。沒有一個資料庫擷取任何商務規則,例如在比較配額與實際銷售時,應使用出貨之訂單的日期,而非訂單的其他許多日期 (訂購日期、到期日期、排程日期等等)。
直接存取資料來源
首先,假設一般使用者直接存取資料來源的情況。下圖顯示使用簡單工具建構查詢的範例。

至此,使用者有相當大的進展。使用者:
- 已檢查過大量的加密具名資料表,來尋找所要的資料表。
- 已識別出應使用哪些資料行,來將資料表聯結在一起。
- 已選取包含所要詳細資料的資料行,通常必須從大量系統導向的詳細資料中取出這些資料行。例如,在保存產品類別目錄之詳細資料的 11 個資料行中,與人相關的實際只有 2 個姓名資料行。
現在使用者要定義「外部」與「內部」聯結的使用位置,以及如何將詳細資料群組,以支援必要的彙總。
不過,還有更糟的情況。如何讓其他資料來源的資料聯結進來?即使其中有一個資料庫支援分散式查詢,大部份使用者是無能力建構必要的查詢的,而各種工具通常也不支援使用者執行此功能。
複製程式碼 | |
|---|---|
select Quotas.QuotaAmount, Quotas.EmployeeId, ?FROM OPENROWSET(’SQLOLEDB’,’seattle1’; ’Sales’;’MyPass’, ’select * FROM Forecasts.dbo.SalesQuota?) As Quotas | |
接著考慮其他資料來源 (例如 Web 服務),使用者遇到的另一大障礙,是決定如何進行必要的遠端呼叫,以及處理傳回的 XML,將它與其他資料聯結。
最後一點,即使建構好一個查詢 (「依類別目錄顯示銷售與配額總計」),還必須在下一個查詢重做大部份的工作 (「...接著依員工細分」),後面的每個查詢也一樣。
透過 UDM 存取
以下是一個對照的範例,範例顯示一般使用者存取建構在這些資料來源之上的簡單 UDM 時,建立查詢的情形。

在此範例中顯示的 UI,是 Microsoft SQL Server 所提供之開發工具中的 UI。其他用戶端工具 (例如 Office Excel 或 Office Web 元件 (OWC)),或者支援 UDM 的其他眾多報表和分析工具的 UI 也差不多是這樣。
左邊的樹狀檢視會顯示 UDM 的內容。首先,請注意:
- 只會向使用者顯示使用者導向的相關項目。「系統資料行」,例如 rowguid 或上次修改日期,並不會顯示。
- 使用的名稱是易記名稱,而非基礎資料庫中採用之開發人員導向命名慣例所產生的名稱。
UDM 也會將每個商務實體 (例如 Product 或 Employee) 的所有屬性,群組到另一個「維度」。因此在這個範例中,用戶端可以參考 Product Color、Subcategory 和 Category,不必明確地執行各種相關資料表之間的聯結。
至於顯示使用者通常在彙總中需要之交易值,或度量的資料行 (例如「Sales Amount」或「Quota」),則顯示為「量值」。這種利用「量值」與「維度」來表現資料的方法,稱為維度模型,已經在業界證實是讓一般使用者容易瞭解的一種成功模型。
圖表的右邊會顯示包含在目前查詢中的元素。在此情況下,若要要求「Sales Amount and Quota by Product Category」,使用者只要從樹狀檢視拖曳 3 個相關項目,即可定義查詢。使用者不必指定實際存取兩個不同資料來源所需的任何詳細資料,以及執行許多相關資料表之間的必要聯結。
模型當然定義了預設使用的簡單格式 (例如,使用貨幣符號)。也可以定義更豐富的格式,包括條件式格式 (例如,如果低於某個臨界值,就以紅色顯示值)。
同一個模型支援各種查詢。例如,只要從員工維度拖曳一個屬性進來,就可以依員工細分數字。
進階考量
以上的範例會示範即使是簡單 UDM,也能大幅簡化資料的基本瀏覽,不過在提供一般使用者資料存取時,還存在著其他的挑戰。例如:
- 支援不同使用者執行之許多不同類型查詢的 UDM,本身的大小可能會變得很大。如何確保只需要特定資料的使用者,不會淹沒在不相關的資訊中?
- 如何支援全球的使用者,以自己的母語查看報表的期望?
- 如何很容易地詢問有關時間的所有一般問題 (例如,「顯示與去年同期比較的銷售」)。
此章節會探討上述部份問題,以顯示 UDM 如何支援更進階的資料瀏覽。
階層
雖然將實體的所有屬性合併到一個維度中,可以為使用者大幅簡化模型,不過屬性之間有一些其他關聯性,利用簡單清單是無法表現的。在上述的案例中,Category、SubCategory 和 SKU 會定義一個階層,可以在這個階層中組織產品。因為使用者通常希望根據這類階層執行分析,例如,先依 Category 查看總計,然後向下鑽研至 SubCategory 和最低的 SKU 層級,而 UDM 就允許定義這樣的階層。每個階層只是一連串的屬性,可以在查詢中使用這些屬性,以簡化這些向下鑽研/向上鑽研狀況。
以下是階層可能在一般使用者 UI 中顯示的範例。範例中的模型包含許多不同的階層,產品會依這些階層組織。定義查詢 (「先依產品類別目錄顯示銷售和配額,然後細分至子類別目錄」) 時,只要拖曳「Products By Category」階層,然後按兩下以展開「Bike」類別目錄,就能看到更詳細的資料。

UDM 會處理如何在階層之層級中進行導覽的細節,在此案例中,還會處理 SubCategory 層級無法使用 Quotas,只能在每一 Category 使用的細節。
父子式階層是一種特殊的階層,涵蓋與本身有複雜關聯性的許多實體。圖裡的 Employee 維度有一個「Employees By Organization Structure」階層。使用此階層可以輕鬆地導覽父子式關聯性,以及分析積存值。銷售副總裁 Charles Marshall 的配額,包含其所有下屬職員的配額總和,加上與其直接相關聯的任何配額。

分類
使用者自然地將分類套用至資料 - 例如「這些屬性全都是關於員工的個人詳細資料、該屬性是電子郵件地址」。UDM 提供兩種專用機制,能夠讓一般使用者工具根據這些分類,以及顯示之資料的意義,提供其他的值:
- 可以在具有語意意義的類別目錄中加入維度、屬性和其他物件,更有智慧地在用戶端工具內使用。例如,某個屬性可能標示為 URL,而報表可以根據 URL 的值啟用導覽。另一個屬性可能標示為電子郵件地址,能夠讓報表用戶端在某些使用者動作下,自動開啟新的電子郵件。
- 可以將量值、階層和其他物件群組至對使用者有意義的資料夾中,讓報表工具能夠以方便管理的方式,顯示大量的屬性。例如,可能有一組「Customer\Demographics」屬性。
時間
時間資訊通常只使用 DataTime 或 Date 資料類型,記錄在基礎資料來源中。雖然熟悉 SQL (如果是 Web 服務,則是 XPath) 的使用者可以擷取需要查看的部份,例如依年度加總的資料,不過很難根據其他形式的時間 (例如,「依每週的星期幾顯示銷售」或「從 7 月 1 日開始,依會計年度細分」) 來詢問問題。
但是,UDM 有內建的時間知識,包括各種不同的日曆:
- 自然;
- 會計;
- 報表 (’445’ 等);
- 製造 (13 期);
- ISO8601。
因此,模型可以包含一個時間維度,其中提供定義每一天之詳細資料的內容豐富的屬性集。在下圖中,使用者只要將相關項目從樹狀檢視拖曳至篩選區域,就能選取查看 2001 會計年度的銷售量和配額。UDM 知道如何將項目翻譯成日期的範圍,也知道查詢中必須包含這些日期出貨之訂單的商務規則,而非包含到期或訂購的訂單。因此 UDM 隱含地產生正確的聯結。

此外,UDM 還提供回答一般時間相關問題 (例如週期至另一週期的比較 -「比較本月與去年同月」) 的特定支援。
翻譯
在前面的範例中,模型內容和資料都以英文顯示。如果只有這個選項,很顯然對擁有國際性使用者的組織是個問題。
為了解決這個問題,UDM 允許以任何語言提供中繼資料的翻譯。使用特定地區設定連接的用戶端,將會看到以適當語言顯示的所有中繼資料。
此外,模型也可以提供資料的翻譯。一個屬性可以對應至資料來源中的不同元素,提供不同語言的翻譯。例如,前面範例中使用的工具若是從法文用戶端連接,將會以法文顯示 UDM 和查詢結果,如下所示。

檢視方塊
此處使用的範例模型大小不大,不過實際使用之模型定義的範圍可能會大很多,可能包含數十個量值和維度,而每個維度又包含數十或數百個屬性。但是,從事特定工作的使用者通常不需要看到整個模型。因此應該是要定義縮小版的模型檢視,以避免使用者淹沒在過大的模型大小中。
UDM 利用檢視方塊提供這些檢視。一個 UDM 可以有許多檢視方塊,每個檢視方塊只代表模型中與特定使用者群組相關的一個特定子集 (量值、維度、屬性等等)。然後每個檢視方塊,可以與定義應看到檢視方塊之使用者的使用者安全性角色相關聯。
例如,可以定義「Seattle Inventory」檢視方塊,其中只包含存貨量值群組中的量值、隱藏「Warehouse By Location」階層,並將預設 City 設定為「Seattle」。
屬性語意
UDM 為每個屬性提供了其他的語意,旨在讓資訊能夠更容易地使用。範例如下:
- 名稱 vs. 索引鍵:查看關聯式資料庫,可能不是很容易發現,EmployeeID 是系統產生的無意義唯一索引鍵。但是,UDM 允許 Employee 屬性同時擁有索引鍵 (唯一的 EmployeeID) 與名稱 (在此情況下,是 FirstName 和 LastName 的串連)。現在,像「顯示員工」這樣的查詢,將會正確地區別姓名相同的員工,但是會向使用者顯示有意義的名稱。
- 順序:有時候,必須以和簡單字母或數字順序不同的固定順序,來顯示屬性的值。例如:
- 週中的天顯示為「星期日」、「星期一」、「星期二」等等。
- 屬性以「高」、「中」、「低」等順序顯示。
- 週中的天顯示為「星期日」、「星期一」、「星期二」等等。
- 分隔:針對數值屬性,顯示屬性的每個相異值往往沒什麼用。例如,要求「Sales by Product Price」時,查看不同價格的小數後兩位 ($9.97、$10.05、$10.10、…),就不如依價格範圍查看銷售量 (<$10、$10 - $15、…) 來得有用。UDM 允許使用各種準則,將屬性分隔為這樣的範圍。
關鍵效能指標 (KPI)
企業通常會定義關鍵效能指標 (KPI),這是用來測量企業健全狀況的重要標準。UDM 允許定義這些 KPI,以便更容易瞭解資料的群組與呈現。
UDM 中的每個 KPI,針對某些效能標準 (例如 Sales 層級),最多定義四個運算式:
- 實際值。
- 目標值。
- 狀態。介於 -1 和 1 之間的正規化值,提供實際 vs. 目標的狀態 ( -1 是「極差」、1 是「極好」)。
- 趨勢。介於 -1 與 1 之間的正規化值,提供經過一段時間的趨勢 (-1 是「變得更差」、1 是「變得更好」)。
此外,KPI 可以定義建議的圖形,例如號誌燈,在顯示狀態和趨勢時表示「好、平均、差」。
使用 KPI 允許用戶端工具以使用者更容易瞭解的方式,呈現相關的量值。下圖顯示用戶端工具會如何顯示組織到顯示資料夾中之三個 KPI 的範例。

Performance
一般使用者的互動式瀏覽需要快速的回應時間。這對於經常進行這類瀏覽的極大資料集,也是一項挑戰。
為了改善效能,UDM 提供快取服務,可能快取從基礎資料來源讀取的詳細資料,以及根據該資料預先計算的彙總值。但是,使用這類快取值可能意味著資料過時。商務環境的需求,會決定資訊需要多久更新一次。某些資料是一定要以最新的數值顯示,至於其他資料,則 2 小時或 2 天前的舊數值就可能足夠。
為了反映這種情形,UDM 允許明確地管理快取 (例如,可以定義排程,在每天 2 a.m. 重新整理快取),或者使用「主動式快取」透明地管理。使用者可以指定資料必須有多新 (包括隨時更新),UDM 會提供快取自動建立和管理,以提供可能的最快查詢回應,同時反映控制資料更新時間的原則。
分析
前面各節討論的是,UDM 可以如何支援資料的互動式瀏覽。但是,如果我們要在使用者模型中包含重要的商務邏輯,那麼只從基礎資料來源提供資訊,很顯然是不夠的,即使以更容易瞭解與使用的形式提供也一樣不夠。
因此,UDM 提供能夠定義資料之簡單與複雜計算的能力。
基本分析
簡單來說,查詢通常會傳回彙總資料 (「依類別目錄顯示銷售」,而非「顯示每一個銷售訂單產品線」)。各種量值應如何彙總呢?例如,基礎關聯式資料中,並無任何內容表示「Sales Amount」可以明顯地加總,而「Unit Price」則應平均。UDM 會加入這個語意。可以使用各種配置來定義彙總的方法:
可以使用 Sum、Count、Distinct Count、Max 或 Min 的簡單彙總函數。
可以針對時間以外的所有維度,使用 ’Sum’ 等簡單函數將彙總定義為局部加總,時間則使用 ’Last period’。例如,Inventory Level 可以從 Product 加總到 Product Category,而 Month 的存貨層級並非每一天的存貨層級加總,而是每月最後一天的存貨層級加總。
彙總能夠以帳戶類型為基礎,例如 Income 與 Expense。
可以自訂彙總,以滿足任何特殊需求。
UDM 也可以包含導出成員。這些成員並未直接與來源資料相關聯,而是從該資料衍生。例如,可以定義導出成員 Variance,以計算 Sales 與 Quota 之間的差異。
同樣地,UDM 可以定義使用者所要的實體集,例如前 10 大客戶 (依銷售量排列),或者最重要的產品。然後就可以很方便地使用這些實體集,來限制對特定實體集之查詢的範圍。
進階分析
即使考慮到這裡顯示的是簡單範例,不過很明顯地,使用者所需的計算遠超過 ’Variance’ 小範例的範圍。例如:
「顯示每個時間週期的 3 個月移動平均」
「與去年同期比較,出現年度成長的年度?」
「以基準貨幣報告銷售量。使用銷售時的每日平均匯率,將這些值轉換回原始貨幣」。
「以高於本年度 10%,來計算下一年度每一類別目錄的預算銷售,然後根據過去 3 年的相關平均銷售量,分攤到每一項產品」。
UDM 提供定義這些計算的內容眾多的模型,提供類似於多維度試算表的工具,可以根據其他資料格的值,來計算某個資料格的值,例如,「2003」年「Bike」類別目錄的 AverageSales。但是,即使這種比喻也無法適當地描述 UDM 裡的計算。部份原因在於,資料格的值可能不只依據其他資料格的值來計算,同時也根據過去的值來計算。因此,可以支援同時存在的等式;例如,收益是收入減掉費用而得出的,但是,紅利 (包含在費用中) 則從收益衍生。
除了提供專為撰寫這類計算而設計的強大語言 MDX (多維度運算式) 以外,UDM 也能夠與 .Net 整合。此一整合允許以任何可驗證的 .NET 語言 (例如 C#.NET 或 Visual Basic.NET) 編寫預存程序與函數,然後從 MDX 叫用,在計算中使用。
當然,用戶端是與這些計算的詳細資料隔離的。對用戶端應用程式而言,模型現在已有更實用的量值。例如,在以下的範例中,使用者會根據 Sales,針對在美國銷售之獲利最高的產品檢視各種導出量值。

與資料採礦整合
利用多樣易讀的格式顯示資料很有用,但是要如何從該資料推斷新資訊呢?
UDM 與資料採礦技術緊密整合,以允許對資料執行採礦,然後再使用發現的模式進行預測。
封閉迴圈
對使用者而言,看到資料通常會產生更多疑問,或者讓使用者想要採取一些動作。例如:
- 「構成該數字的詳細銷售量為何?」
- 「配額太低了 - 必須提高」。
- 「看起來很奇怪 - 我要在這個數字加上註解」。
- 「我們網站上的促銷詳細資料內容如何?」
因此,只利用易懂的方式向使用者顯示資料是不夠的。還要讓使用者更容易依照所看到資料採取適當的動作。
UDM 可以藉由兩種方式支援此功能:
- 允許資料的變更;
- 允許將動作與資料相關聯。
回寫
UDM 並非唯讀的。資料也可以透過 UDM 更新。以量值為例,更新實際上可以和原始值分開保存,當成這些值的差異。
此外,也可以更新摘要數字。例如,以預算狀況為例。雖然預算金額可能會在詳細資料層級出現 (例如,依小組與帳戶),不過最早可能只會出現在摘要的層級 (依部門與帳戶類型)。
動作
UDM 支援資料之間的連結,以及根據資料採取動作等等動作。主要的動作種類有:
- URL:移至指定的 URL。這支援導覽至某個 URL 以取得更多資訊,以及導覽至某個網路架構應用程式,以允許執行某個工作。例如:
- 若是產品,會移至描述該產品的公司網站;
- 若是產品/倉儲組合,則會移至網路架構存貨管理應用程式,並傳遞產品/倉儲作為參數,以允許增加安全庫存量。
- 若是產品,會移至描述該產品的公司網站;
- 報表:執行指定的報表。例如,針對指定的產品,動作可能是執行描述產品與目前訂購狀態的參數化產品報表。
- 鑽研:鑽研至最低的可用詳細資料層級。例如,依產品與客戶檢查總銷售量的使用者,可以進行鑽研以檢視對總和有影響的所有銷售交易。
動作可以和特定的資料區域關聯。例如,導覽網頁的動作可能適用於每一種產品,但是檢視詳細庫存傳送交易的動作,只會只會適用於依產品與倉儲分類的每個數量值。
雖然動作定義為 UDM 的一部份,不過用戶端應用程式需要負責擷取適用之動作的詳細資料,並提供給使用者,然後依需要起始動作。
安全性
對 UDM 的存取是可以控制的。主要的安全性功能如下:
- UDM 提供以角色為基礎的安全性。可以定義角色 (例如 ’Regional analyst’),授與角色權限,再將使用者包含為每個角色的成員。使用者的實際權限,是授與每個使用者所屬角色之權限的聯集。角色的權限也可以定義「強式拒絕」,移除與使用者所屬之其他角色無關的權限。
- 管理權限 (例如變更 UDM) 可以單獨授與,與資料存取權限分開。另外,也可以個別定義下列各項的權限:
- 讀取物件的中繼資料;
- 存取 (讀取/寫入) 資料。
- 讀取物件的中繼資料;
- 可以在更細微的資料粒度層級保護資料,最低到個別的資料格 (例如,銷售 ’Widget’ 產品給客戶 ’ACME’)。安全性也可以是條件式的 (例如,只有在部門員工超過 5 人時,角色才能夠查看該部門的薪資總和)。
- 權限可以定義是否應使用視覺化總計,若是使用,總計只會反映使用者擁有權限的較低層級成員。資料格存的取權也可以視情況決定。在此情況下,唯有其他所有資料格都能檢視時,才能檢視從其他資料格衍生的資料格 (例如,從收入與成本衍生的收益)。
推荐到鲜果: 查阅更多相关主题的帖子: UDM



複製程式碼
评论