newdwh2021/ecs/jskult-batch-daily
..
2023-04-06 13:58:53 +09:00
2023-04-06 14:16:48 +09:00

実消化&アルトマーク 日次バッチ

概要

実消化&アルトマークの日次バッチ処理。

環境情報

  • Python 3.9
  • MySQL 8.x
  • VSCode

環境構築

  • Pythonの構築

    • Merck_NewDWH開発2021のWiki、Python環境構築を参照
      • 「Pipenvの導入」までを行っておくこと
    • 構築完了後、プロジェクト配下で以下のコマンドを実行し、Pythonの仮想環境を作成する
      • pipenv install --dev --python <pyenvでインストールしたpythonバージョン>
      • この手順で出力される仮想環境のパスは、後述するVSCodeの設定手順で使用するため、控えておく
  • MySQLの環境構築

    • Windowsの場合、以下のリンクからダウンロードする
    • Dockerを利用する場合、「newsdwh-tools」リポジトリのMySQL設定を使用すると便利
      • 「crm-table-to-ddl」フォルダ内で以下のコマンドを実行すると
    • データを投入する
      • 立ち上げたデータベースに「src05」スキーマを作成する
      • ローカル開発用データをダウンロードし、mysqlコマンドを使用して復元する
        • mysql -h <ホスト名> -P <ポート> -u <ユーザー名> -p src05 < src05_dump.sql
  • 環境変数の設定

    • 「.env.example」ファイルをコピーし、「.env」ファイルを作成する
    • 環境変数を設定する。設定内容はPRJメンバーより共有を受けてください
  • VSCodeの設定

    • 「.vscode/recommended_settings.json」ファイルをコピーし、「settings.json」ファイルを作成する
    • 「python.defaultInterpreterPath」を、Pythonの構築手順で作成した仮想環境のパスに変更する

実行

  • VSCode上で「F5」キーを押下すると、バッチ処理が起動する。
  • 「entrypoint.py」が、バッチ処理のエントリーポイント。
  • 実際の処理は、「src/jobctrl_daily.py」で行っている。

フォルダ構成

.
├── Pipfile                                           -- Pythonモジュールの依存関係を管理するファイル
├── Dockerfile                                        -- Dockerイメージを作成するためのファイル
├── Pipfile                                           -- Pythonモジュールの依存関係を管理するファイル
├── Pipfile.lock                                      -- Pythonモジュールの依存関係バージョン固定用ファイル
├── README.md                                         -- 当ファイル
├── entrypoint.py                                     -- バッチ処理のエントリーポイントになるpythonファイル
├── src                                               -- ソースコードの保管場所
│   ├── aws
│   │   └── s3.py
│   ├── batch                                         -- バッチ処理関連ソース置き場
│   │   ├── batch_functions.py                        -- バッチ処理共通関数置き場
│   │   ├── datachange                                -- 実績洗替関連ソース置き場
│   │   │   └── emp_chg_inst_lau.py                   -- 施設担当者マスタ洗替
│   │   └── jissekiaraigae.py                         -- 実績洗替処理のエントリーポイント
│   │   └── ultmarc                                   -- アルトマーク関連処理
│   │       ├── dat_insert.py                         -- アルトマーク関連処理のエントリーポイント
│   │       ├── datfile.py                            -- データファイル読込
│   │       └── utmp_tables                           -- アルトマークテーブルへの登録関連
│   │           ├── table_mapper                      -- テーブルへのデータマッピング処理
│   │           │   ├── concrete                      -- テーブルマッパーのマッピング処理を行う具象クラス(全テーブル分)
│   │           │   │   ├── com_alma_mapper.py
│   │           │   │   ├── ...
│   │           │   │   └── null_mapper.py            -- テスト用、空振りするマッパークラス
│   │           │   └── ultmarc_table_mapper.py       -- テーブルへの登録処理を行う抽象クラス
│   │           ├── tables                            -- アルトマークデータのDTOクラス(全テーブル分)
│   │           │   ├── com_alma.py
│   │           │   ├── ...
│   │           │   └── ultmarc_table.py              -- アルトマークテーブルの抽象クラス
│   │           └── ultmarc_table_mapper_factory.py   -- テーブルマッパー生成クラス
│   ├── db
│   │   └── database.py                               -- データベース操作共通処理
│   ├── error
│   │   └── exceptions.py                             -- カスタム例外
│   ├── jobctrl_daily.py                              -- 日次バッチ処理のエントリーポイント。「entrypoint.py」 から呼ばれる。
│   ├── logging
│   │   └── get_logger.py                             -- ログ出力の共通処理
│   ├── system_var
│   │   └── environment.py                            -- 環境変数
│   └── time
│       └── elapsed_time.py                           -- 実行時間計測用