We'll be completing standard maintenance for our Single Sign-On system on November 30th 6pm Pacific Time for approximately one hour. During this time My Alteryx and sign-in functionality to all My Alteryx programs (Licensing Portal, Community, Beta Program, Case Portal, and others) may be inaccessible. Thank you for your patience.
Free Trial

ディスカッション - 日本語

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

データサイエンス100本ノック 構造化データ加工編をAlteryxでやってみる(39問目~45問目:集計・データ結合・レコード間処理編)

AkimasaKajitani
16 - Nebula
16 - Nebula

一般社団法人データサイエンティスト協会から公開されているデータサイエンス100本ノック 構造化データ加工編のウィークリーチャレンジ方式による出題第8回目は39問目~45問目を一つにまとめてみました。今回は集計・データ結合・レコード間処理で様々な種類の問題が多いかと思います。

 

  • P-039: レシート明細データ(receipt.csv)から、売上日数の多い顧客の上位20件を抽出したデータと、売上金額合計の多い顧客の上位20件を抽出したデータをそれぞれ作成し、さらにその2つを完全外部結合せよ。ただし、非会員(顧客IDが"Z"から始まるもの)は除外すること。

    ※出力データの並びは、売上日数の降順かつ、売上金額の降順、顧客IDの昇順でソートすること
    ※同一数の場合はcustomer_idの小さな方を採用する

  • P-040: 全ての店舗と全ての商品を組み合わせたデータを作成したい。店舗データ(store.csv)と商品データ(product.csv)を直積し、件数を計算せよ。
  • P-041: レシート明細データ(receipt.csv)の売上金額(amount)を日付(sales_ymd)ごとに集計し、前回売上があった日からの売上金額増減を計算せよ。そして結果を10件表示せよ。

  • P-042: レシート明細データ(receipt.csv)の売上金額(amount)を日付(sales_ymd)ごとに集計し、各日付のデータに対し、前回、前々回、3回前に売上があった日のデータを結合せよ。そして結果を10件表示せよ。

    ※過去の売り上げ情報が不足する最初の3回分は最終結果から取り除くこと

  • P-043: レシート明細データ(receipt.csv)と顧客データ(customer.csv)を結合し、性別コード(gender_cd)と年代(ageから計算)ごとに売上金額(amount)を合計した売上サマリデータを作成せよ。性別コードは0が男性、1が女性、9が不明を表すものとする。

    ただし、項目構成は年代、女性の売上金額、男性の売上金額、性別不明の売上金額の4項目とすること(縦に年代、横に性別のクロス集計)。また、年代は10歳ごとの階級とすること。

  • P-044: 043で作成した売上サマリデータ(sales_summary)は性別の売上を横持ちさせたものであった。このデータから性別を縦持ちさせ、年代、性別コード、売上金額の3項目に変換せよ。ただし、性別コードは男性を"00"、女性を"01"、不明を"99"とする。

    ※売上がNullのデータは除く
    ※最終のデータは、年代の昇順、性別コードの昇順に並べること

  • P-045: 顧客データ(customer.csv)の生年月日(birth_day)は日付型でデータを保有している。これをYYYYMMDD形式の文字列に変換し、顧客ID(customer_id)とともに10件表示せよ。

 

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

 

 

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

 

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

 

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

5件の返信5
Yoshiro_Fujimori
ボリード

毎回ありがとうございます。以下回答いたします。

 

スポイラ
39問目
 最初、集計直後のソートに customer_id を入れなかったので回答が合いませんでした。
Yoshiro_Fujimori_0-1662951940598.png

 

40問目
 いまさらながら、 Append Fieldツールは直積なんだなあと。
Yoshiro_Fujimori_1-1662952049650.png

 

41問目
Yoshiro_Fujimori_2-1662952171747.png

 

42問目
 multi row formulaツールは 1回に1列しか処理できないので、3個つなげました。
 ちょっとカッコ悪いですが、ほかの方法が思いつきませんでした。
Yoshiro_Fujimori_3-1662952254259.png

 

43問目
 Formulaツールで"age"を 10で割るところで「文字列だから割れないよ」というParse Errorメッセージがでますが
 実行すると問題なく処理できるので、おそらく構文チェックのクセのようなものと思われます。
 (Joinツールの設定画面上で、ワークフローの初回実行前はデータ型がすべて"文字列"になっているが、一度実行すると"数値型"になるため?)
Yoshiro_Fujimori_4-1662952364531.png


44問目
 当初、性別コードの変換はFormulaツールで場合分けしてセットしようかと思いましたが
 変換テーブルを外出しした方が見やすいので Find Replace ツールを使うことにしました。 

Yoshiro_Fujimori_5-1662952620214.png


45問目

Yoshiro_Fujimori_6-1662952997679.png

 

 

 

DaisukeTsuchiya
クエーサー

ここらへんになってくるとAlteryxではまだまだ簡単ですが、SQLでは作る気になれませんね。(少なくとも私だとSQLでは組めません。)

 

スポイラ
キャプチャ.JPG

 

Qiu
19 - Altair
19 - Altair

毎回ありがとうございます。

スポイラ
100knocks_alteryx_01_039-045.PNG

 

AkimasaKajitani
16 - Nebula
16 - Nebula

できました!

 

スポイラ
AkimasaKajitani_0-1663383668774.png
AkimasaKajitani_1-1663383688251.png
AkimasaKajitani_2-1663383711879.png
AkimasaKajitani_3-1663383731196.png

 

 

 

Masao
メテオール

解答つくりました!

スポイラ
Masao_0-1669719092850.png