Challenge #41: Analytics PayPeriodCalc ~支払い期間の日数~ – Alteryx Weekly Challenge

2019.03.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。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日間の無料トライアルも実施中ですので、お気軽にご相談ください。

alteryx_960x400