Anda di halaman 1dari 46

Pentaho

Sesi 3: Using Pentaho Data Integration to extract


data from Excel Files & API’s
Profile Pemateri
Muhammad Nur Wachid S.K.G.
Latar belakang Pendidikan:
Formal
• S1 Kedokteran Gigi Universitas Indonesia (2010-2015)
Non Formal
• Tetris Fast Track Data Analytic Batch 1
Riwayat Pekerjaan:
Xeratic
• DataOps Intern (2022)
• Data Engineer (2022 – sekarang)
Related:
• Teaching Assistant TSA Kominfo (2022)
Learning Outcome
● Mengetahui extract data menggunakan PDI
● Melakukan extract pada data structured (excel, MySQL)
● Melakukan extract pada data semi-structured (JSON)
● Melakukan extract pada data unstructured (text/HTML)
Reminder

• Untuk sesi 3, silahkan jalankan query di file “ms_cabang.sql” pada


schema/database “training” di server MySQL masing-masing
(localhost).
• Gunakan file .ktr pada sesi sebelumnya agar tidak perlu set
connection lagi.
1. Extract Data in PDI
ETL (or ELT)
ETL or ELT
Extract > Transform > Load Extract > Load > Transform

Extract Transform Load


Proses ekstraksi menyaring, Mengirimkan
dan pengumpulan mengolah, dan data akhir yang
data dari berbagai menggabungkan sudah siap untuk
macam sumber data-data yang digunakan ke
data (database, relevan data sebuah database.
website, aplikasi, menjadi data yang
dll) bersih dan
berkualitas.
Extract
Beragam sumber data:
• Database
• File
• Tools/Aplikasi
• APIs
• Website
• Sensor
• Dll.
Extract pada PDI
• Extract data dapat dilakukan dengan
memanfaatkan steps yang ada di folder “Input”
• Beberapa steps yang sering digunakan:
o Table input
o Csv file input
o Microsoft excel file input
o Text file input
o JSON input
o Data grid
o Dll.
• Disamping itu kita juga bisa memanfaatkan step
lain untuk extract data seperti HTTP client
2. Extract Structured Data
Extract Structured Data
• Goal: Melakukan ekstrak data tabular dari Excel dan MySQL
• Steps yang dibutuhkan: Microsoft Excel input, Table input
• Buka file ktr dari sesi sebelumnya lalu nanti save dengan nama berbeda
• Save dengan nama structured.ktr
Extract Data from Ms. Excel
• Data yang akan di ekstrak adalah data target penjualan dari masing-masing cabang
setiap bulan pada tahun 2008
• Disamping itu, akan diambil data dari database MySQL untuk mengambil nama
cabang (dari table ms_cabang)
Extract Data from Ms. Excel
• Tambahkan step “Microsoft Excel input” ke canvas, lalu klik kanan > Edit
• Pada tab “Files”, ganti “Spread sheet type” menjadi Excel 2007, lalu pilih file Excel
yang ingin di extract pada “File or directory” dan tekan Add. Pastikan file excel
tersebut ada di table “Selected Files”
Extract Data from Ms. Excel
• Pada tab “Sheets”, tekan tombol “Get sheetname” untuk memilihi sheet pada file
excel yang ingin di-ekstrak datanya
• Pilih sheet pada “available items” dan pindahkan ke kotak “your selection”
• “Strat row” dan “start column” bernilai 0 yang berarti table yang ingin dibaca
dimulai dari kiri atas (A1)
Extract Data from Ms. Excel
• Pada tab “Field”, tekan tombol “Get fields from header row” untuk mendapatkan
semua kolom yang ada pada sheet excel yang kita pilih
Extract Data from Ms. Excel
• Tekan tombol “Preview rows” untuk memastikan apakah data yang akan di-ekstrak
sudah benar.
• Jika sudah benar maka tekan tombol OK
Extract Data from MySQL
• Silahkan jalankan script ms_cabang.sql di localhost pada skema/database training
(atau menyesuaikan dengan nama skema/db yang kalian buat pada training ini)
• Jika berhasil, maka akan ada table baru “ms_cabang” yang berisikan detil dari toko
cabang.
Extract Data from MySQL
• Pastikan database connection ke localhost di PDI sudah tersedia, jika belum dibuat
ulang dengan step-step yang sama dengan pertemuan sebelumnya.
• Tambahkan step “Table input” ke canvas, lalu klik kanan > Edit
• Pilih “Connection” sesuai dengan nama koneksi yang anda buat ke localhost.
• Lalu tulis sintaks/query untuk mengambil data di table ms_cabang
Extract Data from MySQL
• Tekan tombol “Preview rows” untuk memastikan apakah data yang akan di-ekstrak
sudah benar.
• Jika sudah benar maka tekan tombol OK
3. Extract Semi-structured Data
Extract Semi-Structured Data
• Goal: Melakukan ekstrak data teks dari API (JSON)
• Steps yang dibutuhkan: Data grid, HTTP client
• Save dengan nama semistructured.ktr
Extract Data from API
• Kita akan melakukan ekstrak data dari API (crawling) yaitu NewsAPI.
• Topik yang akan kita gunakan dalam proses crawling kali ini adalah “Timnas
Indonesia” (detilnya bisa di cek di file url_API.txt):
• NewsAPI akan mengambil berita yang mengandung kata “Timnas Indonesia” dengan
URL: https://newsapi.org/v2/everything
Extract Data from API NewsAPI: Data Grid
• Yang akan diujicobakan pertama kali adalah crawling data NewsAPI
• Tambahkan step “Data grid” ke canvas, lalu klik kanan > Edit
• Pada tab “Meta”, masukkan 2 nama kolom yaitu “url” dan “authorization” dengan
masing-masing tipe datanya adalah String.
Extract Data from API NewsAPI: Data Grid
• Pada tab “Data”, masukkan url API di kolom “url”:
“https://newsapi.org/v2/everything?q=timnas%20indonesia”
• Detil dari komponen url:
- q=timnas%20indonesia
• Masukkan token/API Key di kolom “authorization”: “Basic {token/key masing-
masing}”
Extract Data from API NewsAPI: Data Grid
Note:
• Pada url, ada “%20”, dimana “%20” adalah spasi (karena di URL tidak bisa
menggunakan spasi). Jadi perhatikan URL yang akan kalian gunakan di Pentaho
• Referensi: https://www.w3schools.com/tags/ref_urlencode.ASP
• Pada step “data-grid”, pastikan tidak ada row bernomor yang kosong, perhatikan
kolom “#”. Hal ini bisa memicu error.
Extract Data from API NewsAPI: HTTP Client
• Tambahkan step “HTTP client” ke canvas, Hubungkan antar step (create hop) dengan
menahan tombol Shift lalu klik dari step “Data Grid” ke “HTTP client”
Extract Data from API NewsAPI: HTTP Client
• Pada step “HTTP client” klik kanan > Edit
• Pada tab “General”, centang kotak “Accept URL from fields?” dan isi “url” pada
kolom isian “URL field name”
• Lalu pada “Output Field” isi kolom-kolom dengan isian berikut:
- result field: “json-result” - response time : “response-time”
- HTTP status: “http-status” - response header: “response-header”
Extract Data from API NewsAPI: HTTP Client
• Pada tab “Fields” di bagian “Custom HTTP Headers”, masukkan “authorization” pada
kolom “Field” dan kolom “Header”
Extract Data from API NewsAPI: HTTP Client
• Klik kanan pada Step “HTTP client” lalu pilih “Preview” dan tekan tombol “Quick
Launch”
• Extract yang kita lakukan berjalan dengan baik jika “http-status” = 200
• Hasil cawling bisa kita dapatkan di kolom “json-result”
• Jika sudah benar maka tekan tombol Close
Extract Data from API NewsAPI: HTTP Client
• Untuk membaca hasil extract data, kita bisa menggunakan tools JSON
viewer seperti http://jsonviewer.stack.hu/
• Caranya copy-paste output di kolom JSON result ke web tersebut (tab
“text) dan hasilnya menjadi seperti ini:
4. Extract Unstructured Data
Extract Unstructured Data
• Goal: Melakukan ekstrak data teks dari Website (HTML)
• Steps yang dibutuhkan: Data grid, HTTP client
• Save dengan nama unstructured.ktr
Extract Data from HTML
• Kita akan melakukan ekstrak HTML code (scraping) dari artikel berita online agar bisa
mendapatkan teks dari berita tersebut.
• Berita yang ingin di scrape adalah berita mengenai Cristiano Ronaldo di media online
Kompas.com, dengan url berita sebagai berikut (ada di file url_artikel.txt):
o https://bola.kompas.com/read/2022/02/08/16000098/stiker-cristiano-ronaldo-
laku-rp-1-miliar-apa-istimewanya-?page=all
o https://bola.kompas.com/read/2022/01/15/08210938/lempar-kritik-cristiano-
ronaldo-kesal-lihat-sikap-pemain-muda?page=all
o https://bola.kompas.com/read/2022/01/22/14000088/ngambek-saat-diganti-
ronaldo-kekanak-kanakan-merusak-momen-elanga?page=all
o https://bola.kompas.com/read/2022/02/12/15400078/man-united-vs-
southampton--the-saints-menuju-rekor-gol-ronaldo-masih-dinanti?page=all
Extract Data from HTML
• Tambahkan step “Data gird” ke canvas, lalu klik kanan > Edit
• Pada tab “Meta”, masukkan 2 nama kolom yaitu “user-agent” dan “url” dengan
masing-masing tipe datanya adalah String.
Extract Data from HTML
• Pada tab “Data”, masukkan “Mozilla/5.0 (Windows NT 6.1; WOW64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.107 Safari/537.36”
pada kolom “user-agent”
• Penjelasan mengenai user-agent bisa dibaca disini:
https://forums.pentaho.com/threads/197431-HTTP-Client-Change-browser-
signature-user-agent/
• Masukkan semua url artikel di kolom “url”
Extract Data from HTML
Note:
• Pada artikel Kompas, gunakan tambahan “?page=all” pada url agar semua teks
artikel terbaca dalam 1 page
• Pada step “data-grid”, pastikan tidak ada row bernomor yang kosong, perhatikan
kolom “#”. Hal ini bisa memicu error.
Extract Data from HTML
• Tambahkan step “HTTP client” ke canvas, Hubungkan antar step (create hop) dengan
menahan tombol Shift lalu klik dari step “Data Grid” ke “HTTP client”
Extract Data from HTML
• Pada step “HTTP client” klik kanan > Edit
• Pada tab “General”, centang kotak “Accept URL from fields?” dan isi “url” pada
kolom isian “URL field name”
• Pada “result field name”, isikan “result” atau nama lain untuk kolom hasil scraping
Extract Data from HTML
• Pada tab “Fields” di bagian “Custom HTTP Headers”, masukkan “user-agent” pada
kolom “Field” dan “User-Agent” pada kolom “Header”
Extract Data from HTML
• Klik kanan pada Step “HTTP client” lalu pilih “Preview” dan tekan tombol “Quick
Launch”
• Jika sudah benar maka tekan tombol Close
Extra: Extract Data from Text File
• Tambahkan step “Text file input”
• Browse lokasi file di “File or directory”, jika sudah tekan tombol add
• Lalu beralih ke tab “Content”
Extra: Extract Data from Text File
• Di tab “Content”, ganti file type jadi “Fixed”
• Hapus separator dan enclosure
• Uncheck kotak header
• Lalu beralih ke tab “Fields”
Extra: Extract Data from Text File
• Di tab “Fields”, tekan tombol “Get Fields”
• Jika sudah oke maka tekan tombol “Preview Rows”
• Maka itu adalah gambaran data yang diekstrak dari file teks tersebut.
Quiz
Quiz
• Quiz bisa diakses di:
https://forms.gle/27tzoensNQMbCdXU8
• Waktu pengerjaan: 5 menit
Homework
• Lakukan proses ekstrak data dari NewsAPI dengan menggunakan Pentaho
dengan kriteria sebagai berikut:
1. NewsAPI: https://newsapi.org/v2/top-headlines? dengan kriteria
-country=id
Lalu submit eviden berupa screenshot hasil crawling dengan Pentaho (tabel
hasil HTTP Client), pastikan screenshot di bagian “json-result” dan “http-
status”.
• Eviden homework bisa disubmit di: https://forms.gle/7dFTVcGxhjFhFgzr8

Anda mungkin juga menyukai