CSA Data Uploaderで『組み込み変数/関数』を使ってファイルパスに動的な日時を設定する
はじめに
クラスメソッドが展開しているデータ統合基盤サービス『CSアナリティクス』(以降"CSA")のプロダクト群の1つ、『Data Uploader』には、アップロードするファイルパスに動的な日時を設定する機能としてがあります。
この機能は『Data Uploader』内で『組み込み変数/関数』と呼んでおります。今回はこの『組み込み変数/関数』について紹介致します。
『Data Uploader』そのものについてや、アップロードなどについては以下の記事を参考にしてください。
- CSA: Data Uploaderの記事一覧
- クラウドストレージへのファイルアップロード&ETLツール『Data Uploader』の出力にAmazon S3を指定する #データ統合基盤 #CSアナリティクス
『組み込み変数/関数』について
先にも書いたように、アップロードするファイルパスに動的な日時を指定する機能となります。パスを指定するテキストボックスで入力可能で、{{today}}
のような書式を記述すると、この例では当日日付のパスを動的に指定できます。以下、使用できる変数/関数の詳細となります。
組み込み変数
S3アップロードジョブを例に書いていきたいと思います。『パス』テキストボックスの横に『[組み込み変数/関数が利用可能です]』のリンクがあります。また『ファイル名』の横にも同様のリンクがあります。このリンクをクリックすると、『組み込み変数/関数』の使用方法について記載したヘルプが表示されます。
『組み込み変数』として使用可能な変数は以下のものがあります。
変数名 | 説明 | サンプル値 |
---|---|---|
today | ジョブ実行日付 | 2022-07-05 |
today_nodash | ジョブ実行日付(「-」無し) | 20220705 |
today_slash | ジョブ実行日付(「/」区切り) | 2022/07/05 |
yesterday | ジョブ実行日付の前日 | 2022-07-04 |
yesterday_nodash | ジョブ実行日付の前日(「-」無し) | 20220704 |
yesterday_slash | ジョブ実行日付の前日(「/」区切り) | 2022/07/04 |
tomorrow | ジョブ実行日付の翌日 | 2022-07-06 |
tomorrow_nodash | ジョブ実行日付の翌日(「-」無し) | 20220706 |
tomorrow_slash | ジョブ実行日付の翌日(「/」区切り) | 2022/07/06 |
now | ジョブ実行日時 | 2022-07-05 15:41:27 |
now_nodash | ジョブ実行日時(区切り無し) | 20220705154127 |
now_slash | ジョブ実行日時(「/」区切り) | 2022/07/05 15:41:27 |
current_year | ジョブ実行年 | 2022 |
current_month | ジョブ実行月 | 07 |
current_date | ジョブ実行日 | 05 |
current_hour | ジョブ実行時間 | 15 |
current_minute | ジョブ実行分 | 41 |
current_second | ジョブ実行秒 | 27 |
job_name | 実行ジョブ名 | サンプルジョブ |
当日(ジョブ実行日時)を取得する「today〜」、前日を取得する「yesterday〜」、翌日を取得する「tomorrow〜」、年月日や時刻を独立して取得する「current〜」の変数を使用することができます。また日時ではないですが、ジョブ名を取得する「job_name」も使用できます。
例えばアップロード先パスとして実行年月日と時刻より「年/月/日/時」形式で指定したい場合、『組み込み変数』を使うと以下のようになります。
{{today_slash}}/{{current_hour}}
『DataUploader』で使用すると以下のようになります。『パス』に『組み込み変数』を入力し、アップロード先のパスとして 『アップロード先 URIイメージ』に動的に取得した日時が表示されます。
この『組み込み変数』だけでは取得したいパスを指定できない場合、次に書く『組み込み関数』の使用も検討してみてください。
組み込み関数
『組み込み関数』を使うと、現在日時を基準としてN日前の取得や、フォーマットの指定などを細かくすることができます。また取得したい日時のタイムゾーンを指定することもできます。『組み込み関数』についても『パス』テキストボックスの横に『[組み込み変数/関数が利用可能です]』のリンクからヘルプを表示することができます。
書式と引数
『組み込み関数』として使用できる関数は、現在は『now_format』のみとなります。この『now_format』に引数を組み合わせて取得したい日時のパターンを指定します。引数を含めると、以下のような書式となります。
書式 |
---|
{{now_format format}} |
{{now_format format timezone}} |
{{now_format format timezone interval}} |
指定できる引数としては、「format」「tiemzone」「interval」の3種となります。以下にそれぞれについて書きたいと思います。
format
日時のフォーマットを文字列で指定します。以下のフォーマットが利用可能です。
フォーマット | 説明 |
---|---|
%Y | 西暦年(4桁) |
%m | 月(01..12) |
%d | 日(01..31) |
%H | 時(00..23) |
%M | 分(00..59) |
%S | 秒(00..60) |
timezone
タイムゾーン名を指定します。省略時、または""が指定された場合、『Data Uploader』がインストールされているマシンのタイムゾーンを利用します。
interval
現在時刻からの時間間隔を指定します。「1 hour」のように整数と単位を表す文字列を組み合わせて指定します。以下が利用可能です。
単位 | 単位を表す文字列 |
---|---|
年 | year, years, y の何れか |
月 | month, months の何れか |
日 | day, days, d の何れか |
時 | hour, hours, h の何れか |
分 | minute, minutes, m の何れか |
秒 | second, seconds, s の何れか |
使用例
例えば現在時刻の2時間30分前の時分秒を、America/New_Yorkタイムゾーンで取得する場合は以下のような書式となります。
{{now_format "%H%M%S" "America/New_York" "-2 hours, 30 m"}}
また前日の年月をスラッシュ区切りで指定した場合は以下のような書式となります。
{{now_format "%Y" "" "-1 days"}}/{{now_format "%m" "" "-1 days"}}
『DataUploader』で使用すると以下のようになります。『パス』に『組み込み関数』を入力し、アップロード先のパスとして 『アップロード先 URIイメージ』に動的に取得した日時が表示されます。
まとめ
CSA Data Uploaderでファイルパスに動的な日時を指定する機能の紹介でした。CSA Data Uploaderは1ヶ月間のトライアル利用が可能となっています。興味をお持ち頂いた方は是非無料版ダウンロードページからインストーラを入手頂き、お試し頂けますと幸いです。