Apa itu Meltano
Meltano adalah perangkat lunak untuk pipa ELT dengan menggunakan Singer. Meltano menangani bagian EL (Extract dan Load) dari ELT, sedangkan bagian T (Transform) ditangani oleh dbt untuk mencapai ELT.
Instalasi Meltano
Instalasi Lokal
- Siapkan lingkungan virtual.
$ python -m venv venv
$ source venv/bin/activate
$ pip install --upgrade pip
- Instal Meltano.
$ pip install meltano
- Buat proyek.
$ meltano init my_project
Akan dibuat sebuah direktori my_project
, dan Anda dapat menemukan file-file berikut di dalamnya:
my_project/
|-- .meltano
|-- meltano.yml
|-- README.md
|-- requirements.txt
|-- output/.gitignore
|-- .gitignore
|-- extract/.gitkeep
|-- load/.gitkeep
|-- transform/.gitkeep
|-- analyze/.gitkeep
|-- notebook/.gitkeep
|-- orchestrate/.gitkeep
Menggunakan Docker Containers
- Unduh gambar Docker.
$ docker pull meltano/meltano
- Buat proyek.
$ mkdir meltano-docker && cd meltano-docker
$ docker run -v "$(pwd)":/projects \
-w /projects \
meltano/meltano init my_project
Setelah menjalankan perintah berikut, Anda dapat mengakses antarmuka pengguna Meltano di http://localhost:5000
.
$ docker run -v "$(pwd)":/project \
-w /project \
-p 5000:5000 \
meltano/meltano
Memperbarui Meltano
Untuk memperbarui ke versi terbaru, jalankan perintah berikut:
$ meltano upgrade
Menjalankan Proyek
File meltano.yml
terlihat seperti ini:
version: 1
default_environment: dev
project_id: <UUID>
environments:
- name: dev
- name: staging
- name: prod
Anda dapat mendefinisikan eksekusi dengan menjalankan perintah atau mengedit file meltano.yml
secara langsung.
Konfigurasi Lingkungan
Anda dapat mendapatkan daftar lingkungan dengan menjalankan perintah berikut. Secara default, lingkungan "dev" aktif.
$ meltano environment list
2022-05-15T23:31:35.498763Z [info ] Environment 'dev' is active
dev
staging
prod
Anda dapat mengubah lingkungan dengan menggunakan perintah berikut.
$ export MELTANO_ENVIRONMENT=prod
Untuk menambahkan lingkungan baru, jalankan perintah berikut.
$ meltano environment add <NEW ENVIRONMENT NAME>
Menambahkan Extractors
"Extractors" adalah plugin yang mengambil data dari sumber data. Anda dapat memeriksa daftar sumber data yang tersedia untuk ekstraksi dengan perintah berikut:
$ meltano discover extractors
Untuk menambahkan plugin Extractor, gunakan perintah meltano add
. Dalam kasus ini, kita akan menambahkan tap-slack
.
$ meltano add extractor tap-slack
Jika sumber data tidak ada dalam daftar Extractor, periksa apakah ada tap Singer untuk sumber data tersebut. Jika tidak ada, Anda dapat menambahkan plugin kustom.
meltano.yml
akan memiliki penambahan tap-slack
seperti berikut:
plugins:
extractors:
- name: tap-slack
variant: mashey
pip_url: git+https://github.com/Mashey/tap-slack.git
Anda dapat menggunakan perintah berikut untuk mempelajari cara menggunakan Extractor yang ditambahkan:
$ meltano invoke tap-slack --help
Mengkonfigurasi Extractor
Untuk menjalankan Extractor, Anda perlu mengonfigurasi pengaturannya. Gunakan perintah berikut untuk melihat opsi konfigurasi yang tersedia:
$ meltano config tap-slack list
Alternatifnya, Anda dapat memeriksa opsi konfigurasi dari tautan berikut:
Konfigurasikan pengaturannya:
$ meltano config tap-slack set channeles '[YOUR CHANNEL ID]'
$ meltano config tap-slack set token <YOUR API TOKEN>
$ meltano config tap-slack set start_date 2022-05-02T00:00:00Z
Memilih Data untuk Diekstrak
Setelah konfigurasi selesai, pilih data yang ingin Anda ekstrak. Gunakan perintah berikut untuk melihat daftar data yang tersedia untuk diekstrak:
$ meltano select tap-slack --list --all
Pilih kategori yang diinginkan untuk diekstrak. Dalam kasus ini, kita akan mengambil semua data di bawah kategori "channels":
$ meltano select tap-slack channels "*"
Konfirmasikan data yang telah dipilih:
$ meltano select tap-slack --list
Menambahkan Loaders
"Loaders" adalah plugin yang digunakan untuk bagian "L" (Load) dari ELT. Gunakan perintah berikut untuk memeriksa daftar Loaders yang tersedia:re plugins used for the "L" (Load) part of ELT. Use the following command to check the list of available Loaders:
$ meltano discover loaders
Dalam kasus ini, kita akan memuat data yang diekstrak dari Slack ke BigQuery. Jalankan perintah berikut untuk menambahkan Loader BigQuery:
$ meltano add loader target-bigquery
Jika tujuan tidak ada dalam daftar Loader, periksa apakah ada target Singer untuk tujuan tersebut. Jika tidak, Anda dapat menambahkan plugin kustom.
Mengkonfigurasi Loader
Atur credentials_path
. credentials_path
merujuk pada jalur lengkap file secret klien dari akun layanan dengan akses ke BigQuery. Misalnya, ~/mymeltano/my_project/client_secrets.json
.
$ meltano config target-bigquery set credentials_path <FULL/PATH/TO/CREDENTIAL FILE>
Konfigurasi pengaturan lainnya:
$ meltano config target-bigquery set location asia-northeast1
$ meltano config target-bigquery set project_id <PROJECT ID>
File meltano.yml
akan terlihat seperti ini:
version: 1
default_environment: dev
project_id: 6e1e3687-a9eb-4c67-8be1-493b37cf4f5d
plugins:
extractors:
- name: tap-slack
variant: mashey
pip_url: git+https://github.com/Mashey/tap-slack.git
loaders:
- name: target-bigquery
variant: adswerve
pip_url: git+https://github.com/adswerve/target-bigquery.git@0.11.3
environments:
- name: dev
config:
plugins:
extractors:
- name: tap-slack
config:
channeles: '[<CHANNEL ID>]'
start_date: '2022-06-01T00:00:00Z'
select:
- channels.*
loaders:
- name: target-bigquery
config:
credentials_path: <FULL/PATH/TO/CREDENTIAL FILE>
location: asia-northeast1
project_id: <Project ID>
- name: staging
- name: prod
Menjalankan Pipa EL
Dengan menjalankan perintah berikut, pipa EL akan mengekstrak data dari Slack dan memuatnya ke BigQuery:
$ meltano run tap-slack target-bigquery
References