Community Spring Cleaning week is here! Join your fellow Maveryx in digging through your old posts and marking comments on them as solved. Learn more here!
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問目:データ抽出基礎編)

 

 

25件の返信25
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
20 - Arcturus
20 - Arcturus

できました。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
15 - Aurora
15 - Aurora

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

スポイラ
image.png

メモ

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

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