Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
10
Help us understand the problem. What is going on with this article?
@cocoa-maemae

ETL(ELT)処理用フレームワークcliboaとは何か

ETL処理とは

ETLはextract, transform, loadの頭文字を取って繋げた用語である。extract, transform, loadは日本語に直訳すると抽出、加工、読み込みになる。
ETL処理とは、何らかのデータ(テキストファイル、csvファイル、etc...)に対してETLが示す処理を行うことである。

ELT処理とは

ELT処理はETL処理とは順番が異なるのみである。E,L,Tが示す処理の内容はETLと変わらない。

cliboaとは

BrainPad社内で開発・運用が行われていたETL処理機能の共通基盤部分をアプリケーションフレームワークとして設計・実装し直したものがcliboa(クリボア)である。

GitHub
https://github.com/BrainPad/cliboa

PyPI
https://pypi.org/project/cliboa/

cliboaに置けるETL処理の定義

cliboaではextract(抽出)は何らかの箱からデータをダウンロードすること、transform(加工)はダウンロードしたデータを加工すること、load(読み込み)は抽出、加工したデータをいずれかの箱にアップロードすることとして定義している。下記に概念図を示す。
cliboa_brief.png

cliboaの特徴

  • Pythonで実装されている。
  • Yamlファイルを書くだけで簡易なETL処理を稼働させることが可能である。
  • PythonでETL処理を拡張実装することが可能である。

クイックスタート

必要な環境

Debian, Ubuntu, CentOSなどのLinuxOS上で動作する。

インストール方法

version3.0以上のpythonを用意した後、pipコマンドでインストール。

sudo pip3 install cliboa

インストール完了後、cliboadminというコマンドが実行可能になる。cliboadminを任意のディレクトリで実行する。

$ cd /usr/local
$ cliboadmin init sample
$ cd sample
$ cliboadmin create simple-etl

ファイル・ディレクトリ構成

cliboadminによって初期化されたプログラム構成は下記の通り。

├── Pipfile
├── bin
│   └── clibomanager.py
├── common
│   ├── environment.py
│   ├── __init__.py
│   └── scenario
├── conf
├── logs
└── project
│    └── simple-etl
│            ├── scenario
│                    └── scenario.yml
└── requirements.txt

PyPIパッケージのインストール

requirements.txtにcliboaを動かすのに必要なpythonパッケージ一式が定義されているので、pipコマンドで指定してインストールする。

$ cd sample
$ pip3 install -r requirements.txt

ETL処理のシナリオを書く

project/simple-etl/scenario.ymlに例として下記の処理を書く。

処理内容
sftpサーバーからtest.csv.gzをダウンロード、ダウンロードしたファイルを解凍、解凍したtest.csvをsftpサーバーにアップロード

scenario:
- step:
  class: SftpDownload
  arguments:
    host: localhost
    user: root
    password: pass
    src_dir: /usr/local
    src_pattern: test.csv.gz
    dest_dir: /tmp
- step: FileDecompress
  arguments:
    src_dir: /tmp
    src_pattern: test.*\.csv.*\.gz
- step:
  class: SftpUpload
  arguments:
    host: localhost
    user: root
    password: pass
    src_dir: /tmp
    src_pattern: test.*\.csv
    dest_dir: /usr/local

実行

実行前に下記を整えておく
- localhostをsftpサーバー化
- id=root, password=passでsftpサーバーにログイン可能
- /usr/local以下にtest.csv.gzを用意

下記のコマンドで実行

cd sample
pipenv run python3 bin/clibomanager.py simple-etl
もしくは
python3 bin/clibomanager.py simple-etl

実行後、下記のようになっていれば成功である。
- /usr/local以下に置いたtest.csv.gzが/tmp以下に展開されtest.csvになっている。
- /usr/local以下にtest.csvが存在する

10
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
10
Help us understand the problem. What is going on with this article?