⑴ ETL的工具應用
ETL工具的典型代表有:Informatica、Datastage、OWB、微軟DTS、Beeload、Kettle、久其ETL……
開源的工具有eclipse的etl插件:cloveretl
數據集成:快速實現ETL
ETL的質量問題具體表現為正確性、完整性、一致性、完備性、有效性、時效性和可獲取性等幾個特性。而影響質量問題的原因有很多,由系統集成和歷史數據造成的原因主要包括:業務系統不同時期系統之間數據模型不一致;業務系統不同時期業務過程有變化;舊系統模塊在運營、人事、財務、辦公系統等相關信息的不一致;遺留系統和新業務、管理系統數據集成不完備帶來的不一致性。
實現ETL,首先要實現ETL轉換的過程。體現為以下幾個方面:
1、空值處理:可捕獲欄位空值,進行載入或替換為其他含義數據,並可根據欄位空值實現分流載入到不同目標庫。
2、規范化數據格式:可實現欄位格式約束定義,對於數據源中時間、數值、字元等數據,可自定義載入格式。
3、拆分數據:依據業務需求對欄位可進行分解。例,主叫號 861082585313-8148,可進行區域碼和電話號碼分解。
4、驗證數據正確性:可利用Lookup及拆分功能進行數據驗證。例如,主叫號861082585313-8148,進行區域碼和電話號碼分解後,可利用Lookup返回主叫網關或交換機記載的主叫地區,進行數據驗證。
5、數據替換:對於因業務因素,可實現無效數據、缺失數據的替換。
6、Lookup:查獲丟失數據 Lookup實現子查詢,並返回用其他手段獲取的缺失欄位,保證欄位完整性。
7、建立ETL過程的主外鍵約束:對無依賴性的非法數據,可替換或導出到錯誤數據文件中,保證主鍵唯一記錄的載入。
⑵ etl是什麼
對於做過 BI 開發的朋友,ETL 並不陌生,只要涉及到數據源的數據抽取、數據的計算和處理過程的開發,都是 ETL,ETL 就這三個階段,Extraction 抽取,Transformation 轉換,Loading 載入。
從不同數據源抽取數據 EXTRACTION ,按照一定的數據處理規則對數據進行加工和格式轉換 TRASFORMATION,最後處理完成的輸出到目標數據表中也有可能是文件等等,這個就是 LOADING。
再通俗一點講,ETL 的過程就跟大家日常做菜一樣,需要到菜市場的各個攤位買好菜,把菜買回來要摘一下,洗一洗,切一切最後下鍋把菜炒好端到飯桌上。菜市場的各個攤位就是數據源,做好的菜就是最終的輸出結果,中間的所有過程像摘菜、洗菜、切菜、做菜就是轉換。
在開發的時候,大部分時候會通過 ETL 工具去實現,比如常用的像 KETTLE、PENTAHO、IBM DATASTAGE、INFORNAICA、微軟 SQL SERVER 裡面的 SSIS 等等,在結合基本的 SQL 來實現整個 ETL 過程。
也有的是自己通過程序開發,然後控制一些數據處理腳本跑批,基本上就是程序加 SQL 實現。
哪種方式更好,也是需要看使用場景和開發人員對那種方式使用的更加得心應手。我看大部分軟體程序開發人員出身的,碰到數據類項目會比較喜歡用程序控制跑批,這是程序思維的自然延續。純 BI 開發人員大部分自然就選擇成熟的 ETL 工具來開發,當然也有一上來就寫程序腳本的,這類 BI 開發人員的師傅基本上是程序人員轉過來的。
用程序的好處就是適配性強,可擴展性強,可以集成或拆解到到任何的程序處理過程中,有的時候使用程序開發效率更高。難就難在對維護人員有一定的技術要求,經驗轉移和可復制性不夠。
用 ETL 工具的好處,第一是整個 ETL 的開發過程可視化了,特別是在數據處理流程的分層設計中可以很清晰的管理。第二是鏈接到不同數據源的時候,各種數據源、資料庫的鏈接協議已經內置了,直接配置就可以,不需要再去寫程序去實現。第三是各種轉換控制項基本上拖拉拽就可以使用,起到簡化的代替一部分 SQL 的開發,不需要寫代碼去實現。第四是可以非常靈活的設計各種 ETL 調度規則,高度配置化,這個也不需要寫代碼實現。
所以在大多數通用的項目中,在項目上使用 ETL 標准組件開發會比較多一些。
ETL 從邏輯上一般可以分為兩層,控制流和數據流,這也是很多 ETL 工具設計的理念,不同的 ETL 工具可能叫法不同。
控制流就是控制每一個數據流與數據流處理的先後流程,一個控制流可以包含多個數據流。比如在數據倉庫開發過程中,第一層的處理是ODS層或者Staging 層的開發,第二層是DIMENSION維度層的開發,後面幾層就是DW 事實層、DM數據集市層的開發。通過ETL的調度管理就可以讓這幾層串聯起來形成一個完整的數據處理流程。
數據流就是具體的從源數據到目標數據表的數據轉換過程,所以也有 ETL 工具把數據流叫做轉換。在數據流的開發設計過程中主要就是三個環節,目標數據表的鏈接,這兩個直接通過 ETL 控制項配置就可以了。中間轉換的環節,這個時候就可能有很多的選擇了,調 SQL 語句、存儲過程,或者還是使用 ETL 控制項來實現。
有的項目上習慣使用 ETL 控制項來實現數據流中的轉換,也有的項目要求不使用標準的轉換組件使用存儲過程來調用。也有的是因為數據倉庫本身這個資料庫不支持存儲過程就只能通過標準的SQL來實現。
我們通常講的BI數據架構師其實指的就是ETL的架構設計,這是整個BI項目中非常核心的一層技術實現,數據處理、數據清洗和建模都是在ETL中去實現。一個好的ETL架構設計可以同時支撐上百個包就是控制流,每一個控制流下可能又有上百個數據流的處理過程。之前寫過一篇技術文章,大家可以搜索下關鍵字 BIWORK ETL 應該在網上還能找到到這篇文章。這種框架設計不僅僅是ETL框架架構上的設計,還有很深的ETL項目管理和規范性控制器思想,包括後期的運維,基於BI的BI分析,ETL的性能調優都會在這些框架中得到體現。因為大的BI項目可能同時需要幾十人來開發ETL,框架的頂層設計就很重要。
⑶ etl是什麼
ETL,是英文Extract-Transform-Load的縮寫,用來描述將數據從來源端經過抽取(extract)、轉換(transform)、載入(load)至目的端的過程。ETL一詞較常用在數據倉庫,但其對象並不限於數據倉庫。
數據倉庫是為企業所有級別的決策制定過程,提供所有類型數據支持的戰略集合。它是單個數據存儲,出於分析性報告和決策支持目的而創建。 為需要業務智能的企業,提供指導業務流程改進、監視時間、成本、質量以及控制。
ETL是將業務系統的數據經過抽取、清洗轉換之後載入到數據倉庫的過程,目的是將企業中的分散、零亂、標准不統一的數據整合到一起,為企業的決策提供分析依據, ETL是BI(商業智能)項目重要的一個環節。
(3)etl腳本怎麼寫擴展閱讀:
ETL與ELT:
ETL所描述的過程,一般常見的作法包含ETL或是ELT(Extract-Load-Transform),並且混合使用。通常愈大量的數據、復雜的轉換邏輯、目的端為較強運算能力的資料庫,愈偏向使用ELT,以便運用目的端資料庫的平行處理能力。
ETL(orELT)的流程可以用任何的編程語言去開發完成,由於ETL是極為復雜的過程,而手寫程序不易管理,有愈來愈多的企業採用工具協助ETL的開發,並運用其內置的metadata功能來存儲來源與目的的對應(mapping)以及轉換規則。
工具可以提供較強大的連接功能(connectivity)來連接來源端及目的端,開發人員不用去熟悉各種相異的平台及數據的結構,亦能進行開發。當然,為了這些好處,付出的代價便是金錢。
⑷ 用SQL腳本寫ETL
學好SQL就行了,DML/DDL. ETL可以用很多工具來實現,比如Shell, Perl, Informatica, Ab Initio等等, SQL本身的邏輯和處理工作就是ETL的過程. 如果是用SQL來實現ETL調度管理,可以先創建資料庫表,然後,通過SQL實現Insert/Update/Delete來控制ETL腳本的被調度。
⑸ 腳本怎麼寫
1、分析游戲需要的功能是根據需要寫代碼。
2、判斷用戶點擊,進入腳本前放點toast或者dialog提示框,放完這些之後將腳本初始化了,進入功能代碼。
3、由系統的一個解釋器,將其一條條的翻譯成機器可識別的指令,並按程序順序執行。因為腳本在執行時多了一道翻譯的過程,所以它比二進製程序執行效率要稍低一些。
腳本語言:
一般的腳本語言的執行只同具體的解釋執行器有關,所以只要系統上有相應語言的解釋程序就可以做到跨平台。含有bind和alias等命令的集合,這個集合存為一個獨立的文件然後在需要的時候執行,這樣就方便在CS中的使用。
腳本可以存為後綴名為cfg的文件放在cstrike文件夾下,執行時在控制台輸入exec腳本文件名cfg即可。比如將一個腳本存為 buyscfg文件,則在控制台中輸入execbuyscfg則可以實現所需要的功能。要實現一個命令只要把這一過程定義好,並且分配一個鍵位給這個命令。
⑹ 游戲里的掛機腳本一般都是怎麼寫的
寫過一些簡單游戲的掛機腳本,比如寶寶斗場掛機腳本,賺了一點小錢,不敢在這高手雲集的地方稱大蝦,僅僅是想和大家交流。
自己寫腳本一開始很痛苦,不過寫多了以後,很多游戲的子程序、函數都是可以借鑒的,甚至可以直接復制粘貼過來使用,所以後面越寫越快。最後就是設計思路和編程習慣了,良好的編程習慣對腳本運行的流暢程度、降低BUG發生率有很大影響。好了說說我的體會
1、多用函數,少用子程序,模塊化:如果一個游戲是頻繁的點擊滑鼠操作,那麼需要建立一些函數來進行這些操作。我比較喜歡用函數而不用子程序。為什麼呢?因為函數有返回值,子程序沒有。我可以讓電腦做一項操作,但是操作的結果如何我不知道,這就需要返回值。比如找圖,找到了沒有呢?這個任務完成沒有呢?等等
2、關於找圖,每個圖用兩個以上函數判斷。因為游戲經常會改動的,有些游戲會經常對圖色做細微的修改,肉眼看不出來,但是找圖就找不到了,這個方法可以盡量減少出錯。
3、盡量少用死循環,堅決不用GOTO。我建議死循環只用在大的地方,如整個主線程,整個子線程。局部盡量用for x代替或者do while。如果局部一定要寫死循環,一定多加一些退出循環的判斷,同時加上運行循環的時間限制(循環開始前用t1=time記錄時間,然後在循環里用datediff判斷循環消耗的時間)。
4、記錄:用ini文件記錄發生的事件,包括任務是否完成,腳本運行情況,是否出錯方便以後查找修改。記錄滑鼠點擊坐標,因為大家喜歡用一種解析度以後不會經常調的,一次成功找圖後滑鼠點擊坐標會記錄下來,下次如果找不到圖了可以嘗試調用原來記錄的坐標進行點擊(不管你圖怎麼改,我還是有辦法),並且滑鼠坐標周圍適當范圍予以截圖保存,方便以後處理。
5、監控:可以讓按鍵精靈向郵箱發郵件,也可以用teamview等遠程式控制制軟體,有錢的話也可以考慮買ip kvm(我目前的願望,但是沒米)。
6、銷售:如果腳本不是很完善或者游戲更新很快,一定要勤快一點。不要對游戲更新感到煩人,只要函數寫的好,更新游戲只要加點圖,改幾條語句就可以了,而你的客戶需要經常依賴你,不管你收錢不收錢,他需要長期與你保持聯系,這樣你的生意自然會越來越好。
⑺ 怎麼寫一個簡單的腳本
可以使用網路按鍵精靈下載安裝使用就行。
腳本就是一個給計算機照著做的東西,命令的組合就是腳本,當我們運行腳本的時候,計算機就會按著我們輸入的命令一步一步操作。網路按鍵精靈里可以先新建一個空白腳本,點擊確定後可以進入編輯界面,由於沒有英文,對於大多數人來說,這個操作界面時比較容易上手的,如果是有一定編程基礎的就更容易學會了。這是操作界面,左邊是可以插入的命令,主要運行公式加到右邊的文本框就可以了。基本命令是對於初學者來說的,這里插入一條a按鍵的輸入,這里有插入了幾條命令,意思是換行插入輸入大寫的B,這里將屬性調成循環到按終止鍵為止,那麼這個命令就可以一直輸出了。點擊調試後,打開一個記事本進行測試,F10是系統默認的運行腳本,F12是停止。最終效果如圖,記事本上就會自動輸入我們編寫好的腳本了,通常而言,在每次輸入間隔都會加入時間間隔。按鍵精靈是一款非常強大的鍵盤滑鼠錄入功能,它的智能化是可以通過作者輸入的邏輯語句實現的。這需要對編程有一個較為深刻的認識。
⑻ 腳本是怎麼寫出來的
腳本(Script)是一種批處理文件的延伸,是一種純文本保存的程序,一般來說的計算機腳本程序是確定的一系列控制計算機進行運算操作動作的組合,在其中可以實現一定的邏輯分支等。
腳本簡單地說就是一條條的文字命令,這些文字命令是可以看到的(如可以用記事本打開查看、編輯),腳本程序在執行時,是由系統的一個解釋器,將其一條條的翻譯成機器可識別的指令,並按程序順序執行。
因為腳本在執行時多了一道翻譯的過程,所以它比二進製程序執行效率要稍低一些。
(8)etl腳本怎麼寫擴展閱讀
腳本通常可以由應用程序臨時調用並執行。各類腳本被廣泛地應用於網頁設計中,因為腳本不僅可以減小網頁的規模和提高網頁瀏覽速度,而且可以豐富網頁的表現,如動畫、聲音等。
舉個最常見的例子,當點擊網頁上的Email地址時能自動調用Outlook Express或Foxmail這類郵箱軟體,就是通過腳本功能來實現的。
也正因為腳本的這些特點,往往被一些別有用心的人所利用。例如在腳本中加入一些破壞計算機系統的命令,這樣當用戶瀏覽網頁時,一旦調用這類腳本,便會使用戶的系統受到攻擊。
所以用戶應根據對所訪問網頁的信任程度選擇安全等級,特別是對於那些本身內容就非法的網頁,更不要輕易允許使用腳本。通過「安全設置」對話框,選擇「腳本」選項下的各種設置就可以輕松實現對腳本的禁用和啟用。
⑼ Excel ETL處理五要素 常見問題
經常 我們在處理小數據集是 不想用大刀,逮住了excel 就想 一直拖拖拉拉就把數據先處理一下,實在處理費力,再從 python numpy pandas 處理一通。
常見的 在處理五要素的時候,姓名基本沒啥要處理的,
1.身份證號 手機號 銀行卡號 經常是 顯示為 E+17 或者 前面帶有 ``` 字元
2.申請日期經常是各種格式,有時候一不小心就變成亂碼的數字 後者####。
3.如果 excel 有外部鏈接存在,即使忽略,但是 在修改的時候還是非常糟心,要等很久,而且經常無法保存,excel就崩潰了
4.還有就是 本身就是文本,但是使用 TEXT LEFT RIGHT MID IF 沒有任何效果
5.excel 讀取 含有中文的數據顯示亂碼
6.多條件的替換問題,if嵌套。
7.批量 替換 匹配
8.空值問題
9.篩選問題
10.腳本讀取文件
其實就是以上的這些小情況,經常浪費大量時間,急需一招狠制敵
接著說 1.
因為很多時候 excel會把一些類數值的身份證號和手機號當做數字,這個其實是數據源在使用python處理的時候沒有來得及保存 對應列的 數據類型。
在出現 E+17,我們首先想到的是修改 單元格格式,比如保存為文本,假如正常那簡直是萬幸,如果不可以,可能會發現 修改後的數據末尾都變成了3個零。
另外一個終極方法
這里,有一個簡單的操作方法:選擇數據源——右鍵設置單元格格式——自定義——選擇0,按確定——結果出來了。結果很明顯,是我們需要的效果,而且快捷,方便。
另外就是使用python pandas讀取 ,設置 dtype=np.str
對於 身份證或者手機號 銀行卡號 數據首位出現 【`】字元的,可以使用 RIGHT MID 函數做數據的截取
對於數據出現 ###,一般修改單元格格式 ,或者 拉長單元格,或者 python讀取一下就可以處理
最後就是說2了。日期
其實這個日期,就是格式太特么的多和復雜不固定。我們現在 使用的是 類似 2018-4-17 這種格式,所以只要不符合這種格式的,我們都會需要做一些轉化,
最簡單的 就是使用 TEXT 函數 ,一般這樣用 =TEXT(E2,"yyyy-mm-dd")
基本就可以轉化過來。
如果以上不起作用 參考 處理 4 的方法 不斷嘗試 ,最後確認函數真的不會起作用為止。
之後如果 不小心 變成一段數字了,修改單元格格式,轉回日期一般是有效的。
如果日期 函數不起效果,我們使用截取 拼接的方式 使用 RIGHT LEFT MID
CONCATENATE() 這些函數 一般也可以勝任
如果 還是不行也可以 使用 YEAR() DATE() EXCEL 本身的日期處理函數
另外就是修改單元格格式 ,嘗試一下各種日期格式是否可以滿足要求
另外的殺手鐧就是 python pandas 和numpy都有 時間處理的函數
可以參考
推薦閱讀
https://segmentfault.com/a/1190000011145901
https://blog.csdn.net/ly_ysys629/article/details/73822716
下面分別說一下 。先說 3
這種帶外部鏈接存在的,曾經嘗試過全文 新的 sheet 甚至是新的excel文件,但是還是崩潰,所以還是使用python 的pandas 。在使用pandas 讀取後,根據列名 篩選後,另存為新的excel 文件或者csv文游滾件 ,這樣一般不會有 問題,順利解決,一般文件也變小。
再說 4.
對於 使用函數 並不起作用的列,一般神州余 情況 可能單元格 格式不是文本,可以先修改單元格格式轉為文本後再嘗試,
假如還是失敗,則 復制該列,選擇有選擇粘貼 只要值跡雹,在進行函數嘗試 ,
如果還是失敗,則 新建一個sheet ,在復制 有選擇粘貼 只要值,再進行函數嘗試,
如果還不行,則新建 excel 再復制有選擇的粘貼 只要值。在進行函數嘗試,
假如還不可以 則使用python pandas 讀取,並設置 dtype=numpy.str,
如果還是不可以,數量少自己手動改,數量多 則請求數據源從新整。
另外 還可以嘗試 另存為比如csv 格式 或者使用python 另存為 其他新文件或者csv,再嘗試讀取 函數修改
之後說5
Excel 讀取漢字亂碼 ,sublime 也亂碼
可以使用 python pandas 讀取 ,
如果 utf-8 不行 ,就轉 gbk
另外就是 excel 讀取沒有亂碼 ,但是 在 Terminal 終端 讀取 中文又亂碼了,怎麼辦 ,當然 好辦,excel 保存為csv 或者txt ,使用sublime 或者notpad ++ 打開 ,選擇 標題欄 【FILE] 下拉框里 選擇【Save with Encoding 】,選擇 第一個 【UTF-8] 或者 【UTF-8 NO BOM],則再次在終端命令行讀取 ,中文可以正常顯示。
說說 6 多條件 替換
一定要 主要了 如果 if 的condition 是 比較數值,這個不用使用單引號 雙引號,
如果condition是 文字 匹配的話,切記 一定要使用英文下的雙引號,否則 報錯,英文下的單引號也會報錯。if 嵌套可以很多個if 像套娃一樣套著,另外 if 還可以和 AND OR 一起配合著使用
比如
還要說7
對於 批量替換 匹配的,這個真是excel 函數最大的魔力。設置好函數後,回車顯示好效果,沒問題的就直接雙擊 黑實心十字 【+】,然後這個函數就會作用到整列,需要注意的就是 如果該列有空值的話,經常會阻隔函數的繼續執行 ,需要我們 大概手動在拖拉一下,再雙擊 之後的。
8空值的處理
由於我們經常是鬍子嘴巴一起抓,excel 和python 經常會遇到處理空值的問題,關鍵空值還不太統一 ,有 "" " " "\t" nan null None ,幾種,需要我們不斷歸一為一種,有時候 excel 沒有 python pandas 處理默認就變成 NAN,如果不小心保存了,在新打開 excel文件就都有 NAN 或者nan ,需要我們處理
出現 這個
ValueError: empty string for float() data = data.fillna('')
data["field"].isnull
data.dropna()
Pandas 在讀取的時候 加一個 參數 dtype=np.object
9.另外 excel 本身有很多很簡單 也超級好用的工具箱
最好用的就是篩選 ,可以比較數值 ,是否包含字元,長度 來做篩選,
另外 比較好用的是 vlookup 這個函數 ,其實比較高大上,用好了 非常節省時間
另外是 比如刪除 重復項 , 合並計算 模擬分析 排序,
【公式】 【數據】 是 留給數據分析師最好的武器
10.比如我們的小數據經常還是需要存儲到hive 庫中,大部分我們會寫一個腳本
來etl 並執行 hive -e hql ,然後使之可以批量 存儲。有時候 讀取 txt文件 會出錯 ,比如 列 粘連了, 其實 可以把excel 另存為 csv 格式 ,這樣可以避免 列粘連。
大部分我們的腳本都會ftp上傳到伺服器上,有時候很大,好不容易上傳了, 發現文件還是有點錯誤 ,比如 列名header 應該去除沒有去除,比如數據末尾多了好多空行 ,比如 需要批量replace ,需要你 可以 熟練使用 vim 或者 emacs ,最好 安裝 python3.6 ptpython pandas numpy sklearn 等常用的包