【Alteryx】連番作成する際のそれぞれのツールの特徴(行生成ツール、レコードIDツール、反復マクロ)

2023.07.03

皆さんこんにちは!アライアンス事業部のエンジニアの清水です。

Alteryxにはツールが多数あるため、どのツールを利用するのが、自分の要件に一番適しているのか悩むときがあるかと思います。

本日は小ネタとして、よく業務でも利用する機会がある連番の作成に関してご説明します。

連番をAlteryxで振るには

例えば、以下のようなURLが存在していて、このURLを元に最終的にダウンロードツールを利用してWeb上からデータ取得を行いたいとします。

  • https://www.hogehoge.01.htm
  • https://www.hogehoge.02.htm
  • https://www.hogehoge.03.htm ・ ・ ・

この時、上記のように01-03番程度であれば、「https://www.hogehoge.」と「01.htm」「02.htm」「03.htm」といったデータを手入力で用意してDLツールを利用はできるかと思います。 しかしこれが100あった場合はどうでしょうか?さすがに手入力は大変です。

あらかじめエクセルなどでオートフィルを使って連番を作っておく方法もありますが、Alteryxで出来る方法をご紹介します。

連番作成に使えるツール

行生成ツール

設定された条件がfalseになるまで、レコードを生成します。項目作成の際は「数値型」になります。元のデータが1行しかない場合反復マクロよりもこちらを使うと便利です。

連番の作り方

①あらかじめ最終的に連番と紐づけたいデータを、用意しておきます。

②条件式に100番を含む連番を、行生成するように数式を記入します。

③この時の考慮事項として、行生成を行う際のフィールドタイプは、あくまで数値型でしか指定できません。今回の場合最終的にはURLを紐づけたいので、文字列型にしなければいけませんが、ループ式を行う上でカウントが必要になり文字列では行う事ができないので、数値型以外では行生成が出来ません。

Alteryxでのデータの型とその役割

④行生成されたフィールドを元に、新しく文字列型のフィールドを数値型から文字列型へ変換できる数式を使って作成します。今回は「N」と項目をつけてみました。

⑤最後に元々用意していたURLと、新たに作成した「N」項目を文字列で+します。

⑥DLツールを利用する前に、不要な項目はセレクトツールで除外してあげると、このように目的のデータが作成できました。

レコードIDツール

レコードIDツールは、各レコードに一意の番号を割り当てるツールです。項目作成の際は「数値型」以外にも「文字列型」も指定できるので、[01]といった表現も可能になります。そのため文字列同士の合体も、新しく項目を増やさなくても可能になります。その反面、元のデータが1行しかない場合連番を増やす機能はないので、あらかじめ連番の数の分だけ行を増やしておく必要があります。

連番の作り方

①あらかじめ最終的に連番と紐づけたいデータを、用意しておきます。

②条件式に100番を含む連番を、行生成するように数式を記入します。

③レコードIDツールに、サイズ「2」を指定します(2桁という意味です、この場合01になります。100番になると10へ切り捨てられるので、その場合は手直しが必要です)。今回は最終的に文字列にしたいので「String」で指定します。

④元々用意していたURLと、新たに作成した文字列項目の「RecordID」で合体させます。

⑥DLツールを利用する前に、不要な項目はセレクトツールで除外してあげると、このように目的のデータが作成できました。

反復マクロ

連番作成だけで見ると、マクロのファイルとWFの2種類ファイルが必要になり、処理プロセスや処理時間も上記のツールを利用するよりもかかるため、連番作成に加えて何かしら処理を加えた結果を出したいときにマクロを利用するのがいいと思います。

マクロ側

①「マクロ入力」と「マクロ出力」に加えて、反復マクロの回数の結果を吐き出す「マクロ出力」の3つを用意します。

②「マクロ入力」には、空データで今回最終的に作成したいURL項目を用意しておきます。

③次にフォーミュラツールに、反復回数の変数項目である「Engine.IterationNumber」を指定し、繰り返し処理をするため+1を指定します。この時、行生成ツールでも説明したいときと同様に繰り返しのループ処理の結果を表示するため、数値型に指定しておきます。

④次に反復マクロの回数の結果を吐き出す「マクロ出力」を追加します。ここでは反復の意味を表すIterateに設定してみました。 データフローのイメージとして分かりやすいように、赤矢印を追加してみました。

⑤反復回数を100以下の時に、マクロの結果を出力するとしたいので、フィルターを設定します。

⑥最後に「マクロ出力」を配置します。これでマクロ側で使用するツールの設定は終了です。

⑦インターフェースデザイナーで反復する回数を100に設定し、それぞれ出力モードと回数に達した時の設定を好きなものに設定します。

WF側

①作成した反復マクロを、あらかじめ作成しておいたURLが入ったテキストツール後に、設置します。ここで「O」アンカーのほうを見ると、繰り返しした回数分マクロが出力した結果が表示されています。 ②一方で、「I」アンカーを見ると、繰り返しした回数を表す100が表示されています。

③その後は上記の他ツールと同じように文字列の項目を作成し、URLと合体させます。

④最後に、不要な項目はセレクトツールで除外してあげると、このように目的のデータが作成できました。

比較してみた

最後にそれぞれのツールを利用し連番を振り、DLツールを利用して実際に同じ条件で、あるデータをWebスクレイピングしてみた処理結果をお伝えします。

行生成ツール

レコードIDツール

反復マクロ

反復マクロで連番作成を行うのが一番、処理実行が遅いかなと予想していたのですが、100件程度の繰り返し処理であれば、実際にはそこまで他ツールと大差ありませんでした。読み込むデータの量や、繰り返し処理を行う回数にもよると思いますのでデータ量が多く、繰り返し処理が複雑な内容になればなるほど、マクロと他ツールでは大差は開くかと存じます。

この検証が、どなたかのお役に立てば幸いです。