こちらのNode-REDフローは、Node-RED UG Japanイベント「Node-RED大喜利」の第一回目のお題に対する解の一つになります。 https://node-red.connpass.com/event/257963/
フローのJSONファイルは こちら から取得いただけます。
まずInjectノードです。こちらはデフォルトのままタイムスタンプを送信します。
次に、Injectノードで出力された日時をChangeノードを使ってGlobal変数へ入れておきます。 以下の式でYYYYMMDDにフォーマットしておきます。(これは読み込むCSVに持っている日付のフォーマットに合わせましょう)
$fromMillis($millis(),'[Y0001]/[M01]/[D01]')
Web上に公開されているCSVファイルをhttp requestノードを使って読み込みます。 ここでは敢えてGitHubではなく、別のサーバー上にCSVファイルを置いて、それにアクセスするようにしています。
csvノードを使ってパースします。 今回読み込むファイルにはヘッダ行が無いので 「1行目に列名を含む」のチェックは外してあります。
splitノードで1行1行を配列にしていきます。配列にしておくことで、その後のアウトプットの方法に合わせてデータを扱いやすくしています。
switchノードを使い、global変数に格納しておいた本日日付の値を元に配列のpayloadの中身を評価します。 条件に合致した場合のみ次のDebugノードへ出力します。
このような感じで1行づつDebugノードへ出力されます。 ファイル書き込み、DB書き込み、Web画面へ出力、など、扱いやすい形でCSVから条件に合致した行を抜き出せたのでは無いでしょうか。
この方法はあくまで数あるやり方の内の一つにすぎません。自分でもっとやりやすい方法が見つけられればその方が良いでしょう。 いろいろと試してみてくださいね!