以下の書籍に関するリポジトリです。データソースを担当します
本リポジトリは『エンジニアのための データ分析基盤入門(実践編)』の検証用リポジトリです。
本書の内容を再現できること(再現性)を優先しているため、利用するプロダクトやバージョンは常に最新とは限りません。
読者の皆さまにも実際に手を動かして再現していただけることを意図し、Dockerを前提に手順と構成を用意しています。
筆者の検証環境では動作確認を行っていますが、OS・CPU(Intel/Apple Silicon)・Docker/仮想化設定・リソース制限・ネットワーク設定などの環境差分により、同一結果を再現できない場合があります。
そのため、各環境固有の差分吸収(設定調整、バージョン更新、リソース確保等)は、各自で適宜対応してください。
筆者は、利用プロダクトのバージョンアップ等による変更やメンテナンス状況の変化があった場合に、必要に応じてベストエフォートで本リポジトリを更新します。
なお、同梱する第三者ソフトウェアには、それぞれのライセンスが適用されます。
データソースの技術選択に関しては以下を基準としています。
- Webは活動がデジタル化されているケースが非常に多く、具体例として分かりやすい。
- 業界固有の指標(財務指標など)をベースにすると、言葉の定義や説明が煩雑になり、理解できない人が増えるため避けました。
データソースとしての役割を担っています。データベースとしてds_rdb、APIとしてds_api、静的ファイルをMinIOへ配置しています。 基本的にホストを通してローカルデータ分析基盤と接続します。
- ds_api - APIを提供するコンテナです。天気のAPIを実装しています。
- ds_rdb - データソースのデータベースを提供するコンテナです。ordersやpeopleなどのデータを保存しています。
- mongo - MongoDBを提供するコンテナです。リバースETLの受け口としてや、リアルタムデータの格納のために利用しています。
接続情報に記載のバケットなどを作成しdata-sourceバケットへ初期データを配置している。
- fixed_dataset/fund -> ファンド関連のCSVデータ
- fixed_dataset/legacy -> 別システム or 旧システム想定のファンドやOrdersデータのCSV
- fixed_dataset/ref -> 参照データ用CSV
- fixed_dataset/wrangling -> ラングリング用データ(pdfやexecelなど)
各データの中身は、data-platform-on-local/airflow/README.mdを参照してください。
利用することよにって返却されるデータのサンプルです
リクエスト
read -r -d '' BODY <<'JSON'
[
{"lat": 35.46, "lon": 139.62, "dt": "2025-05-05T09:00:00Z"},
{"lat": 43.06, "lon": 141.34, "dt": "2025-05-05T09:00:00Z"}
]
JSON
echo $BODY
curl -s -X POST "http://api.local.datasource:8000/weather" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d "$BODY" | jq
レスポンス
[
{
"lat": 35.46,
"lon": 139.62,
"dt": "2025-05-05T09:00:00Z",
"temperature_c": 23,
"condition": "SUNNY",
"generated_at": "2025-07-22T13:22:01Z"
},
{
"lat": 43.06,
"lon": 141.34,
"dt": "2025-05-05T09:00:00Z",
"temperature_c": 5,
"condition": "WINDY",
"generated_at": "2025-07-22T13:22:01Z"
}
]
git clone https://github.com/yk-st/data-source.git -b v1.0.0
※ -bはv1.x.xの最新のタグを指定してください。
クローン後は各ディレクトリでdocker compose upコマンドを実行してください。
なし
host.docker.internalを使って通信している部分があるためLinux系OS利用の方はextra_hostsの設定が必要になる場合があります。
