99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁職業(yè)發(fā)展OLAP的多維數(shù)據(jù)分析_數(shù)據(jù)分析師
OLAP的多維數(shù)據(jù)分析_數(shù)據(jù)分析師
2016-02-23
收藏

OLAP的多維數(shù)據(jù)分析

聯(lián)機分析處理(OLAP)的概念最早是由關(guān)系數(shù)據(jù)庫之父E.F.Codd于1993年提出的。當時,Codd認為聯(lián)機事務處理(OLTP)已不能滿足終端用戶對數(shù)據(jù)庫查詢分析的需要,SQL對大數(shù)據(jù)庫進行的簡單查詢也不能滿足用戶分析的需求。用戶的決策分析需要對關(guān)系數(shù)據(jù)庫進行大量計算才能得到結(jié)果,而查詢的結(jié)果并不能滿足決策者提出的需求。因此Codd提出了多維數(shù)據(jù)庫和多維分析的概念,即OLAP。

一、OLAP的概念
根據(jù)OLAP產(chǎn)品的實際應用情況和用戶對OLAP產(chǎn)品的需求,人們提出了一種對OLAP更簡單明確的定義,即共享多維信息的快速分析。
(1)快速性
用戶對OLAP的快速反應能力有很高的要求。系統(tǒng)應能在5秒內(nèi)對用戶的大部分分析要求做出反應。如果終端用戶在30秒內(nèi)沒有得到系統(tǒng)響應就會變得不耐煩,因而可能失去分析主線索,影響分析質(zhì)量。對于大量的數(shù)據(jù)分析要達到這個速度并不容,因此就更需要一些技術(shù)上的支持,如專門的數(shù)據(jù)存儲格式、大量的事先運算、特別的硬件設計等。
(2)可分析性
OLAP系統(tǒng)應能處理與應用有關(guān)的任何邏輯分析和統(tǒng)計分析。盡管系統(tǒng)需要事先編程 ,但并不意味著系統(tǒng)已定義好了所有的應用。用戶無需編程就可以定義新的專門計算,將其作為分析的一部分,并以用戶理想的方式給出報告。用戶可以在OLAP平臺上進行數(shù)據(jù)分析,也可以連接到其他外部分析工具上,如時間序列分析工具、成本分配工具、意外報警、數(shù)據(jù)開采等。
(3)多維性
多維性是OLAP的關(guān)鍵屬性。系統(tǒng)必須提供對數(shù)據(jù)分析的多維視圖和分析,包括對層次維和多重層次維的完全支持。事實上,多維分析是分析企業(yè)數(shù)據(jù)最有效的方法,是OLAP的靈魂。
(4)信息性
不論數(shù)據(jù)量有多大,也不管數(shù)據(jù)存儲在何處,OLAP系統(tǒng)應能及時獲得信息,并且管理大容量信息。這里有許多因素需要考慮,如數(shù)據(jù)的可復制性、可利用的磁盤空間、OLAP產(chǎn)品的性能及與數(shù)據(jù)倉庫的結(jié)合度等。
二、OLAP的多維數(shù)據(jù)概念
多維結(jié)構(gòu)是決策支持的支柱,也是OLAP的核心。OLAP展現(xiàn)在用戶面前的是一幅幅多維視圖。 
1.維
假定某某是個百貨零售商,有一些因素會影響他的銷售業(yè)務,如商品、時間、商店或流通渠道,更具體一點,如品牌、月份、地區(qū)等。對某一給定的商品,也許他想知道該商品在哪個商店和哪段時間的銷售情況。對某一商店,也許他想知道哪個商品在哪段時間的銷售情況。在某一時間,也許他想知道哪個商店哪種產(chǎn)品的銷售情況。因此,他需要決策支持來幫助制定銷售政策。這里,商店、時間和產(chǎn)品都是維。各個商店的集合是一維,時間的集合是一維,商品的集合是一維。維就是相同類數(shù)據(jù)的集合,也可以理解為變量。而每個商店、每段時間、每種商品都是某一維的一個成員。每個銷售事實由一個特定的商店、特定的時間和特定的商品組成。
維有自己固有的屬性,如層次結(jié)構(gòu)(對數(shù)據(jù)進行聚合分析時要用到)、排序(定義變量時要用到)、計算邏輯(是基于矩陣的算法,可有效地指定規(guī)則)。這些屬性對進行決策支持是非常有用的。
2.多維性
人們很容易理解一個二維表(如通常的電子表格),對于三維立方體同樣也容易理解。 OLAP通常將三維立方體的數(shù)據(jù)進行切片,顯示三維的某一平面。如一個立方體有時間維、商品維、收入維,其圖形很容易在屏幕上顯示出來并進行切片。但是要加一維(如加入商店維),則圖形很難想象,也不容易在屏幕上畫出來。要突破三維的障礙,就必須理解邏輯維和物理維的差異。OLAP的多維分析視圖就是沖破了物理的三維概念,采用了旋轉(zhuǎn)、嵌套、切片、鉆取和高維可視化技術(shù),在屏幕上展示多維視圖的結(jié)構(gòu),使用戶直觀地理解、分析數(shù)據(jù),進行決策支持。
三、OLAP的多維數(shù)據(jù)結(jié)構(gòu) 
數(shù)據(jù)在多維空間中的分布總是稀疏的、不均勻的。在事件發(fā)生的位置,數(shù)據(jù)聚合在一起,其密度很大。因此,OLAP系統(tǒng)的開發(fā)者要設法解決多維數(shù)據(jù)空間的數(shù)據(jù)稀疏和數(shù)據(jù)聚合問題。事實上,有許多方法可以構(gòu)造多維數(shù)據(jù)。
1.超立方結(jié)構(gòu)
超立方結(jié)構(gòu)(Hypercube)指用三維或更多的維數(shù)來描述一個對象,每個維彼此垂直。數(shù)據(jù)的測量值發(fā)生在維的交叉點上,數(shù)據(jù)空間的各個部分都有相同的維屬性。這種結(jié)構(gòu)可應用在多維數(shù)據(jù)庫和面向關(guān)系數(shù)據(jù)庫的OLAP系統(tǒng)中,其主要特點是簡化終端用戶的操作。 
超立方結(jié)構(gòu)有一種變形,即收縮超立方結(jié)構(gòu)。這種結(jié)構(gòu)的數(shù)據(jù)密度更大,數(shù)據(jù)的維數(shù)更少,并可加入額外的分析維。
2.多立方結(jié)構(gòu)
在多立方結(jié)構(gòu)(Multicube)中,將大的數(shù)據(jù)結(jié)構(gòu)分成多個多維結(jié)構(gòu)。這些多維結(jié)構(gòu)是大數(shù)據(jù)維數(shù)的子集,面向某一特定應用對維進行分割,即將超立方結(jié)構(gòu)變?yōu)樽恿⒎浇Y(jié)構(gòu)。它具有很強的靈活性,提高了數(shù)據(jù)(特別是稀疏數(shù)據(jù))的分析效率。
一般來說,多立方結(jié)構(gòu)靈活性較大,但超立方結(jié)構(gòu)更易于理解。終端用戶更容易接近超立方結(jié)構(gòu),它可以提供高水平的報告和多維視圖。但具有多維分析經(jīng)驗的MIS專家更喜歡多立方結(jié)構(gòu),因為它具有良好的視圖翻轉(zhuǎn)性和靈活性。多立方結(jié)構(gòu)是存儲稀疏矩陣的一個更有效方法,并能減少計算量。因此,復雜的系統(tǒng)及預先建立的通用應用傾向于使用多立方結(jié)構(gòu),以使數(shù)據(jù)結(jié)構(gòu)能更好地得到調(diào)整,滿足常用的應用需求。許多產(chǎn)品結(jié)合了上述兩種結(jié)構(gòu),它們的數(shù)據(jù)物理結(jié)構(gòu)是多立方結(jié)構(gòu),但卻利用超立方結(jié)構(gòu)來進行計算,結(jié)合了超立方結(jié)構(gòu)的簡化性和多立方結(jié)構(gòu)的旋轉(zhuǎn)存儲特性。
3. 活動數(shù)據(jù)的存儲
用戶對某個應用所提取的數(shù)據(jù)稱為活動數(shù)據(jù),它的存儲有以下三種形式:
(1)關(guān)系數(shù)據(jù)庫
如果數(shù)據(jù)來源于關(guān)系數(shù)據(jù)庫,則活動數(shù)據(jù)被存儲在關(guān)系數(shù)據(jù)庫中。在大部分情況下, 數(shù)據(jù)以星型結(jié)構(gòu)或雪花結(jié)構(gòu)進行存儲。 
(2)多維數(shù)據(jù)庫
在這種情況下,活動數(shù)據(jù)被存儲在服務器上的多維數(shù)據(jù)庫中,包括來自關(guān)系數(shù)據(jù)庫和終端用戶的數(shù)據(jù)。通常,數(shù)據(jù)庫存儲在硬盤上,但為了獲得更高的性能,某些產(chǎn)品允許多維數(shù)據(jù)結(jié)構(gòu)存儲在RAM上。有些數(shù)據(jù)被提前計算,計算結(jié)果以數(shù)組形式進行存儲。
(3)基于客戶的文件
在這種情況下,可以提取相對少的數(shù)據(jù)放在客戶機的文件上。這些數(shù)據(jù)可預先建立, 如Web文件。與服務器上的多維數(shù)據(jù)庫一樣,活動數(shù)據(jù)可放在磁盤或RAM上。這三種存儲形式有不同的性能,其中關(guān)系數(shù)據(jù)庫的處理速度大大低于其他兩種。
4.OLAP數(shù)據(jù)的處理方式
OLAP有三種數(shù)據(jù)處理方法。事實上,多維數(shù)據(jù)計算不需要在數(shù)據(jù)存儲位置上進行。 
(1)關(guān)系數(shù)據(jù)庫
即使活動的OLAP數(shù)據(jù)存儲在關(guān)系數(shù)據(jù)庫中,采用在關(guān)系數(shù)據(jù)庫上完成復雜的多維計算也不是較好的選擇。因為SQL的單語句并不具備完成多維計算的能力,要獲得哪怕是最普通的多維計算功能也需要多重SQL。在許多情況下,一些OLAP工具用SQL做一些計算,然后將計算結(jié)果作為多維引擎輸入。多維引擎在客戶機或中層服務器上做大部分的計算工作 ,這樣就可以利用RAM來存儲數(shù)據(jù),提高響應速度。
(2)多維服務引擎
大部分OLAP應用在多維服務引擎上完成多維計算,并且具有良好的性能。因為這種方式可以同時優(yōu)化引擎和數(shù)據(jù)庫,而服務器上充分的內(nèi)存為有效地計算大量數(shù)組提供了保證。
(3)客戶機 
在客戶機上進行計算,要求用戶具備性能良好的PC機,以此完成部分或大部分的多維計算。對于日益增多的瘦型客戶機,OLAP產(chǎn)品將把基于客戶機的處理移到新的Web應用服務器上。
四、多維數(shù)據(jù)庫
多維數(shù)據(jù)庫(Multi-Dimesional Database,MDD)可以簡單地理解為:將數(shù)據(jù)存放在一個n維數(shù)組中,而不是像關(guān)系數(shù)據(jù)庫那樣以記錄的形式存放。因此它存在大量稀疏矩陣,人們可以通過多維視圖來觀察數(shù)據(jù)。多維數(shù)據(jù)庫增加了一個時間維,與關(guān)系數(shù)據(jù)庫相比,它的優(yōu)勢在于可以提高數(shù)據(jù)處理速度,加快反應時間,提高查詢效率。目前有兩種MDD 的OLAP產(chǎn)品:基于多維數(shù)據(jù)庫的MOLAP和基于關(guān)系數(shù)據(jù)庫的ROLAP。R OLAP建立了一種新的體系,即星型結(jié)構(gòu)。 MDD并沒有公認的多維模型,也沒有像關(guān)系模型那樣標準地取得數(shù)據(jù)的方法(如SQL、 API等)。基于MDD的OLAP產(chǎn)品,依據(jù)決策支持的內(nèi)容使用范圍也有很大的不同。在低端,用戶使用基于單用戶或小型LAN的工具來觀察多維數(shù)據(jù)。這些工具的功能性和實用性可能相當不錯,但由于受到規(guī)模的限制,它們不具備OLAP的所有特性。這些工具使用超立方結(jié)構(gòu),將模型限制在n維形態(tài)。當模型足夠大且稀疏數(shù)據(jù)沒有控制好時,這種模型將會不堪一擊。這些工具使用數(shù)據(jù)庫的大小是以MB來計量的,而不是以GB計量的,因此只能進行只讀操作,且具備有限的復雜計算。在高端,OLAP工具用4GL提供了完善的開發(fā)環(huán)境、統(tǒng)計分析、時間序列分析、財政報告、用戶接口、多層體系結(jié)構(gòu)、圖表等許多其他功能。盡管不同的OLAP工具都使用了它們自己的多維數(shù)據(jù)庫,但它們在不同程度上也利用了關(guān)系數(shù)據(jù)庫作為存儲媒體。因為關(guān)系數(shù)據(jù)庫和OLAP工具同時在高端服務器上處理,所以速度和效率仍然很快。純多維數(shù)據(jù)庫引擎也被開發(fā)出來。盡管這些工具缺乏4GL及充分的開發(fā)環(huán)境,但卻有比高端MDD工具所使用的數(shù)據(jù)庫更為復雜的數(shù)據(jù)庫。這些工具也具有統(tǒng)計分析、財務分析和時間序列分析等功能,并有自己的API,允許其對前端的開發(fā)環(huán)境開放。
MDD能提供優(yōu)良的查詢性能。存儲在MDD中的信息比在關(guān)系數(shù)據(jù)庫中的信息具有更詳細的索引,可以常駐在內(nèi)存中。MDD的信息是以數(shù)組形式存放的,所以它可以在不影響索引的情況下更新數(shù)據(jù)。因此MDD非常適合于讀寫應用。
五、 OALP的多維數(shù)據(jù)分析
1. 切片和切塊
在多維數(shù)據(jù)結(jié)構(gòu)中,按二維進行切片,按三維進行切塊,可得到所需要的數(shù)據(jù)。如在" 城市、產(chǎn)品、時間"三維立方體中進行切塊和切片,可得到各城市、各產(chǎn)品的銷售情況
2. 鉆取
鉆取包含向下鉆取和向上鉆取操作, 鉆取的深度與維所劃分的層次相對應。
3.旋轉(zhuǎn)
通過旋轉(zhuǎn)可以得到不同視角的數(shù)據(jù)。

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }