ota2000
2 min read

dlt-community-sources を公開した

dlt 用のデータソースを集めたパッケージ dlt-community-sources を PyPI に公開した。

何ができるか

今のところ App Store Connect API に対応している。

pip install dlt-community-sources[app-store-connect]
from dlt_community_sources.app_store_connect import app_store_connect_source

source = app_store_connect_source(
    key_id="YOUR_KEY_ID",
    issuer_id="YOUR_ISSUER_ID",
    private_key=open("AuthKey_XXXXX.p8").read(),
    vendor_number="YOUR_VENDOR_NUMBER",
)
pipeline.run(source)

apps、builds、TestFlight、サブスクリプション、Sales/Finance/Analytics Reports など15リソース。デスティネーションは BigQuery、Snowflake、DuckDB など dlt が対応しているものなら何でもいい。

なぜ作ったか

dlt の公式 verified sources があるが、更新頻度が落ちている。App Store Connect のソースもなかった。dlt のソースはただの Python 関数なので、自分で書いて PyPI に公開した方が早い。

extras で管理しているので、今後ソースを増やすときもリポジトリを量産せずに済む。

[project.optional-dependencies]
app-store-connect = ["PyJWT[crypto]>=2.8.0"]
# 今後追加するソースもここに足すだけ

主な機能

  • incremental loading(Sales Reports は日次、Finance Reports は月次)
  • JWT トークンの自動リフレッシュ
  • レート制限のリトライ(429 で指数バックオフ)
  • 権限不足のリソースは 403 でスキップ(パイプライン全体は落ちない)

今後

当面は自分が業務で必要になったソースを足していく。ソースの追加は dlt_community_sources/ の下にディレクトリを作って @dlt.resource を書くだけなので、ほしいソースがある人はぜひ PR を送ってほしい。