データサイエンス100本ノックをAlteryxで。20日目(解答)

100本ノック

このページは解答編です。

↓ネ

↓タ

↓バ

↓レ

↓防

↓止

答えと解説

設問はこちらでした。

P-020: レシート明細データ(receipt.csv)に対し、1件あたりの売上金額(amount)が高い順にランクを付与し、先頭から10件表示せよ。項目は顧客ID(customer_id)、売上金額(amount)、付与したランクを表示させること。なお、売上金額(amount)が等しい場合でも別順位を付与すること。
※同順位の場合はcustomer_idの昇順に並べること(Alteryxオリジナル条件)

解答ワークフローは以下のようになります。

19問目は急にレベルがあがった感じがしましたが、20問目は19問目を解答する途中で取り扱っていました。

  1. レコードIDを使った方法
  2. 複数行フォーミュラツールを使った方法

1. レコードIDを使った方法

Alteryxで順位をつけるには、上から1,2,3と数字を振っていけばいいだけですので、このような場合はレコードIDツールを使うことができます。

今回の並べ替え順としては、売上金額の多い順とのことなので、売上金額(amount)で降順に並べ替えましょう(ついでに顧客ID(customer_id)でも並べ替えておきます)。

ソート設定

基本的にレコードIDツールはデフォルト設定で使うことが多いですが、今回は名前だけ「Rank」とつけておきましょう。

レコードID設定

結果はこのようになります。

これは単純に売上金額(amount)の大きな順に並び替えただけの順位付けの基本形です。ワークフローは以下のような形になります。

2. 複数行フォーミュラツールを使った方法

「複数行フォーミュラ」ツールも同じように順位を付けることができます。このツールは、行をまたいで計算ができる数少ないツールです。

設定は以下のようになります。今回は新規フィールド「Rank」を作成します。フィールド名、タイプ(型)を設定します。

今回必要となる計算式は以下の通りです。

[Row-1:Rank]+1

一つ上のレコードを持ってきて1を足す、というだけですので、非常に単純な式となります。

最終的なワークフローとしては以下の通りです。

まとめ

順位をつける、という基本的な方法を学びました。順位を付けるには並び替えてレコードIDツールで順位を振る、というのが一番スタンダードな方法です。ただ、レコードIDツールはスタンダードなパターンしか対応できないため、複数行フォーミュラツールを使った方法も覚えておくと後々応用が利くので身に着けておきましょう(そして、複数行フォーミュラツール自体にも慣れておくと良いと思います)。

解答ワークフローダウンロード

コメント

タイトルとURLをコピーしました