Leo Yeh's Blog

Cognos 建模應用 (2)

基本介紹

教學目標

初步了解 Cognos 進階建模應用。

重點概念

每當讓使用者直接透過報表專屬的模型套件建立相關的報表,若發生問題時我們要如何進行解決呢? 首先要先了解基數 (Cardinality) ,所謂基數指的是查詢子物件之間的關係程度,可以是一對一、一對多或多對多等情況。透過 Cognos 進行建模時會為了聚合目標和識別多維度查詢子物件採用基數的概念,此時可能會發一些有關報表的陷阱,主要可分為:

  1. 兩個事實資料表之間並沒有維度內容的參考。
  2. 產生不必要的查詢分割,此時會自動套用 FULL OUTER JOIN 關係。
  3. 採用模棱兩可關聯的查詢子物件撰寫報表。

針對上述三種陷阱在建立模型時進行檢查,以及在建立關係時進行驗證,就能夠降低產生報表問題的發生,也就是說透過基數可以避免對於資料進行重複計數,最佳化存取和識別不同的查詢主題所需的事實和維度。接著建立模型時會先建立基礎物件視圖 (Foundation Object View) 主要是由資料來源所產生查詢子物件和所有查詢子物件之間的關係,再透過合併視圖 (Consolidation View) 重複使用模型中已經建立的查詢子物件,並且進行運算和過濾,最後再匯整至呈現視圖 (Presentation View) 以利使用者直接產生報表。為何要多一層合併視圖,卻不能在基礎物件視圖進行運算和過濾,主要原因在於維護困難和可攜性不佳。

更進一步說明,建模應用建議為三層架構,主要可分為:

  1. 資料來源視圖 (Data Source View)
  2. 業務邏輯視圖 (Business Logic View)
  3. 呈現視圖 (Presentation View)

其中資料來源視圖又稱基礎物件視圖主要以資料來源為主、業務邏輯視圖又稱合併視圖主要以業務邏輯為主,透過上述的架構將易於維護和可攜性更佳。

此外再建立合併視圖之前,我們會先進行前置處理,主要可分為一致維度 (Conformed Dimensions) 和虛擬維度 (Virtual Dimensions) 其中一致維度代表在不同業務中能夠將共同資訊進行共享,主要採用查詢將其整合在一起,例如: 資料庫中有查詢一中包括產品和事實一,查詢二中包括產品和事實二,此時我們會在 Cognos 中透過查詢將其自動整合在一起,也就是自動套用 FULL OUTER JOINS,此時報表就能同時包括產品、事實一和事實二。虛擬維度代表在事實資料表之間再建立維度資料表,避免事實資料表多對多的關係對應導致報表中的數值加總不正確,也因此會需要透過維度資料表進行群組之後再產生關係,建議所有有關查詢子物件的關係皆要在基礎物件視圖中建立,再提供給合併視圖使用。

接著在合併視圖中將經常被使用的運算整合至其中,例如: 收益 = 數量 × 單位銷售金額,其中可以使用查詢物件、參數和函數的搭配進行運算,此外還能將經常被使用的篩選整合至其中,篩選主要可分兩種類型分別為嵌入和獨立,其差別主要在於嵌入主要是針對特定查詢子物件進行篩選,而獨立則是事先建立可以套用至所有查詢子物件。

最後同時選取在合併視圖中建立好的所有查詢子物件,按右鍵選擇「Create Star Schema Grouping」建立捷徑至呈現視圖中,接著在套件發佈之後,就能夠讓使用者直接使用呈現視圖中的捷徑快速產生關聯報表。此外合併視圖與呈現視圖之間,實務應用時會再細分出維度視圖 (Dimensional View) 主要是以來基於合併視圖中查詢子物件的多維度物件為主,其被應用於線上即時分析處理 (OLAP) 的查詢報表。

相關資源

⬅️ Go back