Alteryxでグループごとに一意なIDを振る

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

こんにちは、小澤です。

今回は、Alteryxでグループごとに一意なIDを振る方法を解説したいと思います。

一意なID

特定の値を指定すると、特定の1行のみにデータを絞り込むことができるような値が欲しいことがあります。 データベースなんかだと、主キーと呼ばれるものに該当します。

通常、データ分析では大量のデータをまとめて扱うことが多いため、 OLTPなどの処理と違って特定の1行のみに絞り込みたい場面はあまりないように思われるかもしれません。

しかし、特定の行に絞り込むのではなく「同一のものである」ということを認識させるためにこの値が重要になる場面が多々あります。

特にAlteryxでは、ワークフローの組み方として複雑に分岐させた後にそれらを結合するなどといった場面がよくあります。 そういった際にはRecord IDツールを利用して一意なIDを作成してしまうのが便利でした。

グループごとのID

さて、全体で一意なIDではなく、特定の列の値が同じものの中で一意な値を振りたい場面もあります。 例えば、以下のように"speceis"の値ごとに一意なIDを振りたいとします。

SQLだと、row_number関数のようなものです。

Alteryxでやってみる

さて、実際にこの値をAlteryxで出力する流れをみてみましょう。 ワークフロー全体像は以下のようになっています。

まず最初のFormulaツールでやっていることは非常に単純です。

すべての行で数値の"1"が入る列を作成しています。 確認するまでもないかもしれませんが、以下のような結果になります。

続いてのRunning Totalツールでは、以下のような設定をしています。

Group Byでグループ化したい列を指定します。 Create Running Totalで先ほどFormulaツール作成した列を選択します。 これによって、グループごとの累積和が計算されますが、すべての値が1なので、この値は1, 2, 3,...となっていきます。

最後にSelectツールですべてが1の列を削除すれば、目的の結果が得られます(この出力は結果をみやすくするために一部に絞ったものになっています)。

おわりに

今回は、Alteryxでグループごとに一意なIDを振る方法を紹介しました。

この値は、グループごとに上位n件に絞るなど、後続の処理で利用するようなものになるかと思います。

Alteryxの導入なら、クラスメソッドにおまかせください

日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。

alteryx_960x400