# 実消化＆アルトマーク実績全件洗替処理

## 概要

実績全件洗替処理の週次バッチ処理。

## 環境情報

- Python 3.9
- MySQL 8.23
- VSCode

## 環境構築

- Python の構築

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

- MySQL の環境構築
  - Windows の場合、以下のリンクからダウンロードする
    - <https://dev.mysql.com/downloads/installer/>
  - Docker を利用する場合、「newsdwh-tools」リポジトリの MySQL 設定を使用すると便利
    - 「crm-table-to-ddl」フォルダ内で以下のコマンドを実行すると
      - `docker-compose up -d`
      - Docker の構築手順は、[Docker のセットアップ手順](https://nds-tyo.backlog.com/alias/wiki/1754332)を参照のこと
  - データを投入する
    - 立ち上げたデータベースに「src05」スキーマを作成する
    - [ローカル開発用データ](https://ndstokyo.sharepoint.com/:f:/r/sites/merck-new-dwh-team/Shared%20Documents/03.NewDWH%E6%A7%8B%E7%AF%89%E3%83%95%E3%82%A7%E3%83%BC%E3%82%BA3/02.%E9%96%8B%E7%99%BA/90.%E9%96%8B%E7%99%BA%E5%85%B1%E6%9C%89/%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E9%96%8B%E7%99%BA%E7%94%A8%E3%83%87%E3%83%BC%E3%82%BF?csf=1&web=1&e=VVcRUs)をダウンロードし、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_laundering.py」で行っている。


## フォルダ構成
├── .env.example                                                -- ローカル実行用の環境変数のサンプル値。
├── .dockerignore                                               -- docker build時のコンテキストに含めるファイルの抑制リスト
├── .gitignore                                                  -- Git差分管理除外リスト
├── Dockerfile                                                  -- Dockerイメージを作成するためのファイル
├── Pipfile                                                     -- Pythonモジュールの依存関係を管理するファイル
├── Pipfile.lock                                                -- Pythonモジュールの依存関係バージョン固定用ファイル
├── README.md                                                   -- 当ファイル
├── entrypoint.py                                               -- バッチ処理のエントリーポイントになるpythonファイル
└── src                                                         -- ソースコードの保管場所
    ├── batch                                                   -- バッチ処理関連ソース置き場
    │   ├── batch_functions.py                                  -- バッチ処理共通関数置き場
    │   └── laundering                                          -- 実績全件洗替関連処理
    │       ├── create_inst_merge_for_laundering.py             -- 洗替用マスタ作成処理
    │       └── sales_results_laundering.py                     -- 卸販売実績全件洗替処理
    ├── db
    │   └── database.py                                         -- データベース操作共通処理
    ├── error
    │   └── exceptions.py                                       -- カスタム例外
    ├── jobctrl_laundering.py                                   -- 実績全件洗替処理のエントリーポイント。「entrypoint.py」 から呼ばれる。
    ├── logging
    │   └── get_logger.py                                       -- ログ出力の共通処理
    └── system_var
        ├── constants.py                                        -- 定数ファイル
        └── environment.py                                      -- 環境変数ファイル

