樣本數(shù)據(jù)處理 課件 第7、8章 基于Kettle構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)、基于Python的數(shù)據(jù)導(dǎo)入與導(dǎo)出_第1頁(yè)
樣本數(shù)據(jù)處理 課件 第7、8章 基于Kettle構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)、基于Python的數(shù)據(jù)導(dǎo)入與導(dǎo)出_第2頁(yè)
樣本數(shù)據(jù)處理 課件 第7、8章 基于Kettle構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)、基于Python的數(shù)據(jù)導(dǎo)入與導(dǎo)出_第3頁(yè)
樣本數(shù)據(jù)處理 課件 第7、8章 基于Kettle構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)、基于Python的數(shù)據(jù)導(dǎo)入與導(dǎo)出_第4頁(yè)
樣本數(shù)據(jù)處理 課件 第7、8章 基于Kettle構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)、基于Python的數(shù)據(jù)導(dǎo)入與導(dǎo)出_第5頁(yè)
已閱讀5頁(yè),還剩47頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于Kettle構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)新工科建設(shè)之路·數(shù)據(jù)科學(xué)與大數(shù)據(jù)系列樣本數(shù)據(jù)處理第七章01數(shù)據(jù)倉(cāng)庫(kù)的介紹在建設(shè)數(shù)據(jù)倉(cāng)庫(kù)之前,數(shù)據(jù)散落在企業(yè)各部門(mén)應(yīng)用的數(shù)據(jù)存儲(chǔ)中。如果要做數(shù)據(jù)分析,需要直接從業(yè)務(wù)數(shù)據(jù)庫(kù)中取數(shù)據(jù)來(lái)做分析。業(yè)務(wù)數(shù)據(jù)庫(kù)主要為業(yè)務(wù)操作服務(wù),雖然可以用于分析,但需要做很多額外的調(diào)整,主要有以下幾個(gè)問(wèn)題:結(jié)構(gòu)復(fù)雜、數(shù)據(jù)臟亂、理解困難、缺少歷史、大規(guī)模查詢(xún)緩慢。數(shù)據(jù)倉(cāng)庫(kù)的起因因?yàn)闃I(yè)務(wù)數(shù)據(jù)庫(kù)會(huì)接受大量用戶(hù)的輸入,如果業(yè)務(wù)系統(tǒng)沒(méi)有做好足夠的數(shù)據(jù)校驗(yàn),就會(huì)產(chǎn)生一些錯(cuò)誤數(shù)據(jù),如不合法的身份證號(hào)等。數(shù)據(jù)臟亂業(yè)務(wù)數(shù)據(jù)庫(kù)中存在大量語(yǔ)義不明的操作代碼,如各種狀態(tài)的代碼、地理位置的代碼等,在不同業(yè)務(wù)中的同一名詞可能還有不同的叫法。理解困難數(shù)據(jù)倉(cāng)庫(kù)的起因業(yè)務(wù)數(shù)據(jù)庫(kù)通常是根據(jù)業(yè)務(wù)操作的需要設(shè)計(jì)的,遵循3NF范式,盡可能減少數(shù)據(jù)冗余。結(jié)構(gòu)復(fù)雜當(dāng)業(yè)務(wù)數(shù)據(jù)量較大時(shí),查詢(xún)就會(huì)變得緩慢。大規(guī)模查詢(xún)緩慢數(shù)據(jù)倉(cāng)庫(kù)的起因出于節(jié)約空間的考慮,業(yè)務(wù)數(shù)據(jù)庫(kù)通常不會(huì)記錄狀態(tài)流變歷史,這就使得某些基于流變歷史的分析無(wú)法進(jìn)行。缺少歷史萌芽階段:分析系統(tǒng)和業(yè)務(wù)系統(tǒng)只能采用完全不同的架構(gòu)和設(shè)計(jì)方法分別處理。數(shù)據(jù)倉(cāng)庫(kù)的探索階段:一個(gè)結(jié)構(gòu)化的環(huán)境,能支持最終用戶(hù)管理其全部的業(yè)務(wù),并支持信息技術(shù)部門(mén)保證數(shù)據(jù)質(zhì)量。數(shù)據(jù)倉(cāng)庫(kù)的形成階段。數(shù)據(jù)倉(cāng)庫(kù)的發(fā)展數(shù)據(jù)倉(cāng)庫(kù)之父比爾·恩門(mén)在1991年出版的BuildingtheDataWarehouse《《建立數(shù)據(jù)倉(cāng)庫(kù)》)一書(shū)中所提出的定義被廣泛接受數(shù)據(jù)倉(cāng)庫(kù)是一個(gè)面向主題的、集成的、相對(duì)穩(wěn)定的、反映歷史變化的數(shù)據(jù)集合,用于支持管理決策和信息的全局共享。數(shù)據(jù)倉(cāng)庫(kù)的定義數(shù)據(jù)倉(cāng)庫(kù)的主要功能是將聯(lián)機(jī)事務(wù)處理(OLTP)經(jīng)年累月所累積的大量資料,通過(guò)數(shù)據(jù)倉(cāng)庫(kù)理論所特有的數(shù)據(jù)儲(chǔ)存架構(gòu),對(duì)數(shù)據(jù)進(jìn)行一個(gè)系統(tǒng)的分析整理,以利于各種分析方法如聯(lián)機(jī)分析處理(OLAP)、數(shù)據(jù)挖掘(DataMining)的進(jìn)行,并進(jìn)而支持如決策支持系統(tǒng)(DSS)、主管資訊系統(tǒng)(EIS)的創(chuàng)建,幫助決策者可以在大量資料中,快速有效地分析出有價(jià)值的信息,以利于決策的擬定及快速回應(yīng)外在環(huán)境變動(dòng),幫助構(gòu)建商務(wù)智能(BI)。數(shù)據(jù)倉(cāng)庫(kù)的定義數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)是面向主題的。操作型數(shù)據(jù)庫(kù)的數(shù)據(jù)組織面向事務(wù)處理任務(wù),各個(gè)聯(lián)機(jī)事務(wù)處理系統(tǒng)之間各自分離,而數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)是按照一定的主題域進(jìn)行組織的。主題是一個(gè)抽象的概念,是用戶(hù)使用數(shù)據(jù)倉(cāng)庫(kù)進(jìn)行決策時(shí)所關(guān)心的重點(diǎn)方面,一個(gè)主題通常與多個(gè)操作型信息系統(tǒng)相關(guān)。數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)是集成的。面向事務(wù)處理的操作型數(shù)據(jù)庫(kù)通常與某些特定的應(yīng)用相關(guān),數(shù)據(jù)庫(kù)之間相互獨(dú)立,并且往往是異構(gòu)的。數(shù)據(jù)倉(cāng)庫(kù)的特點(diǎn)數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)是相對(duì)穩(wěn)定的。操作型數(shù)據(jù)庫(kù)中的數(shù)據(jù)通常實(shí)時(shí)更新,數(shù)據(jù)根據(jù)需要及時(shí)變化。數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)反映歷史變化。操作型數(shù)據(jù)庫(kù)主要關(guān)心當(dāng)前某一個(gè)時(shí)間段內(nèi)的數(shù)據(jù),而數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)通常包含歷史信息,系統(tǒng)記錄了企業(yè)從過(guò)去某一時(shí)間點(diǎn)(如開(kāi)始應(yīng)用數(shù)據(jù)倉(cāng)庫(kù)的時(shí)間)到目前的各個(gè)階段的信息,通過(guò)這些信息,可以對(duì)企業(yè)的發(fā)展歷程和未來(lái)趨勢(shì)做出定量分析和預(yù)測(cè)。數(shù)據(jù)倉(cāng)庫(kù)的特點(diǎn)數(shù)據(jù)倉(cāng)庫(kù)的結(jié)構(gòu)倉(cāng)庫(kù)的基本架構(gòu)主要包含的是數(shù)據(jù)流入流出的過(guò)程,可以分為三層一一源數(shù)據(jù)、數(shù)據(jù)倉(cāng)庫(kù)、數(shù)據(jù)應(yīng)用,如圖7-1所示。數(shù)據(jù)倉(cāng)庫(kù)建模如圖7-2所示,維度建模的架構(gòu)是典型的星型架構(gòu)。數(shù)據(jù)倉(cāng)庫(kù)從各數(shù)據(jù)源獲取數(shù)據(jù)及在數(shù)據(jù)倉(cāng)庫(kù)內(nèi)的數(shù)據(jù)轉(zhuǎn)換和流動(dòng)都可以認(rèn)為是ETL(Extract-Transform-Load)的過(guò)程,ETL是數(shù)據(jù)倉(cāng)庫(kù)的流水線(xiàn),也可以認(rèn)為是數(shù)據(jù)倉(cāng)庫(kù)的血液,它維系著數(shù)據(jù)倉(cāng)庫(kù)中數(shù)據(jù)的新陳代謝,而數(shù)據(jù)倉(cāng)庫(kù)日常的管理和維護(hù)工作的大部分精力就是保持ETL的正常和穩(wěn)定。數(shù)據(jù)倉(cāng)庫(kù)與ETL的關(guān)系02構(gòu)建維度表最佳實(shí)踐表明,原則上在維度表中應(yīng)有代理鍵,一般用自動(dòng)生成無(wú)意義的整型數(shù)值作為代理鍵。代理鍵的管理管理各種鍵業(yè)務(wù)主鍵的主要作用是區(qū)分業(yè)務(wù)主體,必須來(lái)源于源系統(tǒng),即來(lái)源于上游的業(yè)務(wù)系統(tǒng)。為方便管理,業(yè)務(wù)主鍵和代理鍵一起存儲(chǔ)在維度表中。業(yè)務(wù)主鍵的管理維度表的加載1.星型模式星型模式顧名思義,事實(shí)表和維度表形成星形的樣式,即以事實(shí)表為中心,外圍是若干張維度表;維度表通過(guò)主鍵和事實(shí)表的外鍵關(guān)聯(lián),如圖7-12所示。維度表的加載2.雪花模式雪花模式是在星型模式的基礎(chǔ)之上擴(kuò)展而來(lái)的,每個(gè)維度可以再擴(kuò)散出更多的維度,根據(jù)維度的層級(jí)拆分成顆粒度不同的多張表,如圖7-13所示。業(yè)務(wù)主體數(shù)據(jù)變化時(shí),用當(dāng)前最新數(shù)據(jù)覆蓋舊數(shù)據(jù),只保留最新版本數(shù)據(jù)。業(yè)務(wù)主體數(shù)據(jù)變化時(shí),用當(dāng)前最新數(shù)據(jù)生成新的記錄,保存多個(gè)歷史版本。業(yè)務(wù)主體數(shù)據(jù)變化時(shí),用當(dāng)前最新數(shù)據(jù)生成新的記錄,并且在該行記錄中記錄上一個(gè)版本部分關(guān)鍵信息。緩慢變化維度(1)部分重要性不高的字段,如果數(shù)據(jù)有更新,希望直接覆蓋舊記錄。(2)部分重要字段,如果數(shù)據(jù)有更新,希望保存本次記錄及歷史記錄。(3)部分次重要字段,如果數(shù)據(jù)有更新,希望保存本次記錄及上次記錄。數(shù)據(jù)倉(cāng)庫(kù)與ETL的關(guān)系03構(gòu)建事實(shí)表事實(shí)表是業(yè)務(wù)數(shù)據(jù)的集合,其數(shù)據(jù)量較大,往往有幾GB、幾十GB、幾TB,某些行業(yè)甚至有幾PB的數(shù)據(jù)。在數(shù)據(jù)量不大的情況下,可以采用“表輸出”步驟實(shí)現(xiàn),但在數(shù)據(jù)量巨大的情況下,此方法是不適合的,原因在于:“表輸出”步驟對(duì)數(shù)據(jù)庫(kù)操作是基于數(shù)據(jù)操作語(yǔ)言(DataManipulationLanguage,DML)語(yǔ)句實(shí)現(xiàn)的,對(duì)數(shù)據(jù)庫(kù)進(jìn)行DML操作會(huì)帶來(lái)兩個(gè)問(wèn)題。批量加載批量加載1.MySQL批量加載“MySQL批量加載”的設(shè)置如圖7-25所示。批量加載2.Oracle批量加載“Oracle批量加載”的設(shè)置如圖7-28所示。參照完整性指的是事實(shí)表和維度表之間建立的外鍵約束。維護(hù)數(shù)據(jù)完整性獲取維度表代理鍵是構(gòu)建事實(shí)表重要環(huán)節(jié)之一。查找維度表代理鍵在數(shù)據(jù)加載中正常的加載順序應(yīng)是“先加載維度表,再加載事實(shí)表”。處理數(shù)據(jù)延遲查找維度常見(jiàn)的事實(shí)表主要有以下3種類(lèi)型。事務(wù)型事實(shí)表(Transactionfacttable):是事務(wù)粒度的,以單個(gè)事務(wù)、單個(gè)事件為單位,每個(gè)事務(wù)作為事實(shí)表的一行數(shù)據(jù),如刷卡一次會(huì)有一條刷卡記錄。周期快照事實(shí)表(Periodicsnapshotfacttable):是時(shí)間周期粒度的,以固定時(shí)間周期為單位,每個(gè)時(shí)間周期對(duì)應(yīng)一行數(shù)據(jù),如每一天、每一個(gè)月的話(huà)費(fèi)支出。累積快照事實(shí)表(Aecumulatingsnapshotfacttable):當(dāng)新的事實(shí)到達(dá)后,更新事實(shí)表的記錄。事實(shí)表的處理事實(shí)表的處理事務(wù)型事實(shí)表示例如圖7-29所示。事實(shí)表的處理加載事務(wù)型事實(shí)表流程示例如圖7-30所示。事實(shí)表的處理周期快照事實(shí)表示例如圖7-36所示。事實(shí)表的處理加載周期快照事實(shí)表流程示例如圖7-37所示。事實(shí)表的處理累積快照事實(shí)表示例如圖7-42所示。事實(shí)表的處理加載累積快照事實(shí)表流程示例如圖7-43所示。基于Python的數(shù)據(jù)導(dǎo)入與導(dǎo)出新工科建設(shè)之路·數(shù)據(jù)科學(xué)與大數(shù)據(jù)系列樣本數(shù)據(jù)處理第八章01PandasSeries是一種類(lèi)似于數(shù)組的一維數(shù)據(jù)結(jié)構(gòu),它包含一系列的元素及元素對(duì)應(yīng)的標(biāo)簽。元素的標(biāo)簽被稱(chēng)為index。使用Pandas的功能之前,需要先導(dǎo)入Pandas模塊。本章的Python代碼運(yùn)行環(huán)境為IPython,版本是6.1.0,對(duì)應(yīng)的Python版本為3.6.3。SeriesSeries對(duì)象輸出的左邊一列是索引(index),右邊一列是對(duì)應(yīng)的元素值,最下面一行是元素的類(lèi)型。由于代碼中創(chuàng)建Series對(duì)象時(shí)沒(méi)有指定index,默認(rèn)創(chuàng)建的index是0~N-1的整數(shù)值,其中N是Series對(duì)象的元素個(gè)數(shù)。除了把Series看成一種類(lèi)似于數(shù)組的數(shù)據(jù)結(jié)構(gòu),還可以把它看成一種定長(zhǎng)且有序的map,map的key是index,value是Series的元素值。因此,許多map的操作可以應(yīng)用在Series上。SeriesSeries對(duì)象的index也可以通過(guò)賦值來(lái)改變。SeriesSeries對(duì)象是可變的,這意味著通過(guò)賦值能夠改變它。DataFrameDataFrame是一種帶標(biāo)簽的二維數(shù)據(jù)結(jié)構(gòu),有行索引、列索引,其中各列可以存儲(chǔ)不同的數(shù)據(jù)類(lèi)型。為了幫助理解,可以將一個(gè)DataFrame對(duì)象想象為Excel中的一張表或數(shù)據(jù)庫(kù)中的一張表。DataFrame也可以看作Series的集合,DataFrame是Pandas中最常用的數(shù)據(jù)結(jié)構(gòu)。構(gòu)造一個(gè)DataFrame對(duì)象有多種方式,其中常用的一種方式是基于dict構(gòu)造。DataFrame的各列是有序排列的,可以在創(chuàng)建時(shí)傳遞columns參數(shù)調(diào)整順序,而index參數(shù)為每一行指定了一個(gè)index。columns參數(shù)中指定的列如果不存在,那么創(chuàng)建的DataFrame對(duì)象中的對(duì)應(yīng)列值均為NaN,表示一個(gè)不可用的值。使用類(lèi)似于獲取dict值的語(yǔ)法,能夠獲取DataFrame對(duì)象的一列,存放在Series對(duì)象中。DataFrame02文本文件的導(dǎo)入與導(dǎo)出CSV(CommaSeparatedValues,逗號(hào)分隔的值).CSV文件是一種比較簡(jiǎn)單的文本,廣泛用于存儲(chǔ)表格式的行列數(shù)據(jù),可以直接使用Excel軟件打開(kāi)。Pandas提供了read_csv函數(shù),用于導(dǎo)入CSV文件,并得到一個(gè)DataFrame對(duì)象。此外,Pandas還提供了read_table函數(shù),能夠?qū)胗闷渌指舴念?lèi)CSV文件。在IPython中,可以使用!語(yǔ)法運(yùn)行外部命令。cat是Linux上的一個(gè)命令,用于將文件內(nèi)容顯示在屏幕上,在Windows環(huán)境下可以用type命令顯示文件。導(dǎo)入CSV文件可以使用read_csv函數(shù)將文件內(nèi)容讀入一個(gè)DataFrame對(duì)象。Pandas還提供另外一個(gè)函數(shù)read_table函數(shù),可以用于讀入CSV文件。testl.csv文件的第一行指定了各列的名稱(chēng),但是很多時(shí)候CSV文件沒(méi)有這樣的名稱(chēng)行。導(dǎo)入CSV文件Pandas也提供了反向的操作,能夠?qū)ataFrame導(dǎo)出為CSV格式的文件。read_csv函數(shù)的返回值是一個(gè)DataFrame對(duì)象,它具有to_csv方法,能夠達(dá)到導(dǎo)出的目的。導(dǎo)出CSV文件DataFrame中的缺失值默認(rèn)使用空字符串,narep參數(shù)可以改變這一行為。to_csv的默認(rèn)行為會(huì)輸出index列和標(biāo)題行,如果不希望輸出這些,可以將index和header均設(shè)置為False。如果不希望輸出所有列,可以使用columns參數(shù)選擇只輸出一部分。導(dǎo)出CSV文件JSON格式數(shù)據(jù)的導(dǎo)入與導(dǎo)出JSON(JavaScriptObjeetNotation,JS對(duì)象簡(jiǎn)譜)格式在Web中使用非常廣泛,常用于前端網(wǎng)頁(yè)的JavaScript腳本和后端Web服務(wù)器交換數(shù)據(jù)。與表格型的數(shù)據(jù)相比,JSON格式的數(shù)據(jù)更加復(fù)雜和靈活,能夠表達(dá)類(lèi)似于樹(shù)結(jié)構(gòu)的數(shù)據(jù)?,F(xiàn)存多種庫(kù)和工具用于JSON格式數(shù)據(jù)的處理。對(duì)常規(guī)的任務(wù),使用Python語(yǔ)言?xún)?nèi)置的JSON模塊是最方便的。在使用JSON模塊之前應(yīng)先導(dǎo)入它。JSON模塊的load函數(shù)能夠?qū)隞SON數(shù)據(jù),返回值是一個(gè)dict對(duì)象。JSON模塊的dump函數(shù)提供了反向的功能,將一個(gè)dict對(duì)象導(dǎo)出為JSON格式的文件。JSON格式數(shù)據(jù)的導(dǎo)入與導(dǎo)出03Excel文件的導(dǎo)入與導(dǎo)出Excel是微軟的經(jīng)典之作,在日常工作中的數(shù)據(jù)整理、分析和可視化方面,有其獨(dú)到的優(yōu)勢(shì)。但如果數(shù)據(jù)量超大,Excel的劣勢(shì)也就隨之而來(lái),甚至因?yàn)閮?nèi)存溢出無(wú)法打開(kāi)文件,后續(xù)的分析更是難上加難。本節(jié)介紹使用Python的Pandas解決此問(wèn)題,即通過(guò)Pandas完成讀/寫(xiě)Excel。Excel文件的導(dǎo)入與導(dǎo)出Pandas會(huì)默認(rèn)讀取Excel文件中的第1個(gè)工作表,也就是默認(rèn)名為Sheetl的工作表。Excel文件的導(dǎo)入與導(dǎo)出Pandas讀取Excel可以通過(guò)readexcel函數(shù)將工作表讀取成DataFrame。04數(shù)據(jù)庫(kù)的導(dǎo)入與導(dǎo)出將關(guān)系數(shù)據(jù)庫(kù)的表格數(shù)據(jù)導(dǎo)入成Pandas的DataFrame并不難理解。Pandas連接關(guān)系數(shù)據(jù)庫(kù)需要Python連接對(duì)應(yīng)數(shù)據(jù)庫(kù)的客戶(hù)端,以MySQL數(shù)據(jù)庫(kù)為例,Python連接它的庫(kù)有幾種,最常用的是PyMySQL,用戶(hù)可以通過(guò)pip或者Anaconda方式進(jìn)行安裝。關(guān)系數(shù)據(jù)庫(kù)的導(dǎo)入與導(dǎo)出非關(guān)系數(shù)據(jù)庫(kù)(NoSQL)具有多種多樣的存儲(chǔ)方式和產(chǎn)品實(shí)現(xiàn)。其中,Mon

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論