Free Trial

ディスカッション

答えを見つけ、質問し、Alteryx の専門知識を共有してください。

データサイエンス100本ノック 構造化データ加工編をAlteryxでやってみる(16問目~20問目:データ抽出基礎+順位付け編)

AkimasaKajitani
17 - Castor
17 - Castor

一般社団法人データサイエンティスト協会から公開されているデータサイエンス100本ノック 構造化データ加工編のウィークリーチャレンジ方式による出題第4回目は16問目~20問目を一つにまとめてみました。データ抽出に加えて、順位付けの問題も出てきました!

 

  • P-016: 店舗データ(store.csv)から、電話番号(tel_no)が3桁-3桁-4桁のデータを全項目表示せよ。
  • P-017: 顧客データ(customer.csv)を生年月日(birth_day)で高齢順にソートし、先頭から全項目を10件表示せよ。
  • P-018: 顧客データ(customer.csv)を生年月日(birth_day)で若い順にソートし、先頭から全項目を10件表示せよ。
  • P-020: レシート明細データ(receipt.csv)に対し、1件あたりの売上金額(amount)が高い順にランクを付与し、先頭から10件表示せよ。項目は顧客ID(customer_id)、売上金額(amount)、付与したランクを表示させること。なお、売上金額(amount)が等しい場合でも別順位を付与すること。
    ※同順位の場合はcustomer_idの昇順に並べること(Alteryxオリジナル条件)
  • P-019: レシート明細データ(receipt.csv)に対し、1件あたりの売上金額(amount)が高い順にランクを付与し、先頭から10件表示せよ。項目は顧客ID(customer_id)、売上金額(amount)、付与したランクを表示させること。なお、売上金額(amount)が等しい場合は同一順位を付与するものとする。
    ※同順位の場合はcustomer_idの昇順に並べること(Alteryxオリジナル条件)
    ※同一順位について:2位が2つあれば次は3位ではなく4位となるものとする

※19問目、20問目は、難易度の関係で順番を入れ替えております

 

解いたらこちらに投稿していただければと思います。ちなみに、次回投稿は一週間後を予定しています。

 

 

solutionファイルは次回添付します。

 

添付ファイルは今回の出題のstartファイルと、前回のsolutionファイルです。

 

前回:データサイエンス100本ノック 構造化データ加工編をAlteryxでやってみる(10問目~15問目:データ抽出基礎編)

 

 

26件の返信26
DaisukeTsuchiya
マグネター

できました。

 

スポイラ
キャプチャ.JPG

Yoshiro_Fujimori
オーロラ

できました。(どうもファイルがアップロードできないので、今回も画面コピーのみでの提出です。)

 

16問目:解答データのフィールドが1個一致しませんでしたが、OKとしました。

19問目:R言語だとmin_rank関数で簡単にできますが、Alteryxにはないので、

    レコードIDツールと複数行フォーミュラツールの組み合わせで解決しました。
   (ヒントにあったタイルツールでの解法も試してみましたがわかりませんでした)

スポイラ
16問目
Yoshiro_Fujimori_5-1660553721538.png

 


17問目

Yoshiro_Fujimori_1-1660553600144.png

18問目

Yoshiro_Fujimori_2-1660553625326.png

20問目

Yoshiro_Fujimori_3-1660553646029.png

19問目

Yoshiro_Fujimori_4-1660553670252.png

 

 

sanae
ボリード

できました!

スポイラ
100knocks_alteryx_01_016-020_sanae.png
Qiu
21 - Polaris
21 - Polaris

できました。100knocks_alteryx_01_016-020.PNG

Rankingについて、下記を参考しました。

https://www.thedataschool.co.uk/liu-zhang/alteryx-how-to-rank-by-group

スポイラ
 
AkimasaKajitani
17 - Castor
17 - Castor

できました!

 

スポイラ
19問目はなんだかんだでこのやり方です・・・。

AkimasaKajitani_0-1660983112554.png
AkimasaKajitani_1-1660983137619.png

 

 

@Yoshiro_Fujimori さん

 

スポイラ

16問目:解答データのフィールドが1個一致しませんでしたが、OKとしました。
→ はい、問題ないと思います!もとの100本ノックにもこの項目があったのでそのままやっています。

19問目:R言語だとmin_rank関数で簡単にできますが、Alteryxにはないので、

    レコードIDツールと複数行フォーミュラツールの組み合わせで解決しました。
   (ヒントにあったタイルツールでの解法も試してみましたがわかりませんでした)
→タイルのTile_SequenceNumが複数行フォーミュラと同じように出てくるので、、、設定量が減るくらいの効果くらいしかないですね・・・

ランキングの取り方でもう一つメジャーなのがありますよね。1,2,3,3,3,4,4,4,みたいな感じで19問目みたいに番号が飛ばないバージョンですね。そのあたりもやっていればだいたい網羅できるのかな、と思います。

Yoshiro_Fujimori
オーロラ

@AkimasaKajitani さん

> 1,2,3,3,3,4,4,4,みたいな感じで19問目みたいに番号が飛ばないバージョン

 

'dense rank' ですね。

19問目のMulti Row Formulaの式を少し変えたらできました。

 

スポイラ
IF [Row-1:amount]=[amount]
THEN [Row-1:Rank]
ELSE [Row-1:Rank] + 1
ENDIF
Yoshiro_Fujimori_0-1661126531053.png

 

R にはほかにもランキングについての関数があるので、Alteryxで試してみると面白いかもしれませんね。
https://dplyr.tidyverse.org/reference/ranking.html

 

AkimasaKajitani
17 - Castor
17 - Castor

@Yoshiro_Fujimori さん

 

実はこの問題(Dense Rankって言うんですね・・・)は、過去のウィークリーチャレンジでもありました。

チャレンジ #4: アナリティクス ランキング

 

元の問題よりこちらの方が実は簡単ですね、、、

 

 

Masao
メテオール

解答できました!

複数行フォーミュラの使い方も少し慣れてきました。

スポイラ
Masao_0-1669111728335.png

 

gawa
16 - Nebula
16 - Nebula

19問目でがっつりはまりました

スポイラ
image.png

メモ

正規表現なしでもなんとかなる

初心者はNo.19はいったん飛ばしてもよいかも(SQLだと楽なやつ)