krewData使って見た②
krewDataやっぱり便利です。
krewDataが使えれば今までビュー一択だったやり方が別アプリに抽出も有りなのではと思えてきました。
以下のような要望があったのでkrewDataを使用して実装してみました。
■要望
毎月月初の会議に合わせて、既存アプリの特定の日付フィールドが月初〜月初+45日の間に該当するレコードを抽出したい。
■案その1
既存アプリのビューとして実装する。
→条件となる日付を毎月裏で変更するのは面倒だなあ。
■案その2
krewDataを使用して、特定の日付フィールドが条件に合致する場合、
対象をフィルタリングして別アプリに書き出す。
毎回再生成することで過去に書き出したレコードを削除しつつ
当月に抽出した対象のみを一覧で確認する。
条件となる日付は別の汎用マスタに値を持たせておいて、
krewDataのフローでは、汎用マスタから条件の日付を取得する。
最後に次月抽出用に条件の日付を更新することで案1のように毎月ビューの条件を変更する作業を減らすことも可能。
→案2採用で。
■フロー作ってみた
前回の絵や文字が見返すと雑すぎて今度はスクショにしようと決意してました。
■簡単な説明
[汎用マスタ]
抽出条件の日付のFROM値及び指定日数を保持しています。
具体的に以下のような値を保持させてます。
「日付」が抽出条件のFROM値で 「値」はTO値を計算するための日数
種別 | キー | 値 | 日付 |
その他 | 月初会議資料抽出用 | 45 | 2019-12-01 |
[結合用項目]
既存のアプリを結合させるために2つのアプリのどらら共に、
「1」の値を持つフィールドを追加しています。
また抽出したい既存アプリを左外部結合しています。
汎用マスタの情報を既存アプリ側に結合したいために、
無理くりくっ付けてるイメージです。
[抽出日付TOを追加]
数式で対応しました。
DATE(YEAR(日付),MONTH(日付),DAY(日付)+加算する日数)
*日付の計算に詰まりましたが上記の式で想定通りの抽出条件のTOの日付が取得できました。
[抽出対象フラグを追加]
数式で対応しました。
フィルタリングするためのレコードを新規追加
抽出条件の日付フィールドの値が、抽出条件のFROM-TOの間の日付の場合は[1]それ以外の場合[0]を設定
IF(AND(リリース日_予定>=日付,リリース日_予定<=TO日付),1,0)
[次回実行時の抽出日付FROMを追加]
数式で対応しました。
実行時の抽出条件の日付FROMに対して月に+1にすることで次月用のFROM値を取得
DATE(YEAR(日付),MONTH(日付)+1,"01")
この値をフローの最後に汎用マスタに反映させることで、
次月に抽出条件用の日付に手を入れる必要がなくなります。
※但し一度フローを出した後に、
もう一度同じ月に対して出し直して欲しい要望があると手動でマスタを修正せざるを得ませんが・・・
■結論
krewDataいい。面白い。
レゴ組み立てているような気分になれる。個人的にはIoTのスクラッチみたいな感覚。
嫌々ながら何かに使わなきゃなあとか思って使っていたら少しハマってる自分がいた。
javascriptの勉強のためにスクリプト組もうと思ったらいつの間にかkrewDataの画面見てる。krewDataで出来ないかなと思ってる自分がいる。
他にもこんなやり方使い方があるよっていう物があれば是非教えて欲しいです!