【Dataikuシナリオ】営業日や休日を考慮した日時トリガー

【Dataikuシナリオ】営業日や休日を考慮した日時トリガー | Tableau-id Press -タブロイド-
dataiku

はじめに

Dataikuは、データの準備から機械学習モデルの構築、デプロイメントまでを一元的に管理できる強力なプラットフォームです。その中でも「シナリオ」機能は、データパイプラインの自動化や定期的なタスクの実行を容易にし、業務の効率化に大いに貢献します。

しかし、Dataikuのデフォルトで用意されたトリガーは、毎日や毎月などの日時ベースのトリガーが中心であり、特定の営業日にのみ処理を実行するような特殊な条件には対応していません。そのため、特定の営業日に自動的に処理を実行したい場合は、営業日カレンダーを活用し、条件付きでシナリオを設定する必要があります。

この記事では、Dataikuのシナリオ機能を活用し、特定の営業日に自動的に処理を実行する方法について詳しく解説します。

営業日カレンダーの準備

まず、営業日を管理するためのカレンダーデータセットを用意します。企業の特定の休業日や祝日、創業記念日など、通常の営業日とは異なる日付を考慮する場合、これらの情報をカレンダーに追加することで、より正確な営業日管理が可能となります。

この度、サンプルデータとして用意したのはこちらのデータです。

日付 曜日区分 営業日No.
20250104
G
20250105
A
20250106
B
1
20250107
C
2
20250108
D
3
20250109
E
4

 

該当月の第何営業日を示すのは、「営業日No.」カラムです。

2025/1/5までは年末年始のお休みでしたので、「営業日No.」カラムはnullになります。

シナリオの設定

営業日カレンダーはSQLデータベースに保存されたケースと、S3やdataikuのデフォルトストレージに保存されたケースでそれぞれシナリオ設定方法を説明します。

営業日カレンダーはSQLデータベースに保存されたケース

  1. シナリオを作成
    通常通りにシナリオを作成します。トリガーは必要に応じて設定してください。第OO営業日に実行する判定はStepで行いますので、ここは特に考慮しなくて問題ありません。例えば、毎月第5営業日の8:00に実行させたい場合は、下記のように設定すれば問題ありません。
  2. 「Execute SQL」Stepを追加
    営業日カレンダーから第OO営業日の情報を取得するためにSQLスクリプトを使います。
    スクリプトは以下になります。

    ※このStepの名称を後で使うことになりますので、わかりやすくするために、「BUSINESS_DAY_CHECK」に変更
  3. 「Build」Stepを追加
    通常通りに設定すれば問題ありませんが、Run this stepの箇所だけ、DSSフォーミュラ式で下記通りに記述する必要があります。例:第5営業日に実行する場合

    ※「BUSINESS_DAY_CHECK」の出力はJSON形式となるため、必要な値を抽出するには、複数個のget句が必要
  4. シナリオを保存し、実行

営業日カレンダーはクラウドストレージに保存されたケース

  1. シナリオを作成
    通常通りにシナリオを作成します。トリガーは必要に応じて設定してください。
    第OO営業日に実行する判定はStepで行いますので、ここは特に考慮しなくて問題ありません。
  2. 「Custom Python」Stepを追加
    クラウドストレージはSQLで取得できないため、pythonを使います。スクリプトは以下になります。

  3. 「Build」Stepを追加
    通常通りに設定すれば問題ありませんが、Run this stepの箇所だけ、dssフォーミュラ式で下記通りに記述する必要があります。
    例:第5営業日に実行する場合

    ※SQLの場合と記述が違うので、ご注意ください。
  4. シナリオを保存し、実行

おわりに

以上の設定により、Dataikuのシナリオを活用して、特定の営業日にのみ処理を自動的に実行することが可能となります。この方法を活用することで、業務の効率化や自動化が期待できます。