🎃

dlt(data load tool)を試す。[Harlequin SQL IDE]

2024/02/03に公開

dlt(data load tool)とは

Python のオープンソース ライブラリで、おもに多様なデータソースからデータ基盤にデータを転送するときに利用する。embulkあたりが競合かなSaaSだとfivetranやtroccoあたりが競合かなという理解。

https://dlthub.com/

コネクタ

データ転送元としては、ほどんどのDBが対応しており、広告系だとGAとかFBがあり今後の拡充に期待
https://dlthub.com/docs/dlt-ecosystem/verified-sources/

セットアップ

dltをインストール

pip install dlt
pip install dlt[duckdb]

転送用の実行ファイル作成(何も転送していないけど)

# quick_start_pipeline.py
import dlt

data = [{"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"}]

pipeline = dlt.pipeline(
    pipeline_name="quick_start", destination="duckdb", dataset_name="mydata"
)
load_info = pipeline.run(data, table_name="users")

print(load_info)

Pythonファイル実行

python quick_start_pipeline.py

duckdb閲覧用のIDEインストール

DuckDB 用のオープンソースのターミナルベースの SQL IDEであるHarlequin SQL IDEを使用する

pip install harlequin

https://harlequin.sh/
IDE起動

harlequin "quick_start.duckdb"

エディタ画面で下記のSQLを実行

select * from "quick_start"."mydata"."users"

結果確認

id name _dlt_load_id _dlt_id
1 Alice 1706575114 4yIuFZ4prtx1Fw
2 Bob 1706575114 XJ+fKaxgYrJwNQ

クエリ結果コピペ問題

Harlequin SQL IDEを使って見ようと思ったきっかけは下記の投稿です。
動画のようにコピペできない(2024/01/30時点でpip installで入るバージョンは1.13.0でした)
投稿でv1.8.0でできるよって書いてあったのでに出来ないという謎
v1.8.0にダウングレードしたけど出来ない。
https://x.com/tedconbeer/status/1742616037080653871?s=20
どうやら、現行バージョンでは、クエリエディタしかコピペに対応していないみたいです

Note: Currently copying and pasting is only supported by the query editor, not the other widgets.

https://harlequin.sh/docs/troubleshooting/copying-and-pasting

結果の出力

ctrl+eでCSVに出力はできるのでこれを利用。
ctrl+e:返されたデータを CSV、Parquet、または JSON ファイルに書き込みます。
https://harlequin.sh/docs/bindings

参考

https://duckdb.org/docs/archive/0.8.1/guides/sql_editors/harlequin.html

Discussion