ETL技術入門之ETL初認識

ETL技術入門之ETL初認識

分類:?etl?3021人閱讀?評論(2)?收藏?舉報
數據倉庫商業價值etlbi

目錄(?)[-]

  1. ETL是什么
  2. 先說下背景知識
  3. 下面給下ETL的詳細解釋定義
  4. 現在來看下kettle的transformation文件一個最簡單的E過程例子windows環境
    1. 上圖左邊的是打開表輸入的界面
      1. 步驟名稱 即是圖標下面顯示的名字 可以隨便填
      2. 獲取sql查詢語句點擊后 會樹狀形式展示oracle的表視圖 等 選中雙擊后 點自己會添加到空白的sql框內
      3. 數據庫連接 一開始沒有 需要新建 有了就可以編輯了 點擊編輯后會彈出上圖右邊的頁面
      4. connection name 連接起個名字 可以使數據ip地址 加實例名
      5. connection type 是選擇你要查詢的數據庫類型 mysql oracle等等
      6. method access是選擇驅動類型 選擇那個JDBC就可以了
      7. server host name 是數據庫的ip地址
      8. dbname 是數據庫實例名
      9. Port number是端口號
      10. 再下面就是用戶名 密碼了
    2. 上圖左邊
      1. ennable lazy conversion 勾上后就表示延遲轉換這樣在從數據庫讀取的數據就能保持原有字符集不會默認強制使用utf8
      2. replace variables in 表示如果sql框里的sql有變量的時候 會使用環境變量替代它 像table_201407 這樣帶日期的固定格式表名 可以使用這個實現自動化
      3. 記錄數量限制默認為0 若設為大于0的任何值 則無論sql怎么寫的 輸入表只有設置的行數那么多
    3. 上圖左邊為雙擊打開表輸出的 界面
      1. 步驟名稱表輸出圖標下面顯示的名字 可用數據庫ip 用戶名 表名
      2. 數據庫連接 沒有需要新建 可以新建幾個 新建好的可以編輯
      3. target schema 目標表或者視圖的用戶
      4. 目標表可以自己輸入也可以從瀏覽里面選擇
      5. 提交記錄數量批量一次提交的數據量或者非批量插入數據量的限制值
      6. 裁剪表插入之前 有 truncate 操作
      7. 忽略插入錯誤 這是非批量插入的功能非批量插入時 若有一天數據插入報錯 后面的數據還可以正常插入
      8. 使用批量插入點上即是批量 否則為非批量
      9. 點擊數據庫連接的編輯后 會彈出上圖右圖 與表輸入的一樣 填寫數據庫的tns信息 及用戶名密碼點擊test可以連接后 點擊確定

ETL是什么

ETL是Extract?Transform Load三個英文單詞的縮寫 中文意思就是抽取、轉換、加載。說到ETL就必須提到數據倉庫。


先說下背景知識:

信息是現代企業的重要資源,是企業運用科學管理、決策分析的基礎。目前,大多數企業花費大量的資金和時間來構建聯機事務處理OLTP的業務系統和辦公自動化系統(例如電信行業的各種運營支撐系統、購物網站系統),用來記錄事務處理的各種相關數據。據統計,數據量每2~3年時間就會成倍增長,這些數據蘊含著巨大的商業價值,而企業所關注的通常只占在總數據量的2%~4%左右。因此,企業仍然沒有最大化地利用已存在的數據資源,以致于浪費了更多的時間和資金,也失去制定關鍵商業決策的最佳契機。

在這個背景下,能夠給企業所有級別的決策制定過程提供支持的所有類型數據的戰略集合應運而生,他就是數據倉庫。數據倉庫的英文簡寫是Data Warehouse。數據倉庫就是把OLTP系統產生的數據 整合到一起 發掘其中的商業價值和提供決策支持用。舉個電信行業的例子 電信有系統每天會有客戶投訴的信息、寬帶群體性障礙、客戶號碼的停機恢復時間記錄等等。這些數據都在各自的生產環境系統里面。他們每個月會把這些數據整合到一起處理加工到數據倉庫里面形成報表 其中有一個功能是可以對哪些用戶有離網銷號的傾向做出大概的判斷。這就是數據倉庫的價值所在。


那么怎么把數據弄到數據倉庫里去呢,其中用到的一個技術就是ETL。


下面給下ETL的詳細解釋定義:

ETL(Extract-Transform-Load的縮寫,即數據抽取、轉換、裝載的過程)作為DW的核心和靈魂,能夠按照統一的規則集成并提高數據的價值,是負責完成數據從數據源向目標數據倉庫轉化的過程,是實施數據倉庫的重要步驟。如果說數據倉庫的模型設計是一座大廈的設計藍圖,數據是磚瓦的話,那么ETL就是建設大廈的過程。在整個項目中最難部分是用戶需求分析和模型設計,而ETL規則設計和實施則是工作量最大的,約占整個項目的60%~80%,這是國內外從眾多實踐中得到的普遍共識。
ETL是數據抽取(Extract)、清洗(Cleaning)、轉換(Transform)、裝載(Load)的過程。是構建數據倉庫的重要一環,用戶從數據源抽取出所需的數據,經過數據清洗,最終按照預先定義好的數據倉庫模型,將數據加載到數據倉庫中去。
于是,企業如何通過各種技術手段,并把數據轉換為信息、知識,已經成了提高其核心競爭力的主要瓶頸。而ETL則是主要的一個技術手段。

做數據倉庫系統,ETL是關鍵的一環。說大了,ETL是數據整合解決方案,說小了,就是倒數據的工具。

現在來說說ETL技術用到的工具,常用的有Informatica、Datastage、Beeload、Kettle等。目前只用過kettle,所以這里只對kettle做描述。

kettle是一款國外開源的ETL工具,純java編寫,可以在Window、Linux、Unix上運行,kettle 3版本需要安裝 3以上都是綠色版無需安裝。


提醒的是kettle運行 需要機器有JRE環境


Kettle這個ETL工具集,它允許你管理來自不同數據庫的數據,通過提供一個圖形化的用戶環境來描述你想做什么。
Kettle中有兩種腳本文件,transformation和job,transformation完成針對數據的基礎轉換,job則完成整個工作流的控制。


現在來看下kettle的transformation文件,一個最簡單的E過程例子(windows環境)


上圖文件的功能就是就是把oracle數據庫一個表的數據抽取到另一表里面。


左邊的圖標叫表輸入 右邊的叫表輸出 中間綠色的線代表數據流向。 表輸入和表輸出可由左邊的菜單欄里 鼠標拖動出。

雙擊打開表輸入是這樣的:


上圖左邊的是打開表輸入的界面?

步驟名稱: 即是圖標下面顯示的名字 可以隨便填

獲取sql查詢語句:點擊后 會樹狀形式展示oracle的表視圖 等 選中雙擊后 點自己會添加到空白的sql框內。

數據庫連接: 一開始沒有 需要新建 有了就可以編輯了 點擊編輯后會彈出上圖右邊的頁面

connection name :連接起個名字 可以使數據ip地址 加實例名

connection type :是選擇你要查詢的數據庫類型 mysql oracle等等

method access:是選擇驅動類型 選擇那個JDBC就可以了

server host name :是數據庫的ip地址?

dbname :是數據庫實例名?

Port number:是端口號?

再下面就是用戶名 密碼了。


填好所有的信息后 可以點擊test測試下能不能成功連接。成功連接即可點擊確定 界面就會回到上面的左圖


sql 下面的空框 是用來寫你想要獲取數據的sql語句(也可以由那個獲取查詢sql按鈕自動獲取) 寫好后 可以點擊預覽 (行數選少點)看下數據可正常。如果能預覽數據 說明你的表輸入就配好了。

上圖左邊

ennable lazy conversion 勾上后就表示延遲轉換:這樣在從數據庫讀取的數據就能保持原有字符集,不會默認強制使用utf8。

replace variables in :表示如果sql框里的sql有變量的時候 會使用環境變量替代它 像table_201407 這樣帶日期的固定格式表名 可以使用這個實現自動化

記錄數量限制:默認為0 若設為大于0的任何值 則無論sql怎么寫的 輸入表只有設置的行數那么多。


現在來看表輸出:

上圖左邊為雙擊打開表輸出的 界面。

步驟名稱:表輸出圖標下面顯示的名字 可用數據庫ip 用戶名 表名

數據庫連接 :沒有需要新建 可以新建幾個 新建好的可以編輯

target schema :目標表或者視圖的用戶

目標表:可以自己輸入,也可以從瀏覽里面選擇

提交記錄數量:批量一次提交的數據量或者非批量插入數據量的限制值

裁剪表:插入之前 有 truncate 操作。

忽略插入錯誤 :這是非批量插入的功能,非批量插入時 若有一天數據插入報錯 后面的數據還可以正常插入。

使用批量插入:點上即是批量 否則為非批量。

點擊數據庫連接的編輯后 會彈出上圖右圖 與表輸入的一樣 填寫數據庫的tns信息 及用戶名密碼。點擊test可以連接后 點擊確定


回到上圖左邊界面 再點擊確定 即配好了一個轉換 點擊運行后:



可以從日志看 該轉換有沒有finished、 每個步驟的耗時、速度 、平均每秒多少行、 總共插入了多少記錄數等。

版權聲明:本文為博主原創文章,未經博主允許不得轉載。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/388167.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/388167.shtml
英文地址,請注明出處:http://en.pswp.cn/news/388167.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ActiveSupport::Concern 和 gem 'name_of_person'(300?) 的內部運行機制分析

理解ActiveRecord::Concern: 參考:include和extend的區別: https://www.cnblogs.com/chentianwei/p/9408963.html 傳統的模塊看起來像: module Mdef self.included(base)# base(一個類)擴展了一個模塊"ClassMethods", b…

Python 3.8.0a2 發布,面向對象編程語言

百度智能云 云生態狂歡季 熱門云產品1折起>>> Python 3.8.0a2 發布了,這是 3.8 系列計劃中 4 個 alpha 版本的第 2 個。 alpha 版本旨在更加易于測試新功能和 bug 修復狀態,以及發布流程。在 alpha 階段會添加新功能,直到 beta 階…

基于plotly數據可視化_如何使用Plotly進行數據可視化

基于plotly數據可視化The amount of data in the world is growing every second. From sending a text to clicking a link, you are creating data points for companies to use. Insights that can be drawn from this collection of data can be extremely valuable. Every…

關于Oracle實時數據庫的優化思路

關于實時數據庫的優化思路 背景 大概168個換熱站機組,每套機組將近400個點,整體有6萬多個點需要進行實時更新。數據庫里其中有一個監控參數表(yxjk_jkcs),每一個點位屬性都在里面存放,其中有一個字段CS_VALUE 是存放被更新的實時…

【轉】使用 lsof 查找打開的文件

在 UNIX 環境中,文件無處不在,這便產生了一句格言:“任何事物都是文件”。通過文件不僅僅可以訪問常規數據,通常還可以訪問網絡連接和硬件。在有些情況下,當您使用 ls 請求目錄清單時,將出現相應的條目。在…

ESLint簡介

ESLint簡介 ESLint是一個用來識別 ECMAScript 并且按照規則給出報告的代碼檢測工具,使用它可以避免低級錯誤和統一代碼的風格。如果每次在代碼提交之前都進行一次eslint代碼檢查,就不會因為某個字段未定義為undefined或null這樣的錯誤而導致服務崩潰&…

數據科學與大數據是什么意思_什么是數據科學?

數據科學與大數據是什么意思Data Science is an interdisciplinary field that uses a combination of code, statistical analysis, and algorithms to gain insights from structured and unstructured data.數據科學是一個跨學科領域,它結合使用代碼,…

C#制作、打包、簽名、發布Activex全過程

一、前言 最近有這樣一個需求,需要在網頁上面啟動客戶端的軟件,軟件之間的通信、調用,單單依靠HTML是無法實現了,因此必須借用Activex來實現。由于本人主要擅長C#,自然本文給出了用C#實現的范例,本文的預期…

用Python創建漂亮的交互式可視化效果

Plotly is an interactive Python library that provides a wide range of visualisations accessible through a simple interface.Plotly是一個交互式Python庫,通過簡單的界面即可提供廣泛的可視化效果。 There are many different visualisation libraries avai…

CCF 201809-1 買菜

問題描述| 試題編號: | 201809-2 | | 試題名稱: | 買菜 | | 時間限制: | 1.0s | | 內存限制: | 256.0MB | 問題描述 小H和小W來到了一條街上,兩人分開買菜,他們買菜的過程可以描述為,去店里買一…

筆試題③

1.線程間通信 handler機制 2.AsyncTask 異步任務 3.HandlerThread 子線程中創建了一個 Looper對象 可以在子線程里使用消息機制 IntentService 帶了HandlerThread 并且創建了一個子線程的handler 在服務中 創建子線程執行耗時操作 耗時操作執行結束之后服務退出 如果想在Serv…

Hadoop 2.0集群配置詳細教程

Hadoop 2.0集群配置詳細教程 前言 Hadoop2.0介紹 Hadoop是 apache 的開源 項目,開發的主要目的是為了構建可靠,可拓展 scalable ,分布式的系 統, hadoop 是一系列的子工程的 總和,其中包含 1. hadoop common &#xff…

php如何減緩gc_管理信息傳播-使用數據科學減緩錯誤信息的傳播

php如何減緩gcWith more people now than ever relying on social media to stay updated on current events, there is an ethical responsibility for hosting companies to defend against false information. Disinformation, which is a type of misinformation that is i…

[UE4]刪除UI:Remove from Parent

同時要將保存UI的變量清空,以釋放占用的系統內存 轉載于:https://www.cnblogs.com/timy/p/9842206.html

MySQL基礎部分總結

MySQL 1、選擇數據庫 use dbnameshow databases;2、數據表 show tablesmysql> show columns from customers;mysql> desc customers;3、show 語句 show statusshow create databasesshow create tableshow grants4、select 檢索 4.1.1版本后不再區分大小寫,但…

BZOJ2503: 相框

Description P大的基礎電路實驗課是一個無聊至極的課。每次實驗,T君總是提前完成,管理員卻不讓T君離開,T君只能干坐在那兒無所事事。先說說這個實驗課,無非就是把幾根導線和某些元器件(電阻、電容、電感等)…

泰坦尼克號 數據分析_第1部分:泰坦尼克號-數據分析基礎

泰坦尼克號 數據分析My goal was to get a better understanding of how to work with tabular data so I challenged myself and started with the Titanic -project. I think this was an excellent way to learn the basics of data analysis with python.我的目標是更好地了…

Imperva開源域目錄控制器,簡化活動目錄集成

Imperva已公開發布域目錄控制器(Domain Directory Controller,DDC)的源代碼,這是一個Java庫,用于簡化常見的Active Directory集成。 與Java的LdapContext不同,這個庫構建在Apache Directory LDAP之上&#…

2018.10.24 NOIP模擬 小 C 的序列(鏈表+數論)

傳送門 考慮到a[l],gcd(a[l],a[l1]),gcd(a[l],a[l1],a[l2])....gcd(a[l]...a[r])a[l],gcd(a[l],a[l1]),gcd(a[l],a[l1],a[l2])....gcd(a[l]...a[r])a[l],gcd(a[l],a[l1]),gcd(a[l],a[l1],a[l2])....gcd(a[l]...a[r])是可以分成最多logloglog段且段內的數都是相同的。 那么我們用…

vba數組dim_NDArray — —一個基于Java的N-Dim數組工具包

vba數組dim介紹 (Introduction) Within many development languages, there is a popular paradigm of using N-Dimensional arrays. They allow you to write numerical code that would otherwise require many levels of nested loops in only a few simple operations. Bec…