Designer Cloudにおける複数行フォーミュラ代替ソリューションをご紹介します
Alteryx ACEのAkimasaKajitaniです。
Designer Cloud(Designer Experience)には、複数行フォーミュラがありません(2023年末時点)。しかしながら、場合によってはないと困る場面も多々あると思います。
今回は、複数行フォーミュラを代替するソリューションをご紹介します。
1.前後の行と比較するユースケース
複数行フォーミュラを使って前後の行の値を比較したいようなケースがあると思います。この場合は以下の代替ソリューションが利用可能です。
コンセプトとしては、RowIDツールで行に対してIDを振り、比較したい行数分行のIDを足し算、引き算したものをJoinツールで結合することで比較対象を同じ行に持ってくることで比較を行います。
このケースでは行の比較はできますが、比較した上結果をもって、さらに比較する、といったことはできません(このような動的な処理はやはり複数行フォーミュラを使う必要があります)。
例えば、一つ前の行と比べてみましょう。
といった感じで一行前と比較することができます。これを実際にワークフローで表現すると・・・。
- Row IDツールで行番号を付与
- Formulaツールで、1で付けたフィールドに1足した新規フィールド「RowID2」を作成する
- Joinツールで、1と2のデータストリームに対して「RowID」「RowID2」フィールドで結合する。
- UnionツールでLとJを結合。
- Sortツールで「RowID」順に並べ直す。
結果としては、以下のようなデータになります。
このように比較などを行いたいデータを同じ行に持てば、あとは好きにデータを扱うことができます。
2.グループごとにIDを振る
これはもうおなじみTileツールを使えば一発です。
例えば、以下のようなインプットがあるとします。
このCategoryというフィールドに応じて行IDを振っていきましょう。ワークフローは以下のとおりです。
Tileツールの設定は以下の通り。
無事にCategoryごとに行IDがふられました。
3.ランクを付ける
順位をつけるときに、様々な方法があるので、いくつか紹介したいと思います。
3-1.値の順に順位を振る
単純に上から順位をふるときは、RowIDツールが利用できます。
3-2.同じ値がある場合は同じ順位とする
以下のように、値が同じ場合、同じ順位にするケースを考えてみましょう。
この例の場合は、2位が2ついるので同じ順位を付け、3位以下はそのまま連続した順位をふっていきます。まず昇順の場合を見ていきましょう。
昇順の場合
昇順の場合は、タイルツールだけで実現可能です。
設定は以下の通りです。
出力結果は、以下の通りで、Tile_NumフィールドがRankを示しています。
降順の場合
一方で、降順の場合は少し工夫が必要です。理由としては、昇順のときにTile_Numが小さい順についていましたが、降順の場合もTile_Numは小さい順についてしまうからです。そのため、これを実現するには少し工夫が必要です。ワークフローとしては以下のようになります。
まず、最初に全体のカウントを取ります。そしてそれをAppend Columnsツールで付与します。その後、Tileツールを使います。Tileツールの設定は以下のとおりです。
これにより、以下のようなデータになります。
ここからFormulaツールで計算していきます。設定は以下のとおりです。
[Count]-[Tile_Num]
はい、単純にレコードのカウントからTile_Numを引き算するだけです。
3-3.同じ値がある場合は、同じ順位とし、次の順位は飛ばす
以下のように、値が同じ場合、同じ順位とし、その代わり同じ順位分の数分の順位は飛ばすような順位付けの方法があるかと思います。
この例ですと、2番が2つあるかわりに、3番目はとばしています。これを実現するには、以下のようにRowIDツールとTileツール、Formulaツールを組み合わせることで実現できます。
まず、Tileツールで番号を振ります。
その後、RowIDで上から順に番号を振ります。この時点で以下のようなデータになっていると思います。今回RowIDツールで「RowID」フィールドが追加され、Tileツールで「Tile_Num」、「Tile_SequenceNum」が追加されています。
ここからFormulaツールで計算を行います。
[RowID]-[Tile_SequenceNum]+1
これによって、以下のようなRank列が得られます。
4.Trifactaを使う
TrifactaではPrev、Nextという関数を使うことで、行をまたいでデータを取得することができます。どうしてもDesigner Experienceでできないときは、Trifactaを使うというのも一つの手段です。
とはいえかなり使い勝手が異なるので、最終手段にしたいところです。
まとめ
今回は、Designer DesktopにあるのにDesigner Cloudに存在しない「複数行フォーミュラ」ツールを他のツールで代替する方法についてご説明しました。複数行フォーミュラは行をまたいで計算などができる非常に有用なツールですが、現在のところCloud版にはありません。しかしながら、一部のタスクについては、他のツールで代替することができるので、いったんはここに記載のタスクであれば他のツールを使っていただき、どうしてもできない場合はTrifactaを使うことも検討してみてください。