Mi az ETL?
Az ETL egy olyan folyamat, amely több forrásrendszerből kinyeri az adatokat, megváltoztatja azokat (számításokkal, összefűzésekkel stb.), majd elhelyezi az Adattárház rendszerben. Az ETL az Extract, Transform and Load rövidítése.
Könnyű elhinni, hogy egy adattárház felépítése olyan egyszerű, mint számos forrásból levonni az adatokat, és betáplálni egy adattárház-adatbázisba. Ez messze nem így van, és bonyolult ETL eljárásra van szükség. A technikailag összetett ETL-folyamat számos érdekelt fél aktív részvételét foglalja magában, beleértve a fejlesztőket, elemzőket, tesztelőket és felsővezetőket.
Ahhoz, hogy megőrizze értékét, mint döntéshozatali eszközt, az adattárház rendszernek az üzleti fejlesztésekkel szinkronban kell fejlődnie. Az ETL egy adattárház rendszer szokásos (napi, heti, havi) folyamata, amelynek agilisnak, automatizáltnak és megfelelően dokumentáltnak kell lennie.
Hogyan működik az ETL?
Itt lépésről lépésre megtudjuk, hogyan működik az ETL folyamat:
1. lépés) Kivonás
Az adatok kinyerése a forrásrendszerből történik, és a kinyerés során az átmeneti területre kerül. Ha bármilyen átalakításra van szükség, azokat az állomásozási területen hajtják végre, hogy a forrásrendszer teljesítménye ne sérüljön. A visszaállítás nehéz lesz, ha a sérült adatokat közvetlenül a forrásból továbbítják az Adattárház adatbázisba. A kivont adatok adattárházba való áthelyezése előtt az állomásozási területen érvényesíthetők.
Az adattárházak különböző hardverekkel, adatbázis-kezelő rendszerekkel, operációs rendszerekkel és kommunikációs protokollokkal kombinálhatnak rendszereket. Az adattárházaknak különböző DBMS-ekkel, hardverekkel, operációs rendszerekkel és kommunikációs protokollokkal rendelkező rendszereket kell kombinálniuk. A források lehetnek örökölt programok, például nagyszámítógépek, testreszabott alkalmazások, érintkezési pontok, például ATM-ek és híváskapcsolók, szöveges fájlok, táblázatok, ERP, szállítóktól és partnerektől származó adatok stb.
Így az adatok kinyerése és fizikai betöltése előtt logikai adattérképre van szükség. A források és a céladatok közötti kapcsolat ezen az adattérképen látható.
Három adatkinyerési módszer:
- Részleges kivonás – Ha a forrásrendszer figyelmezteti Önt, ha egy rekord módosul, ez a legegyszerűbb módja az adatok beszerzésének.
- Részleges kinyerés (frissítési értesítés nélkül) – Nem minden rendszer tud értesítést küldeni, ha frissítés történik; de jelezhetik a megváltozott rekordokat, és kivonatolást biztosíthatnak ezekből a rekordokból.
- Teljes kivonat – Bizonyos rendszerek nem képesek megállapítani, hogy egyáltalán mely adatok változtak. Ebben a forgatókönyvben az adatoknak a rendszerből való eltávolításának egyetlen módja a teljes kivonat végrehajtása. Ehhez a megközelítéshez biztonsági másolatot kell készíteni az előző kivonatról a
ugyanazt a formátumot, hogy azonosítsa a végrehajtott változtatásokat.
Az alkalmazott módszertől függetlenül a kivonás nem befolyásolhatja a forrásrendszerek teljesítményét vagy válaszidejét. Ezek valós idejű termelési adatbázisok. Bármilyen lassulás vagy zárolás hatással lehet a vállalat eredményére.
2. lépés) Átalakítás
A forráskiszolgálóról lekért adatok nyersek és eredeti állapotukban használhatatlanok. Ennek eredményeként meg kell tisztítani, feltérképezni és átalakítani. Valójában ez a legfontosabb lépés, ahol az ETL-folyamat értéket ad és átalakítja az adatokat annak érdekében, hogy értelmes BI-jelentéseket készítsen.
Ez egy kulcsfontosságú ETL-koncepció, amelyben függvénygyűjteményt alkalmaz a kinyert adatokra. Közvetlen mozgás or átmenni azona az az adattípus, amely nem igényel semmilyen átalakítást.
Az átalakítási lépés során testreszabott műveleteket hajthat végre az adatokon. Tegyük fel például, hogy az ügyfél olyan árbevétel-összeget szeretne, amely nem létezik az adatbázisban. vagy ha egy táblázatban a vezeték- és keresztnév külön oszlopban van. Betöltés előtt összefűzhetők.
Íme néhány példa az adatok integritásával kapcsolatos problémákra:
- Ugyanazon személy különböző írásmódjai, például Prashant, Parshant stb.
- Számos módja van a cégnév megjelenítésének, például a Google, a Google Inc.
- Különféle neveket használnak, például Cleaveland és Cleveland.
- Lehetséges, hogy több számlaszámot állítanak elő különböző alkalmazások ugyanahhoz az ügyfélhez.
- Néhány adat szükséges fájl üresen marad.
3. lépés) Betöltés
Az ETL folyamat utolsó szakasza az adatok betöltése a céladattárház-adatbázisba. Egy tipikus adattárházban nagy mennyiségű adat töltődik be viszonylag rövid idő alatt. Ennek eredményeként a betöltési folyamatot a teljesítmény szempontjából optimalizálni kell.
Betöltési hiba esetén helyreállítási eljárásokat kell bevezetni, hogy a műveletek újraindulhassanak a meghibásodás helyéről az adatintegritás veszélyeztetése nélkül. A Data Warehouse rendszergazdáinak a szerver teljesítménye alapján kell figyelniük, folytatniuk és le kell állítaniuk a betöltéseket.
A betöltés típusai:
- Kezdeti terhelés - az összes kitöltése
az Adattárház táblák - Növekményes terhelés – végrehajtása folyamatban van
szükség szerint rendszeresen módosítani kell - Teljes frissítés — a tartalom törlése
egy vagy több táblát, és töltse be őket friss adatokkal
Ellenőrzés betöltése
- Ellenőrizze, hogy a kulcsmező adatai nem hiányoznak vagy nem nullák.
- A céltáblákon alapuló modellezési nézeteket tesztelni kell.
- Vizsgálja meg a kombinált értékeket3 és a számított mértékeket.
- Adatellenőrzések a dimenzió- és előzménytáblázatokban.
- Vizsgálja meg a BI-jelentéseket a betöltött tény- és dimenziótáblázaton.
Az ETL beállítása PythonScript használatával
Ennek eredményeként több adatbázisból egy adattárházba kell végrehajtania az alapvető Extract Transform Load (ETL) műveletet, hogy adatösszesítést végezhessen az üzleti intelligencia érdekében. Számos olyan ETL-csomag áll rendelkezésre, amelyekről úgy gondolta, hogy túlzóak az Ön alapvető használati esetéhez.
Ebben a cikkben megmutatom, hogyan nyerhet ki adatokat a MySQL-ből, az SQL-szerverből és a Firebirdből. A Python 3.6 használatával alakítsa át az adatokat, és töltse be az SQL-szerverbe (adattárházba).
Először is létre kell hoznunk egy könyvtárat a projektünkhöz:
python_etl |__main.py |__db_credentials.py |__variables.py |__sql_queries.py |__etl.py
Az ETL Python használatával történő beállításához a következő fájlokat kell előállítania a projektkönyvtárban.
- db_credentials.py: Az összes adatbázishoz való csatlakozáshoz szükséges összes információval rendelkeznie kell. mint például az adatbázis jelszava, a portszám stb.
- sql_queries.py: Minden általánosan használt adatbázis-lekérdezésnek elérhetőnek kell lennie az adatok kinyerésére és betöltésére String formátumban.
- etl.py: Csatlakozzon az adatbázishoz, és hajtsa végre a szükséges lekérdezéseket az összes szükséges eljárás végrehajtásával.
- main.py: Felelős a műveletek áramlásának irányításáért és a lényeges műveletek meghatározott sorrendben történő végrehajtásáért.
Az sql_queries.py ezen szakaszában ez az a hely, ahol az összes sql-lekérdezésünket tároljuk a forrásadatbázisokból való kinyeréshez és a céladatbázisunkba (adattárházba) történő importáláshoz.
Állítsa be az adatbázis hitelesítő adatait és változóit
A variables.py fájlban hozzon létre egy változót az alap nevének rögzítéséhez.
datawarehouse_name = 'saját_adattárház_neve'
Konfigurálja az összes forrás- és céladatbázis-kapcsolati karakterláncot és hitelesítési adatot a db_credentials.py fájlban az alábbiak szerint. Mentse el a konfigurációt listaként, hogy később szükség esetén ismételhessük több adatbázison keresztül.
változókból import datawarehouse_name datawarehouse_name = 'saját_adattárház_neve' # sql-server (céldb, adattárház) datawarehouse_db_config = { 'Megbízható_kapcsolat': 'igen', 'illesztőprogram': '{SQL szerver}', 'szerver'_: 'sqlta_szerver adatbázis': '{}'.formátum(adattárház_neve), 'felhasználó': 'saját_db_felhasználóneve', 'jelszó': 'saját_db_jelszava', 'autocommit': True, } # sql-server (forrás db) sqlserver_db_configrusted = [_Connection'T ': 'igen', 'illesztőprogram': '{SQL-kiszolgáló}', 'szerver': 'saját_sql_szerver', 'adatbázis': 'db1', 'felhasználó': 'saját_db_felhasználónév', 'jelszó': 'saját_db_jelszava',' autocommit': Igaz, } ] # mysql (forrás db) mysql_db_config = [ { 'user': 'your_user_1', 'password': 'your_password_1', 'host': 'db_connection_string_1', 'adatbázis':', 'adatbázis' , { 'user': 'your_user_1', 'password': 'your_password_2', 'host': 'db_connection_string_2', 'database': 'db_2', }, ] # firebird (forrás db) fdb_db_configs =n [' {config : "/saját/útvonala/forrás.db", 'felhasználó': "felhasználói_neve", 'jelszó': "saját_jelszava", } ]
SQL lekérdezések
Az sql_queries.py ezen szakaszában ez az a hely, ahol az összes sql-lekérdezésünket tároljuk a forrásadatbázisokból való kinyeréshez és a céladatbázisunkba (adattárházunkba) történő importáláshoz.
Minden adatbázishoz különféle szintaxist kell megvalósítanunk, mivel több adatplatformmal dolgozunk. Ezt úgy tehetjük meg, hogy a lekérdezéseket az adatbázis típusa alapján szétválasztjuk.
# példalekérdezések, eltérőek lesznek a különböző adatbázisokban firebird_extract = (''' SELECT fbd_column_1, fbd_column_2, fbd_column_3 FROM fbd_table; ''') firebird_insert = (''' INSERT INTO tábla (oszlop_1, oszlop_2, oszlop_3?) " ) ''') sqlserver_extract = (''' SELECT sqlserver_column_2, sqlserver_column_1, sqlserver_column_2 FROM sqlserver_table ''') sqlserver_insert = (''' INSERT INTO, _3 tábla, _2 oszlop,_2?n? '' ) mysql_extract = (''' SELECT mysql_column_2, mysql_column_1, mysql_column_2 FROM mysql_table ''') mysql_insert = ('' INSERT INTO tábla (oszlop_3, oszlop_1, oszlop_2) exportálás, ?''ries) (?) class SqlQuery: def __init__(self, kivonat_lekérdezés, betöltési_lekérdezés): self.extract_query = kivonat_lekérdezés self.load_query = load_query # példányok létrehozása az SqlQuery osztályhoz fbd_query = SqlQuery(SqlQuery(SqlQuery(firebird_extract, firebird_insert) =Extract3birdery1 firebird_insert_2) sqlserver_query = SqlQuery(sqlserver_extract , sqlserver_insert) mysql_query = SqlQuery(mysql_extract, mysql_insert) # tároló listaként az iterációhoz fbd_queries = [fbdquery, fbd_query_3] sqlserver_queries = [sqlserver_query] mysqlquery
Extract Transform Load
Az ETL beállításához Python használatával a fent említett adatforrásokhoz, a következő modulokra lesz szüksége:
# python modulok import mysql.connector import pyodbc import fdb # változók változókból import adattárház_neve
Ebben két technikát használhatunk: etl() és etl_process().
Az etl_process() az adatbázis-forrás kapcsolat létrehozásának és az etl() metódus meghívásának folyamata az adatbázis platformon.
A második metódusban pedig, amely az etl() metódus, először lefuttatja a kivonat lekérdezést, majd eltárolja az SQL adatokat a változó adatokban, és beilleszti a megcélzott adatbázisba, ami az adattárházunk. Az adattranszformáció a típusú tuple adatváltozójának megváltoztatásával valósítható meg.
def etl(query, source_cnx, target_cnx): # adatok kibontása a forrásból db source_cursor = forrás_cnx.cursor() source_cursor.execute(query.extract_query) data = source_cursor.fetchall() source_cursor.close() # adatok betöltése a raktárba db if data: target_cursor = target_cnx.cursor() target_cursor.execute("USE {}".formátum(adattárház_neve)) target_cursor.executemany(query.load_query, data) print('adat betöltve a raktárba') target_cursor.close() else : print('az adatok üresek') def etl_process(queries, target_cnx, source_db_config, db_platform): # forrásadatbázis-kapcsolat létrehozása if db_platform == 'mysql': source_cnx = mysql.connector.connect(**source_db_config) elif db_platform == 'sqlserver': source_cnx = pyodbc.connect(**source_db_config) elif db_platform == 'firebird': source_cnx = fdb.connect(**source_db_config) else: return 'Hiba! unrecognized db platform' # ciklus az sql lekérdezéseken keresztül a lekérdezésekhez a következő lekérdezésekben: etl(query, source_cnx, target_cnx) # zárja be a forrásadatbázis-kapcsolatot source_cnx.close()
Mindent összerakni
Most, a következő lépésben, a main.py összes hitelesítő adatát áthurkolhatjuk, és végrehajthatjuk az etl-t az összes adatbázishoz.
Ehhez importálnunk kell az összes szükséges változót és metódust:
# változók a db_credentials importból datawarehouse_db_config, sqlserver_db_config, mysql_db_config, fbd_db_config from sql_queries import fbd_queries, sqlserver_queries, mysql_queries from variables import * etl_queries from variables import
Az ebben a fájlban található kód a hitelesítési adatokon keresztüli iterációért felelős az adatbázishoz való csatlakozás és a szükséges ETL végrehajtása érdekében Python-műveletek használatával.
def main(): print('starting etl') # kapcsolat létrehozása a céladatbázishoz (sql-szerver) target_cnx = pyodbc.connect(**datawarehouse_db_config) # ciklus a hitelesítő adatokon # mysql for config in mysql_db_config: try: print("loading db: " + config['adatbázis']) etl_process(mysql_queries, target_cnx, config, 'mysql') kivéve a hiba mint kivétel: print("etl for {} has error".format(config['adatbázis'])) print ('hibaüzenet: {}'.format(error)) folytatás # sql-server for config in sqlserver_db_config: try: print("loading db: " + config['adatbázis']) etl_process(sqlserver_queries, target_cnx, config, ' sqlserver') kivéve a kivételt hibaként: print("etl for {} has error".format(config['adatbázis'])) print('hibaüzenet: {}'.format(error)) folytatás # firebird for config in fbd_db_config: try: print("loading db: " + config['adatbázis']) etl_process(fbd_queries, target_cnx, config, 'firebird') kivéve a kivételt hibaként: print("etl for {} has error".format(config ['adatbázis'])) print('hibaüzenet: {}'.format(error)) folytassa target_cnx.close() if __name__ == "__main__": main()
A terminálba írja be a python main.py parancsot, és most létrehozott egy ETL-t egy tiszta python-szkript segítségével.
ETL eszközök
Számos adattárház-eszköz van a piacon. Íme néhány a leghíresebb példák közül:
1. MarkLogic:
A MarkLogic egy olyan adattárolási rendszer, amely üzleti lehetőségek széles skáláját használja az adatintegráció megkönnyítésére és gyorsabbá tételére. Sokféle adatot tud lekérdezni, például dokumentumokat, kapcsolatokat és metaadatokat.
https://www.marklogic.com/product/getting-started/
2. Oracle:
Az Oracle az iparág legnépszerűbb adatbázisa. A Data Warehouse megoldások széles választékát kínálja mind a helyszíni, mind a felhőszolgáltatásokhoz. A működési hatékonyság növelésével segíti a jobb ügyfélélményt.
https://www.oracle.com/index.html
3. Amazon RedShift:
A Redshift az Amazon adattárház-megoldása. Ez egy egyszerű és költséghatékony megoldás különféle típusú adatok szabványos SQL-lel és meglévő üzleti intelligencia eszközökkel történő elemzésére. Ezenkívül lehetővé teszi összetett lekérdezések végrehajtását petabájtnyi strukturált adaton.
https://aws.amazon.com/redshift/?nc2=h_m1
Következtetés
Ez a cikk mélyen megértette, mi az ETL, valamint lépésről lépésre ismerteti az ETL beállítását a Pythonban. Ezenkívül egy listát adott a legjobb eszközökről, amelyeket a legtöbb szervezet manapság használ ETL-adatfolyamaik felépítéséhez.
A legtöbb szervezet viszont manapság hatalmas mennyiségű adattal rendelkezik, rendkívül dinamikus szerkezettel. ETL-folyamat létrehozása a semmiből az ilyen adatokhoz nehéz eljárás, mivel a szervezeteknek nagyszámú erőforrást kell felhasználniuk a folyamat létrehozásához, majd gondoskodniuk kell arról, hogy lépést tudjon tartani a nagy adatmennyiséggel és a sémaváltozásokkal.
A szerzőről
Prashant Sharma
Jelenleg a Vellore Institute of Technology-n folytatom műszaki alapképzésemet (B.Tech). Nagyon lelkes vagyok a programozás és annak valós alkalmazásai iránt, beleértve a szoftverfejlesztést, a gépi tanulást, a Deep Learninget és az adattudományt.
Remélem tetszik a cikk. Ha kapcsolatba szeretnél lépni velem, akkor az alábbi elérhetőségeken tudsz csatlakozni:
vagy bármilyen más kétség esetén megteheti küldjön egy mailt nekem is
Összefüggő
- '
- "
- Fiók
- aktív
- Minden termék
- amazon
- analitika
- alkalmazások
- TERÜLET
- cikkben
- Automatizált
- mentés
- fellendítése
- épít
- Épület
- üzleti
- üzleti intelligencia
- hívás
- Ellenőrzések
- cleveland
- felhő
- felhő szolgáltatások
- kód
- közlés
- vállalat
- kapcsolat
- folytatódik
- létrehozása
- Hitelesítő adatok
- dátum
- adatintegráció
- adat-tudomány
- adattárház
- adattárházak
- adatbázis
- adatbázisok
- mély tanulás
- Fejleszt
- fejlesztők
- Fejlesztés
- Eszközök
- Dimenzió
- dokumentumok
- gépkocsivezető
- hatékonyság
- stb.
- végrehajtás
- vezetők
- Tapasztalatok
- kitermelés
- kivonatok
- Kudarc
- vezetéknév
- áramlási
- formátum
- friss
- Tele
- útmutató
- hardver
- itt
- Magas
- történelem
- Hogyan
- How To
- HTTPS
- azonosítani
- Hatás
- importáló
- Beleértve
- információ
- integráció
- Intelligencia
- kérdések
- IT
- Kulcs
- nagy
- TANUL
- tanulás
- vonal
- Lista
- kiszámításának
- gépi tanulás
- vezetés
- térkép
- piacára
- Média
- Legnepszerubb
- mozog
- nevek
- bejelentés
- számok
- Ajánlatok
- üzemeltetési
- operációs rendszer
- Művelet
- jóslat
- érdekében
- szervezetek
- Más
- partnerek
- Jelszó
- teljesítmény
- emelvény
- Platformok
- Népszerű
- Készült
- Termelés
- Programozás
- Programok
- program
- vontatás
- Piton
- Nyers
- real-time
- Valóság
- nyilvántartások
- felépülés
- Kapcsolatok
- Jelentések
- Tudástár
- válasz
- jövedelem
- Tudomány
- Szolgáltatások
- készlet
- rövid
- Egyszerű
- So
- szoftver
- szoftverfejlesztés
- Megoldások
- SQL
- Színpad
- Állami
- tárolni
- árnyékolók
- rendszer
- Systems
- cél
- tech
- technikák
- Technológia
- The Source
- idő
- Átalakítás
- oktatói
- Frissítések
- érték
- gyártók
- kötet
- Raktár
- Raktározás
- heti
- Munka
- művek