決算発表が過ぎ、やっぱり進捗率を網羅的に把握しておく必要あるなと再認識するに至りました。よく株探で上方修正期待の高進捗率ランキングなどと記事が出ますが、幅広くみたい場合はやはり手元にデータセットを作るしかないのではないかと。こうした動機から、せっかくなので今まで触った機会が少なかったAWSを使って日次で進捗率を把握する仕組みを作ってみました。
処理の流れ
- PuppeteerスクリプトをHeroku Schedulerで毎日定期実行。
- 結果をCSVにしてAWS S3に保存。
- S3にCSVファイルが保存されたタイミングでAWS SQSを介してファイルが生成された旨のイベントを生成、AWS Lambdaを実行。
- LambdaはPythonのPandasで前処理しているイメージ。不用なカラムの除去、データ型の変更、カンマ区切りの除去、憎き全角スペースの除去などを行います。結果はHeroku Postgresにupsertする。
成果
こんな感じで進捗率が把握できます。18年分も取得して決算期変更等がなければ前年同期比の比較ができるようにしました。
ポイント
Pandasはdataframeをto_sqlする際に、PostgreSQLにupsertする仕組みがありません。 Dataframeを一度array of dictionaryに変換、sqlalchemy.dialects.postgresqlを使ってupsertのステートメントを作るようにしました。
python - Bulk Upsert with SQLAlchemy Postgres - Stack Overflow
コスト
AWS側は無料枠を使い切るまで残り98%くらいあり、このペースの日次の実行だと十分余裕がありそうです。 Heroku Postgres側は毎月$9のHobby Basicを使っています。
ゼロからわかるAmazon Web Services超入門 はじめてのクラウド (かんたんIT基礎講座)
- 作者: 大澤文孝
- 出版社/メーカー: 技術評論社
- 発売日: 2019/06/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
Amazon Web Services 業務システム設計・移行ガイド (Informatics&IDEA)
- 作者: 佐々木拓郎,林晋一郎,瀬戸島敏宏,宮川亮,金澤圭
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2018/01/20
- メディア: 単行本
- この商品を含むブログ (1件) を見る