今回作成する12星座占いの仕様
12星座の順位が1位~12位までの間でランダムに決定され、順位に応じたひとことが加えられます。(ひとことの内容は毎回固定です。)
フローの構成
下図はフローの全体図になります。
読み込んだ12星座の順位をランダムに決定した後で、別のFileGetから読み込んだひとことをRecordJoinでつなげます。
読み込むファイルの中身
以下のcsvファイルを読み込みます。
左:Zodiacsign.csv(星座一覧)、右:Hitokoto.csv(星座の順位決定後にJOINします)
フローの解説
FileGet(左側)
ここではZodiacsign.csvをループせずにそのまま読み込んでいます。
下図はcsvファイルを読み込む設定とプロパティになります。
RecordSQL
SQL文「SELECT * FROM in[1] ORDER BY RAND();」で読み込んだZodiacsign.csvのレコードをランダムに並べ替えます。
FROMのin[1]は最初の入力ストリームを示しています。下図はプロパティです。
Mapper
並べ替えが終わったレコードを「(レコード番号)位:(星座名)」の形式に整えて、最後に改行を加えています。
レコードにrankというフィールドを追加して、レコード番号を入れています。これはRecordJoinでJOINする際に使用します。(JOIN用で、最終的に表示はしません)
下図はマッパーの中身と設定になります。
FileGet(右側)
左側のFileGetと同様にHitokoto.csvをそのまま読み込みます。
下図はcsvファイルを読み込む設定とプロパティになります。
RecordJoin
「入力キー」タブで両方のストリームに存在する「rank」フィールドをキーとしてJOINを行うように設定します。出力するフィールドもここで選択できるので、「出力フィールド」タブから出力するフィールドのみを選択することでJOIN用のフィールドであるrankは出力しない設定にします。下図はその設定になります。
フローの実行結果
実行するたびに、1位~12位の間で異なる順位になります。(ひとことは順位で固定です。)