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