はじめに
初めてお目にかかります、y.koです。今年1月からTruestarにインターンとして入社し、4月から大学3年生になります!よろしくお願いします!
TruestarではHawkeye Viewerに携わっており、業務をこなしつつAlteryxのトレーニングを少しずつ進めています。
Alteryx初心者ならではの立場を生かし、ブログを通して同じくAlteryxを学習している方々と一緒に成長できればと思い、今週から毎週【初心者向けAlteryx】シリーズを書いていきたいと思います!(生まれてこのかたブログというものを書いたことがないのでお手柔らかにお願いします…)
現段階ではAlteryx Weekly Challengeを主なトピックスにして連載する予定です。このWeekly ChallengeというのはAlteryxのコミュニティーで毎週1題出されている問題ですが、2021/3/8現在、#105つまり計105題(日本語版)出題されてきました!!公式のチュートリアルを全部見終わって、ある程度操作方法はわかったけどもっと経験を重ねたい方にとってはベストな問題集のようなものです!前の週で出題された問題は翌週に答えも載せられているので、このシリーズでは主に解説および所感といったところを書こうかなと思っています。
問題および解答
と、ここまで前置きが長くなってしまいました。早速ですが初週ということもあり、過去の出題の中から比較的取り掛かりやすいもの(と自分は思っています)をピックアップしました!チャレンジ#17:2019 FIFA女子ワールドカップです!
以下問題です。
ファイルwomens_world_cup_data.txt内のデータを使用して、最も多くの試合に勝ったチームを特定してください。
そして以下が解答の一例となります。
プログラム実行後、最も多くの試合に勝ったチームはenglandで16勝という結果が出ました。
解説
プログラミングや数学といった物事のプロセスを考える際には、常に逆算的な思考回路をするように心がけています。最終的に得たいものから逆に追ってその直前にほしい数値や結果を考え、その繰り返しがあるからこそ最初の一歩があると考えています。
今回の問題において、最終的なゴールとして「各チームの勝ち数合計を比較したい!」が挙げられると思います。逆算のプロセスを一つのフローにしてみると、
という感じになると思います、これを実際にAlteryxで反映させていきます。便宜上下図のようにアクションそれぞれに番号をつけ、それぞれの意味を表しました。
① 入力データのスコア部分の型がstring型(文字列型)になっているが、大小比較のためには型を数値型にする必要があるため、型変更を行う
② 引き分けの試合は勝ち負けのカウンターを入れられないので、引き分けの試合を除くためのフィルター
③ 点数比較をし、数字が大きい方が"winner"となる
④ 次の作業をする上で便宜上各試合に番号をつける
⑤ 1試合2チームをまとめられると勝ったチームのチーム名が抽出できないため、転置作業を施すことによりそれぞれのチームとして見ることができる
⑥ "winner"とチーム名を一致させる
⑦ ③の"winner"をもとに、勝ったチームの名前だけを羅列する
⑧ 各チームの⑦での出現回数が勝ち数合計となる
⑨ ⑧の勝ち数合計を降順に並び替える
⑩ ⑨で並び替えたもので一番上にあるチームが一番多く試合に勝ったことになる
⑥の転置に関しまして、多くの初心者がつまずきやすいポイントで、実際自分もこのツールを理解するのに時間がかかりました。
この問題で使用されているデータの一部を用いて詳しく見てみましょう。
こちらのデータを以下のような操作により転置しました。
転置ツールにおいて、「キーフィールド」と「データフィールド」の2つがあります。
チェックした「キーフィールド」は変換されることなく「データフィールド」が変換対象となります。「データフィールド」としてチェックしたフィールドはフィールド名「Name」、データを「Value」として格納する形になります。
本当の初心者はこの文章だけだと何を言っているのか理解できないと思うので(私は理解できなかったです…)、テーブルをわかりやすく色付けてビジュアル化してみました。
こちらが元データです。
RecordIDが「キーフィールド」、すなわち変換しないフィールドとして固定します。
「Name」という列にTeam_i、Team_jをそれぞれ入れ、そのRecordIDに対応する国名が自動的に「Value」の欄にあてはまります。これらの転置作業により実際変換後下のデータセットが得られました。
おわりに
以上チャレンジ#17を解説してみました。こんな感じで毎週各出題のウィークリーチャレンジをピックアップして私自身もみなさんと一緒に徐々にレベルアップしていきたいです!
最後まで読んでくださりありがとうございました!次回もお楽しみに!
y.ko