Traffine I/O

Bahasa Indonesia

2022-06-05

Meltano

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

  1. Siapkan lingkungan virtual.
bash
$ python -m venv venv
$ source venv/bin/activate
$ pip install --upgrade pip
  1. Instal Meltano.
bash
$ pip install meltano
  1. Buat proyek.
bash
$ 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

  1. Unduh gambar Docker.
bash
$ docker pull meltano/meltano
  1. Buat proyek.
bash
$ 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.

bash
$ docker run -v "$(pwd)":/project \
             -w /project \
             -p 5000:5000 \
             meltano/meltano

Memperbarui Meltano

Untuk memperbarui ke versi terbaru, jalankan perintah berikut:

bash
$ meltano upgrade

Menjalankan Proyek

File meltano.yml terlihat seperti ini:

meltano.yml
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.

bash
$ 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.

bash
$ export MELTANO_ENVIRONMENT=prod

Untuk menambahkan lingkungan baru, jalankan perintah berikut.

bash
$ 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:

bash
$ meltano discover extractors

Untuk menambahkan plugin Extractor, gunakan perintah meltano add. Dalam kasus ini, kita akan menambahkan tap-slack.

bash
$ 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.

https://hub.meltano.com/singer
https://docs.meltano.com/concepts/plugins#custom-plugins

meltano.yml akan memiliki penambahan tap-slack seperti berikut:

meltano.yml
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:

bash
$ meltano invoke tap-slack --help

Mengkonfigurasi Extractor

Untuk menjalankan Extractor, Anda perlu mengonfigurasi pengaturannya. Gunakan perintah berikut untuk melihat opsi konfigurasi yang tersedia:

bash
$ meltano config tap-slack list

Alternatifnya, Anda dapat memeriksa opsi konfigurasi dari tautan berikut:

https://hub.meltano.com/extractors/tap-slack

Konfigurasikan pengaturannya:

bash
$ 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:

bash
$ meltano select tap-slack --list --all

Pilih kategori yang diinginkan untuk diekstrak. Dalam kasus ini, kita akan mengambil semua data di bawah kategori "channels":

bash
$ meltano select tap-slack channels "*"

Konfirmasikan data yang telah dipilih:

bash
$ 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:

bash
$ meltano discover loaders

Dalam kasus ini, kita akan memuat data yang diekstrak dari Slack ke BigQuery. Jalankan perintah berikut untuk menambahkan Loader BigQuery:

https://hub.meltano.com/loaders/target-bigquery

bash
$ 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.

https://www.singer.io/#targets
https://docs.meltano.com/concepts/plugins#custom-plugins

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.

https://github.com/adswerve/target-bigquery#step-1-activate-the-google-bigquery-api

bash
$ meltano config target-bigquery set credentials_path <FULL/PATH/TO/CREDENTIAL FILE>

Konfigurasi pengaturan lainnya:

bash
$ meltano config target-bigquery set location asia-northeast1
$ meltano config target-bigquery set project_id <PROJECT ID>

File meltano.yml akan terlihat seperti ini:

meltano.yml
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:

bash
$ meltano run tap-slack target-bigquery

References

https://docs.meltano.com/getting-started

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!