現在業務でトライしている Logic Apps に関する覚え書きです。
やりたいことは以下のとおり。
- Azure の SQL Datebase 上のあるテーブルからデータを取得して、別のAzureリージョンにある SQL Database のテーブルにINSERTする。
- 取得元のテーブルからデータを取得する際の条件として、レコードの更新日時が、現在日付(日本時間)の 00:00 から遡って25時間以内であるものを抽出する。例えば現在の日時が2019年6月11日 18:00 の場合、レコードの更新日時が「2019年6月9日23:00 ~ 2019年6月11日 00:00」であるものを抽出することになる。
- 取得したデータのINSERTが正常終了したら、取得元のテーブルからレコードを物理削除する。削除条件は、最初のデータを取得する際に使ったものと同じ。
今回は、データ取得&削除の抽出条件に使う「現在日付の00:00」と「そこから遡って25時間の時刻」を、どうやって Logic Apps で取得したのかをメモっておきます。
今回実装した流れは以下のとおり。データ抽出条件としての開始時刻と終了時刻を、それぞれ「TIME_START」と「TIME_END」という名前の文字列変数に格納して、その内容を確認のためにメールで飛ばします。(最終的な目的であるデータのINSERTは後日実装する予定)
アクション「変数を初期化する」で、変数名の定義と初期値の設定を行います。以下は、変数 TIME_END に「現在日付」の 00:00 を設定するところです。
ワークフロー定義関数をうまく使うことで実現できます。
https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference
startOfDay(convertFromUtc(utcNow(), ‘Tokyo Standard Time’))
同じくワークフロー定義関数を使って、TIME_STARTに「TIME_ENDの25時間前」の時刻を設定します。
addHours(variables(‘TIME_END’), -25)
今回は以上です。
Logic Apps の場合、日付データを文字列として扱うことに若干戸惑いましたが、上記URLのワークフロー定義関数のリファレンス(日本語)が思ったより充実しているので、実装上それほど困ることはなさそうです。