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

下載本文檔

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

文檔簡介

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

溫馨提示

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

最新文檔

評論

0/150

提交評論