ASTERIA Warpで12星座占いを作成する。

今回作成する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位の間で異なる順位になります。(ひとことは順位で固定です。)