為什麼會產生olap?
隨著資料庫技術的發展應用,資料庫儲存的資料量從m位元組以及g(千兆)位元組過渡到t位元組和p位元組,同時,使用者的查詢需求也越來越複雜,設計的已不僅是查詢或者操縱一張關係表中的一條或幾條記錄,而且要對多張次奧中的千萬條記錄的資料進行資料分析和資訊綜合,關聯式資料庫也已經不能全部滿足這一要求。
決策資料就是多維資料,多維資料就是決策的主要內容,olap專門設計用於支援複雜的分析操作,側重對決策人員和高層管理人員的決策支援,可以根據分析人員的要求快速、靈活地進行大資料量的複雜查詢處理,並且以一種直觀易懂的形式將查詢結果提供給決策人員,以便他們準確掌握企業或者公司的經營狀況,了解物件的需求,指定正確的方案。
維度和量度是olap cube中的概念:
維度就相當於座標系上就座標軸,比如時間,部門; --維度表
度量就是能在報表裡面反應出來的資料,比如銷售額; --事實表
那麼olap要這些維度和量度幹什麼呢?其實簡單點來說對於不同的業務需求使用不同的維度,
比如說要展現2023年第一季度公司的銷售額,那麼我們就需要從時間維度上分析銷售額這個量度;
如果要展現某個部門的銷售額,則從部門這個維度上來分析銷售額。
olap
聯機分析處理 (olap--online analytical procession) 允許以一種稱為多維資料集的多維結構訪問來自商業資料來源(如資料倉儲)的經過聚合和組織整理的資料。olap會為關聯式資料庫帶來3個優點:持續的快速響應,基於元資料的查詢及電子**樣式的公式。主要優點是能夠提前計算數值,這樣就能快速地呈現報表。olap工具通常分為兩種基本基本模式:電子**模型和資料庫模型。
cube
cube即多維資料集,是指一組用於分析資料的相關度量值和維度,是分析服務中儲存和分析的基本單位。cube是聚合資料的集合,允許查詢並快速返回結果。cube就像乙個座標系,每乙個dimension代表乙個座標系,要想得到乙個乙個點,就必須在每乙個座標軸上取得乙個值,而這個點就是cube中的cell。如下(圖-1)所示。cube能夠包含不同維度的度量值,因此cube有時也稱為統一維度模型(unified dimensional model,udm)。
(圖-1)
度量(measures)
度量表示用來聚合分析的數字資訊,度量的集合組合成了乙個特殊的維度。如數量、銷售額、利潤等。度量值是事實資料,它是使用者可能要聚合的事務性值或度量。度量值源自乙個或多個源表中的列,並且分組到度量值組。度量可分為兩個範疇:儲存度量和計算度量。儲存度量是直接載入、聚合和儲存進資料庫的,它們可以從儲存的計算結果中獲取。計算度量是查詢時動態計算度量的值,只有計算規則是儲存在資料庫中的。度量值可以是「銷售額」、「出貨量」等。
維度(dimention)
維度是一組屬性,表示與多維資料集中度量值相關的領域,並且用於分析多維資料集中的度量值。例如,「客戶」維度可能包括「客戶名稱」、「客戶性別」以及「客戶所在市縣」等屬性,使用者可以按這些屬性對多維資料集中的度量值進行分析。屬性源自乙個或多個源表中的列。可以將每個維度中的屬性組織到層次結構中,以便提供分析路徑。比如(圖-1)中的三個維度:時間、**、路線。 維度有3個主要的組成部分:層級、級別和屬性。
層級(hierarchy)
維度層級是可選的,但是olap系統常見的。乙個層級是乙個邏輯結構,它將乙個維度的成員分組以用於分析。比如,乙個time維度可能有乙個描述了月份怎樣分組以顯示乙個季度和季度怎樣分組以顯示乙個整年的層級。乙個維度可以有多個層級。乙個維度的結構是基於父子關係來組織層級的。
級別(level)
乙個維度上可以包含的層次結構,表示特定的分類。如地域維度可以包含的級別層次級:國家、省、市;時間維度包含的級別層次包含:年、季度、月、日等。每乙個級別顯示了層級中的乙個位置。底層級別上的級別包含了聚合它下面級別的值。不同級別的成員有乙個一對多的父子關係。乙個層級一般包含幾個級別,而乙個單獨的級別可以包含進不只乙個的層級。如果在乙個維度上建有多個層級,那麼可能乙個層級會顯示在不只乙個的層級中或可能只存在於乙個層級中。
屬性
屬性提供了關於維度成員的描述資訊,並且當你選擇維度成員用於分析的時候也是可用的。大多數屬性型別是可選的。
元資料(metadata)
元資料就是關於資料的資料。通過增加標籤,數字就從資料變成了資訊。如下圖所示,我們知道70代表銷售量。這個標籤就是元資料。元資料也稱為度量值,包含在有屬性和層次結構組成、與數值資料相關的維度中。
成員
乙個成員是維度(包括度量)上的專案值。如圖-1中時間維度上」半年「級別的成員就包含:上半年、下半年...季度成員包含:第一季度、第二季度等。
計算成員
計算成員是一種執行通過特殊表示式動態計算的成員。也就形成了度量(measures)的結果。計算成員不影響現有的cube資料,它基於cube資料,通過各種數學表示式和各種函式定義,可以建立複雜的表示式。任何動態分析功能,都可以通過計算成員實現,比如實現佔比,同期比等等。
資料倉儲(data warehouse--dw)
資料集市(data mart)
為了減小dw的壓力,同時簡化使用者的訪問,同乙個主題的有關資料被提取出來,進行彙總並裝載進資料集市。資料集市可以是關係型資料庫,也可以是olap資料庫。
事實表(fact table)
事實表是指在維度資料倉儲中,儲存度量值的詳細值或事實的表。事實表儲存的詳細程度被稱作事實表的粒度(granularity)。和事實表相關的維度被稱為事實表的維數(dimensionality)。具有不同粒度或不同維數的事實必須分別儲存在不同的事實表中。乙個資料倉儲通常可以有多個事實表。事實表都會使用被稱為維度鍵(dimension key)的整數來標示維度成員,而不是採用描述性的名稱。比如,用1表示中國,2表示美國。
事實表中包含數值資料的列對應於維度模型中的度量值,因此,每個事實表都是一組度量值。分析服務用一種稱為度量值組(measure group)的邏輯結構組織資訊,度量值組與單個事實表及其相關的維度對應。
維度表(dimension table)
在事實表中使用整數維度鍵時,維度成員的標籤必須存入另乙個表-----維度表。事實表中的每個維度鍵都有乙個維度表。維度錶用一行來表示每個維度的鍵屬性成員。鍵屬性有兩列,分別包含整數維數鍵和屬性標籤。關係型資料庫使用匹配的主鍵列(在維度表中)和外來鍵列(在事實表中)的值將事實表和維度表中對應的記錄聯接。許多維度屬性可用來對維度記錄進行分組,並對每組中相關的事實進行彙總。能夠用於建立分組的屬性是可聚合的,其彙總值被稱為聚合值(aggregate)。不可聚合的屬性被稱為成員屬性(member property)。
**鍵(surrogate key)
漸變維度(slowly changing dimension)
在dw中使用**鍵最具說服力的原因是處理屬性值隨時間改變的情況。屬性值能改變的維度稱為漸變維度
異常處理機制
異常處理的三個步驟 檢查異常,丟擲異常,處理異常 異常處理基本原理 把需要檢測的程式放到try塊中,把異常處理的程式放在catch塊中。如果執行乙個函式出現了異常,可以丟擲異常資訊。然後查詢try塊下面的catch塊是否可以處理該異常。如果該函式不處理該異常,將傳遞給它的上一級函式 呼叫函式 如果它...
Handler處理機制
handler缺點 如果要運送兩種型別的資料 比如乙個bitmap,乙個object 就不能運送,但可以用bunder來傳輸 使用handler的步驟 1 建立乙個handler 2 在需要用到資料傳輸的地方通過handler得到message物件,通過message攜帶要傳輸的資料 3 直接通過h...
異常處理機制
1 c 中異常處理機制使得異常的引發和異常的處理不必在同乙個函式中。2 異常是專門針對抽象程式設計中的一系列錯誤處理的,c 的函式機制是棧結構,先進後出,依次訪問,無法跳躍。3 異常超脫於函式機制,決定了其對函式的跨越式回跳。4 異常跨越函式 普通用法 基本用法 void add int a,int...