OLAP:BI建設(shè)的神器
編輯導(dǎo)語:數(shù)字化時(shí)代,人人都在講數(shù)字化,數(shù)據(jù)分析占據(jù)著核心地位。問到跟數(shù)據(jù)分析相關(guān)的工具,自然而然就會想到BI,到談商業(yè)智能(BI)時(shí),經(jīng)常會提到OLAP,有的人可能認(rèn)為OLAP工具就是BI,其實(shí)它只是BI的一部分,是很重要的一項(xiàng)分析技術(shù)。接下來本文作者為大家做了詳細(xì)解答,若有不足之處歡迎指正。
1. OLAP是什么
1.1 OLAP的基本概念
OLAP(online analysis processing),聯(lián)機(jī)分析處理技術(shù),多應(yīng)用于BI工具,也可以叫做OLAP工具/引擎/數(shù)據(jù)庫。它幫助數(shù)據(jù)分析師從多個(gè)角度對數(shù)據(jù)進(jìn)行分析和數(shù)據(jù)挖掘,用于多維數(shù)據(jù)查詢和報(bào)表處理的需求,核心是多維度。
提到多維度,就會有單維度、二維度,這時(shí)你就要在腦海里建立起“維”的概念,用維度去思考周圍的世界。
我舉一個(gè)服裝銷售的例子,商品銷售一般需要考慮的數(shù)據(jù)是銷售額、銷售成本和銷售利潤。下表是一張典型的二維數(shù)據(jù)表,其中月份就是一個(gè)關(guān)鍵的維度。
如果我想要在這張二維表的基礎(chǔ)上增加服裝的類別,比如說:毛衣、連衣裙、牛仔褲、半裙、T恤等,這時(shí)候維度就是月份和服裝的類別,度量值是銷售額、成本、利潤。
這就引入了概念:維度、維度的層次、類別、度量
- 維度:用來對數(shù)據(jù)進(jìn)行分類和人們觀察業(yè)務(wù)情況的角度;
- 維度的層次:根據(jù)維度細(xì)節(jié)程度不同,劃分出來的一類屬性,是維度預(yù)先定義的不同級別。例如,日期維度的層次包括年、月、日;
- 類別:是各維度的層次上數(shù)據(jù)項(xiàng)的取值,例如,日期維度的層次月的類別有:1月、2月、3月等;
- 度量:用來描述業(yè)務(wù)情況的數(shù)據(jù),例如,銷售額、成本、利潤都是度量值。
1.2 OLAP是如何做多維分析的
OLAP多維分析技術(shù)的數(shù)據(jù)處理邏輯是首先把數(shù)據(jù)預(yù)處理成數(shù)據(jù)立方體,可以簡單的理解為把源表選擇不重復(fù)的唯一值進(jìn)行分組,并把有可能的匯總都預(yù)先計(jì)算出來,當(dāng)用戶選擇多維度查詢或者分析時(shí),會在預(yù)先計(jì)算出來的基礎(chǔ)上很快給出用戶想要的結(jié)果,從而快速支持極大數(shù)據(jù)量的分析。
而這其中又涉及到一個(gè)知識點(diǎn):數(shù)據(jù)立方,數(shù)據(jù)立方體是什么?
還以剛才講到的服裝銷售數(shù)據(jù)情況為例,將數(shù)據(jù)處理成數(shù)據(jù)立方體之后如下圖:
數(shù)據(jù)立方體還有一個(gè)高大上的名字:多維數(shù)據(jù)模型。例如,將上圖的立方體拆可解成一個(gè)多維數(shù)據(jù)模型:
當(dāng)然,實(shí)際上一個(gè)商品銷售表的維度絕不止這些。例如,增加地域維度、支付維度、用戶維度等之后,就形成了一個(gè)星型多維模型:
這張圖中間的表叫事實(shí)表,四周的表叫維表,事實(shí)表是用來記錄具體事件,包含具體要素。
例如:某人(用戶ID)在某地(地域ID)某時(shí)(時(shí)間ID)通過某種方式(支付ID)購買了某產(chǎn)品(產(chǎn)品ID),維度表是對事實(shí)表中的每個(gè)字段展開描述,例如用戶ID,展開成一張維度表,記錄該用戶的姓名、地址、年齡、性別等信息。
通過對源表中的事實(shí)表以及相關(guān)的維表通過不同的拆分組合形成和業(yè)務(wù)相關(guān)的,具有多維度的數(shù)據(jù)立方,讓數(shù)據(jù)根據(jù)不同的業(yè)務(wù)需求呈現(xiàn)出千變?nèi)f化的結(jié)果。
多維分析是以多維的形式組織數(shù)據(jù),并采用切片、切塊、鉆取、旋轉(zhuǎn)等多種分析方式探查數(shù)據(jù),使分析人員或者管理人員能夠從多方面、多角度去查詢數(shù)據(jù),從而得到有價(jià)值的信息。
所以針對數(shù)據(jù)立方體包含的操作有:下鉆(drill- down)、上卷(roll- up)、切片(slice)、切塊(dice)、旋轉(zhuǎn)(pivot)
- 下鉆:往更細(xì)粒度深挖,從上一層次到下一層次,例如:浙江省維度的數(shù)據(jù),經(jīng)過鉆取可以分為杭州市、寧波市,湖州市、紹興市等地級市維度的數(shù)據(jù);
- 上卷:和鉆取意思相反,從細(xì)粒度向上聚合,例如將北京、上海、深圳、廣州的銷售數(shù)據(jù)進(jìn)行匯總查看一線城市的銷售數(shù)據(jù);將2020年四個(gè)季度的數(shù)據(jù)匯總成2020年總數(shù)據(jù)等都屬于上卷;
- 切片:選中特定的值進(jìn)行分析,比如只選擇電子產(chǎn)品的銷售數(shù)據(jù),或只選擇浙江省一個(gè)省粒度進(jìn)行分析;
- 切塊:比切片粒度更大,選擇某個(gè)維度中多個(gè)范圍內(nèi)的數(shù)據(jù)。例如選擇2020年第一季度到第二季度的銷售數(shù)據(jù),產(chǎn)品種類中電子產(chǎn)品和日用品的銷售數(shù)據(jù);
- 旋轉(zhuǎn):即維度位置互換,像一張表的行和列互換,旋轉(zhuǎn)是根據(jù)不同的需求,改變分析角度。例如本來將產(chǎn)品作為觀察角度,在地域和時(shí)間維度上不同產(chǎn)品的銷售情況,旋轉(zhuǎn)之后分析不同地區(qū)的銷售情況。
1.3 OLAP的類別
根據(jù)數(shù)據(jù)存儲格式OLAP可分為ROLAP、MOLAP、HOLAP。
- ROLAP:基于關(guān)系數(shù)據(jù)庫的OLAP,以關(guān)系型數(shù)據(jù)庫為基礎(chǔ),以關(guān)系型結(jié)構(gòu)對多維數(shù)據(jù)進(jìn)行數(shù)據(jù)存儲和展現(xiàn),常用的開源技術(shù)有Presto、Impala;
- MOLAP:基于多維數(shù)據(jù)庫的OLAP實(shí)現(xiàn),其中切片、切塊是主要技術(shù)手段,數(shù)據(jù)檢索速度較快,但是生成立方體的時(shí)間較長,數(shù)據(jù)存儲在多維立方體中,常用的開源技術(shù)有Kylin、Druid;
- HOLAP:是基于關(guān)系性和多維矩陣型等混合型的OLAP,它的技術(shù)主要結(jié)合MOLAP和ROLAP兩種技術(shù)的優(yōu)點(diǎn)。
在數(shù)據(jù)架構(gòu)時(shí),目前沒有一個(gè)OLAP技術(shù)能在數(shù)據(jù)量,靈活程度和性能上(吞吐和并發(fā))做到完美,這塊大家可以深入了解后,根據(jù)自身的業(yè)務(wù)需求選擇相應(yīng)的技術(shù)。
2. OLAP怎么用?
2.1 OLAP的實(shí)現(xiàn)架構(gòu)
OLAP就是用來幫助我們解決數(shù)據(jù)訪問、快速的數(shù)據(jù)分析、報(bào)表展示等問題,OLAP多維分析的實(shí)現(xiàn)架構(gòu)大致包括:業(yè)務(wù)數(shù)據(jù)源、數(shù)據(jù)倉庫、多維分析模型設(shè)計(jì)、多維分析立方體生成、報(bào)表圖表制作。
業(yè)務(wù)數(shù)據(jù)源:OLAP可以支持多種數(shù)據(jù)源連接分析,主流數(shù)據(jù)源包括SQL類數(shù)據(jù)源,可將其進(jìn)一步劃分為關(guān)系數(shù)據(jù)庫與分析型數(shù)據(jù)庫,其次還有NoSQL類數(shù)據(jù)庫、大數(shù)據(jù)離線計(jì)算系統(tǒng)以及API類數(shù)據(jù)源,文件類數(shù)據(jù)源等。
數(shù)據(jù)倉庫:將業(yè)務(wù)數(shù)據(jù)源中的數(shù)據(jù)按照一些業(yè)務(wù)屬性相關(guān)規(guī)則進(jìn)行數(shù)據(jù)開發(fā)后,形成一個(gè)個(gè)主題數(shù)據(jù)庫存放于數(shù)據(jù)倉庫中,當(dāng)需要做數(shù)據(jù)分析時(shí),直接從數(shù)據(jù)倉庫獲取相關(guān)主題數(shù)據(jù)。
多維分析模型:常用的多維分析模型有雪花模型和星型模型。
- 星型模型:將多維數(shù)據(jù)分成事實(shí)表和維表,事實(shí)表存儲的都是指標(biāo)數(shù)據(jù)和維表的關(guān)鍵字段值,維表存儲維度的層次、類別等信息。維表和事實(shí)表通過主外鍵關(guān)聯(lián)在一起,形成了星型模型。
- 雪花模型:對于層次較復(fù)雜的維,可以使用多個(gè)表來描述。例如,一個(gè)產(chǎn)品銷售數(shù)量實(shí)施表,維表有產(chǎn)品維表、時(shí)間維表、產(chǎn)品類型維表、地址維表,地址維表又包括國家、省級、地市等維表。通過建設(shè)雪花模型,可以最大限度的減少數(shù)據(jù)存儲量以及關(guān)聯(lián)較小的維表來改善數(shù)據(jù)查詢的性能。
多維分析立方體:就是我們上文講到的數(shù)據(jù)立方體,數(shù)據(jù)立方體使OLAP工具能夠?qū)崿F(xiàn)便捷快速查詢、分析。
報(bào)表圖表制作:我們使用BI工具時(shí),行外人最常接觸的功能,通過拖拉拽的方式,將數(shù)據(jù)用一個(gè)好看又直觀的方式展現(xiàn)出來。報(bào)表制作的組件有很多種,例如,柱狀圖、折線圖、雙軸圖(或叫柱線圖)、散點(diǎn)圖等。
2.2 OLAP的實(shí)施過程
OLAP的實(shí)施步驟主要分為以下幾個(gè)階段:
2.2.1 需求階段
需求分析包括:通過調(diào)研得出的業(yè)務(wù)需求(從維度、各業(yè)務(wù)的分析主題等方面進(jìn)行描述)、性能需求(系統(tǒng)相應(yīng)時(shí)間的要求)、技術(shù)需求、安全性需求以及需求的優(yōu)先級等。
在需求階段,是我們熟悉相關(guān)業(yè)務(wù)知識的過程,這對我們接下來的設(shè)計(jì)環(huán)節(jié)至關(guān)重要。
2.2.2 規(guī)劃階段
在需求分析的基礎(chǔ)上,需要對項(xiàng)目的整體結(jié)構(gòu)有一定的了解,按照軟件工程的一般規(guī)則和方法規(guī)劃整個(gè)項(xiàng)目的過程。同時(shí)需要確定整個(gè)項(xiàng)目需要的資源,包括人力,做哪些相關(guān)培訓(xùn)等內(nèi)容。
2.2.3 設(shè)計(jì)階段
設(shè)計(jì)階段是整個(gè)OLAP實(shí)施最重要的階段,包括對模型的分析、維度的分析和設(shè)計(jì)、事實(shí)表的設(shè)計(jì)等內(nèi)容。其中模型的分析包括定義問題和確定分析的目標(biāo)和內(nèi)容,A這家電商公司全年銷售的毛衣的利潤總額是多少?在2020年第一年度,牛仔褲的利潤趨勢是什么?
維度的分析包括分析問題中所涉及的維度是哪些,每個(gè)主題中維度和度量值是多少。
2.2.4 構(gòu)建模型階段
根據(jù)業(yè)務(wù)需求確定需要分析的主題,根據(jù)分析的主題確定分析的粒度和度量值,包括分析的維度。例如,服裝銷售情況信息主題主要從服裝類別、日期兩個(gè)維度進(jìn)行分析,最后測試和驗(yàn)證模型的正確性。
2.2.5 報(bào)表展現(xiàn)階段
報(bào)表展現(xiàn)階段,就是將分析的結(jié)果以一種直觀、清晰明了的方式展現(xiàn)出來,可以利用一些成熟的報(bào)表工具展示(例如Cognos),也可以選擇自己開發(fā),在OLAP模型的基礎(chǔ)上進(jìn)行多角度的分析并展示,達(dá)到說明問題的效果。
3. 結(jié)語
OLAP很大程度上能夠降低數(shù)據(jù)分析的使用門檻,大大降低了數(shù)據(jù)挖掘的成本,既方便數(shù)據(jù)分析師挖掘數(shù)據(jù),又能讓不熟悉sql語言的產(chǎn)品、運(yùn)營等業(yè)務(wù)同學(xué)通過簡單的鼠標(biāo)拖拽即完成數(shù)據(jù)分析或者查詢設(shè)計(jì)。
聯(lián)機(jī)分析處理技術(shù)是為了數(shù)據(jù)分析、數(shù)據(jù)查詢等需求能夠快速響應(yīng),BI工具是助力數(shù)據(jù)應(yīng)用的最后一公里,不論是處理簡單的報(bào)表需求還是真的幫助企業(yè)做職能決策,都是為了讓數(shù)據(jù)能夠真正的發(fā)揮價(jià)值。BI工具要想又快又好的完成需求,需要依附于OLAP技術(shù)。
當(dāng)我們接觸一個(gè)自己還不熟悉的新事物時(shí),可以先去研究其來源、底層的邏輯,就會發(fā)現(xiàn)新事物相關(guān)的蜘絲馬跡,畢竟站在巨人的肩膀上我們能走的更遠(yuǎn),在你研究的過程中,說不定就發(fā)現(xiàn)了什么新大陸,成為下一個(gè)創(chuàng)新者。
本文由 @金豌豆?原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自 Unsplash,基于 CC0 協(xié)議
確定沒問題?沒看到多對多是怎么樣的呢~
掃盲貼 感謝~
謝謝
專業(yè)
深入淺出牛牛牛
言簡意賅,十分贊!
謝謝