Alteryxウィークリーチャレンジ#1中級やってみた!

全てのAlteryxウィークリーチャレンジャーに捧ぐ。#1の解説です。
2023.12.13

アルテリックス?アルタリクス?どちらでもわたしは一向にかまわんッッ!の國崎です。

Alteryxウィークリーチャレンジ#1をやってみたので、そちらの解説記事をご紹介します。
今回のチャレンジテーマは「#1:範囲に結合」です。

今回のチャレンジでやること

お題

オーストラリアのある会社は、いくつかのデータフィールドの間で一連の郵便番号 (例えば2000、2001、2002など) で構成されるソースデータを持っています。彼らはメインデータを一致/フィルタリングするために使用したい郵便番号の範囲 (例えば 2000から2002) を含む別の参照テーブルを持っています。

各顧客レコードは、郵便番号領域の範囲 (Range)に基づいてルックアップテーブルに結合する必要があります。最後に、地域 (Region)、営業担当者 (Sales Rep)、およびレスポンダー (Responder)によって顧客データを集計し、次に顧客数を計算しましょう。

引用元:#1:範囲に結合

2つのデータがあり、そこから結合抽出カウント並び替えをして出力する感じです。

用意されたCSVデータ

その1:各顧客情報のリスト。
alteryx-weekly_1_1

その2:郵便番号毎の営業範囲と担当営業のリスト。
alteryx-weekly_1_2

ゴール

最終的に「営業地域」と「担当営業」と「応対者の有無」と「各顧客数」を表示させます。   alteryx-weekly_1_3

レッツチャレンジ!

フォーミュラで不特定多数の数字を条件を決めて分類する

まずフォーミュラを使って今回バラバラにある「郵便番号」を「各指定の営業地域毎」に分類します。
今回用意されている「その2データ」に郵便番号毎の地域(Region)があるので、「その1データ」の郵便番号に地域(Region)を反映します。   alteryx-weekly_1_2_2

フォーミュラに以下の計算式を入力します。

IF [Postal Area] >= 2000 AND [Postal Area] < 2020 THEN 'R1'
ELSEIF [Postal Area] >= 2020 AND [Postal Area] < 2040 THEN 'R2'
ELSEIF [Postal Area] >= 2040 AND [Postal Area] < 2060 THEN 'R3'
ELSEIF [Postal Area] >= 2060 AND [Postal Area] < 2080 THEN 'R4'
ELSEIF [Postal Area] >= 2080 AND [Postal Area] <= 2100 THEN 'R5'
ELSE 'その他'
ENDIF

実行すると郵便番号毎に振り分けられた地域(Region)が追加されました。   alteryx-weekly_1_4

結合でデータを内部結合する

「その1データ」と「その2データ」で同じカラム(Region)ができたので結合を使って内部結合させます。
互いのRegionをキーに指定して実行するとデータが結合されました。   alteryx-weekly_1_5

集計でグループ化の顧客のカウントをする

今回最終的に目指す「営業地域」と「担当営業」と「応対者の有無」でグループ化した顧客数を集計を使って算出します。
実行するとCountのカラムに各グループ毎に計算された顧客数が計算されました。
alteryx-weekly_1_6

フォーミュラで並び替えるためのカラムを作成する

上の工程までで今回算出するデータは揃ったのですが、ゴールのデータを見ると並び替えもしてあるので、こちらもやります。
Regionの昇順に並べたいのですが、Regionのデータ型は文字型で数字ではないので、Regionから数字を抜いたカラム(Region Number)を再度フォーミュラで作成します。

以下のコードを記載し、新たにRegion Numberのカラムを出力します。

ToNumber(Substring([Region], 1))

実行すると一番右のカラムにRegionからRを抜いた数字のカラムができました。
alteryx-weekly_1_7

セレクトでデータの型を変更する

この時点で作成したRegion Numberは見かけは数字のカラムですが、データ型としてはRegionを引き継いだ文字型になっているので、セレクトで数字型(Int64)に変更します。
alteryx-weekly_1_8

ソートで並び替えをする

Region Numberが数字型になったことでソートで並び替えができるようになりました。
ゴールのデータを再確認するとRegionが昇順でResponderがNo→Yesの順に並んでます。
alteryx-weekly_1_8_2

Region Numberを昇順、Responderを昇順にして実行するとゴールのデータと同じ順にレコードが並びました。

セレクトで不要なカラムをとる

最後にセレクトを使って今回並び替えのために作ったRegion Numberを削除します。
Region Numberのチェックを外して実行するとゴールと同じデータができました。
alteryx-weekly_1_10

とりあえず今回の#1はこれにて完了となります!

まとめ

AlteryxのウィークリーチャレンジをやるとAlteryxでやれることがいろいろと見えてきます。
今回の作業はエクセルでもできないことはないと思いますが、データを変更したいとか、データの条件を切り替えたいとなった場合、また一からになってしまい苦労しますよね!

Alteryxだとデータの変更や条件切り替えも変えたい部分だけ変えたら、あとは実行しなおすだけで出力データを切り替えてくれます。
超便利!

補足ですがフォーミュラの式部分はChatGPTに書いてもらいました。
alteryx-weekly_1_11