Challenge #41: Analytics PayPeriodCalc ~支払い期間の日数~ – Alteryx Weekly Challenge
こんにちは。Alteryxサポートエンジニアとして勉強中のスズです。
Alteryx Communityで公開されているWeekly Challengeに挑戦するシリーズ。今回は支払い期間の日数の出力に挑戦します。
動作環境
当エントリの執筆には、以下の環境を利用しています。
- Windows 10 Pro
- Alteryx Designer 2019.1.4.57073 英語版
Challenge #41: Analytics PayPeriodCalc
お題
今回挑戦するお題はこちら。
Input側のデータはこちら。1ヶ月を2回に分けて給料を支払うという想定で、P1の開始日と終了日、P2の開始日と終了日が用意されています。
Output側のデータはこちら。年月別に、P1とP2の日数が出力されています。日数は土曜日と日曜日を除いた平日の日数になっています。
解答のワークフロー全体図
今回作成するワークフローはこちら。
日付の変換
用意されているデータは文字列型になっていますので、まずはDate型への変換を行います。
Record IDツールでIDを付与してから、Formulaツールに接続し、各列それぞれにDateTimeParseを使用してDate型に変換します。また、ついでに「Month」列をV_WString型で作成し、年月を出力します。
Date型の変換は以下の設定をしています。
DateTimeParse(<列>,"%m/%d/%Y")
「Month」列の出力は以下のとおりです。
DateTimeFormat([New P1 Start],"%B, %Y")
日数の出力
ここから処理が分かれますが、以下の画像の赤枠部分ではP1とP2に分けて同じ処理を行っていますので、まとめて紹介します。
Generate Rowsツールを使用して新しく「RowCount」列をDate型で作成し、開始日から終了日までの日付を出力します。
Formulaツールを使用して、「RowCount」列で出力した日付の曜日を出力します。
出力するデータとして以下の設定をしています。
DateTimeFormat([RowCount],"%A")
この時点でデータは以下のようになっています。
曜日が分かるようになりましたので、Filterツール土曜日と日曜日を除外します。
Custom Filterに設定した条件は以下のとおりです。
[Day of the week] != "Saturday" and [Day of the week] != "Sunday"
Summarizeツールを使用して、Record IDツールで付与したIDでグループ化し、各グループのデータの数を出力します。各グループのデータの数が日数になりますので、列名をOutput側のデータにあわせて設定します。
データの結合
これで各データの準備ができましたので、データを結合していきます。
データの結合にはJoin Multipleツールを使用します。初めのFormulaツールの出力データと、Summarizeツールの出力データを、IDで結合します。また、不要な列は削除しておきます。
Output側のデータにあわせるためSortツールで「Month」列を昇順で並べ替えてから、結果を確認して完成です。
最後に
今回はWeekly ChallengeのChallenge #41: Analytics PayPeriodCalcに挑戦しました。
サンプルワークフローのご案内
クラスメソッドでご契約のユーザー様向けに、当ブログでご紹介したワークフローを専用ポータルにて公開しております。当エントリでご紹介したワークフローも公開予定ですので、ご参考にしていただきますと幸いです。
Alteryxの導入なら、クラスメソッドにおまかせください
日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。