Alteryxで項目ごとの回答率を調べる

alteryx

こんにちは、小澤です。

データを様々な形で集計したいってことは、日常でよくあるかと思います。 今回は、alteryxでデータ集計をしたくなった時に使えるテクニック満載のサンプルワークフローを紹介します。

ワークフローの中身

今回利用するのは、 Help > Sample Workflows > Clean and prepare data > Measure he quality of data となります。 このワークフローでは、ユーザ情報として設定するような各項目がどの程度の割合で実際に記載されているかを調べるものになります。

ワークフローの中身を以下のようになっています。

スクリーンショット 2017-08-04 16.05.53

入力データは以下のようにユーザ情報を入力したようなものになっています。

スクリーンショット 2017-08-04 17.53.57

このワークフローの出力は以下のようになります。

スクリーンショット 2017-08-04 16.10.09

内容としては、

  • 全体件数
  • 項目名
  • 記載されている件数
  • 記載されている割合

がそれぞれの項目ごとに集計され表示されている状態になっています。

データ中の欠損値の割合などはBrowseツールのProfileやField Summaryツールなどでで確認することが可能ですが、このような形式の集計テクニックは他でも様々な場面で役立つものかと思います。

これを実現する手順を見ていきましょう。

データが入力されている件数の集計

まず、最初に行うのが各項目ごとのデータが入力されている件数の取得です。

スクリーンショット 2017-08-04 16.05.53 2

ここではまず、Transposeツールを利用しています。

image57

まずは、このツールの設定項目を見てみましょう。

スクリーンショット 2017-08-04 16.59.17

Key FieldsとData Fieldsという2つの項目があり、それぞれ入力データのカラム名がリスト表示されています。 このツールでは、Data Filedsでしていしたカラムを、カラム名と値のkey-value形式に変換してくれます。

なかなかわかりづらいと思うので、例を出して解説していきます。 まず、以下のようなデータがあるとします。

id first_name middle_name last_name
1 じょん [null] すみす
2 たろう A やまだ
3 ゆきち [null] ふくざわ
4 じゃん ぴえーる ぽるなれふ

これに対して、Data Fieldsでfirst_name, middle_name, last_nameでチェックを入れると以下のようなデータが生成されます。

Name Value
first_name じょん
middle_name [null]
last_name すみす
first_name たろう
middle_name A
last_name やまだ
first_name ゆきち
middle_name [null]
last_name ふくざわ
first_name じゃん
middle_name ぴえーる
last_name ぽるなれふ

また、ここでKey Fieldsでidにチェックを入れると以下のように元のデータのidの値が追加されます。

id Name Value
1 first_name じょん
1 middle_name [null]
1 last_name すみす
2 first_name たろう
2 middle_name A
2 last_name やまだ
3 first_name ゆきち
3 middle_name [null]
3 last_name ふくざわ
4 first_name じゃん
4 middle_name ぴえーる
4 last_name ぽるなれふ

このような動きをするのがTransposeツールとなります。 これによって、NameやKey Fieldで指定した値で、グループ化した集計につなげるといったことが可能になります。

上記の画像のように、今回のワークフローではKey Fieldsは利用せずすべてのカラムをData Fieledに設定しています。 そのため、すべてのデータがこのNameとValueの形式に変換されています。

スクリーンショット 2017-08-04 17.16.32

続いてのFomulaツールでは、以下のような設定が行われています。

スクリーンショット 2017-08-04 17.17.19

ここでは、Valueに値が入っていないものをnullとして扱うための変換を行っています。

このプロセスの最後はSummarizeツールでデータを集約しています。

image10

このツールでは、以下の設定を行っています。

スクリーンショット 2017-08-04 17.18.58

この設定では、まずGroupByで指定したName列の値が同じものごとにグループ化を行います。 続いて、各グループごとにもう1つの設定であるCountNonNull、すなわちnullじゃないデータの数を数え上げています。

先ほど、Transposeツールの動きを解説したデータを例にすると以下のような動きになります。

Untitled(3)

このワークフローでの設定では、以下のような結果が出力されます。

スクリーンショット 2017-08-04 17.46.34

ここまでで、各カラムごとのnullではない値の数を抽出することができました。

全レコード数を取得する

続いて、データ全体に対するnullの割合を求めるためにデータの件数を計算します。

スクリーンショット 2017-08-04 16.05.53 3

このやりかたは、簡単です。 SummarizeツールではGroupByの値を指定しなければ、全体を1つのグループにするので、それを利用してデータ件数をカウントしています。

スクリーンショット 2017-08-04 17.58.40

この設定のみで、全体のデータ件数である「370」を取得することができます。

データの結合

さて、次にこれら2つのデータを結合します。

スクリーンショット 2017-08-04 16.05.53 4

今回は、結合のkeyとなるカラムもなければ、データ件数が一致しているわけでもないので、Joinツールが利用できません。 そのため、すべての組み合わせで結合するAppend Fieldsツールを利用します。

image41

このツールではすべての組み合わせで結合されます。 例えば以下のような2つのテーブルがあるとします。

first_name
じょん
やまだ
last_name
 すみす
ふくざわ
ぽるなれふ

これらに対してAppend Fieldsツールを利用すると以下のような結果になります。

first_name last_name
じょん すみす
じょん ふくざわ
じょん ぽるなれふ
やまだ すみす
やまだ ふくざわ
やまだ ぽるなれふ

すべての組み合わせなので、例えば100件のデータが2つでも100 x 100 = 10000と、非常に大きなデータになります。 そのため、今回の全データ件数のように1つの値を全体に追加したいといった場合などに利用するがいいでしょう。

このツールの設定はSelectツールやJoinツールのように出力に含めるデータの選択などを行えます。

スクリーンショット 2017-08-04 18.11.53

出力結果は以下のようになります。

スクリーンショット 2017-08-04 18.13.33

出力の整形

次に最終的な出力結果を得るために、ここまでの結果の整形を行います。

スクリーンショット 2017-08-04 16.05.53 5

まずはFomulaツールで、nullではない件数を全データ件数で割ることで、パーセンテージを求めています。

スクリーンショット 2017-08-04 18.16.20

次に、Sortツールを使って求めたパーセンテージで降順ソートすることで、最終的な出力結果を求めています。

スクリーンショット 2017-08-04 18.17.25

最後に残った謎のツール

さて、ここまでで最終的な出力を得ることができました。 しかし、このワークフローにはまだもう1つツールが残っています。

スクリーンショット 2017-08-04 18.17.25

これはMessageツールというもので、ワークフローの出力に影響を与えるものではなく、ワークフローのログ部分にメッセージを表示するものになります。

image194

このツールを利用することで、以下のようなメッセージを表示しています。

スクリーンショット 2017-08-04 18.23.08

ツールの設定は以下のようになっており、入力が100%になっていない項目をwarningのメッセージとして出力する設定になっています。

スクリーンショット 2017-08-04 18.24.01

終わりに

今回は、サンプルワークフローでデータ分析を行う際の集計テクニックを解説しました。 このサンプルそのままの集計を行うことは少ないかもしれませんが、似たような操作でできるパターンの集計を行う機会はそれなりにあるかと思います。

Alteryxに興味をお持ちいただいた方はこちらからお問い合わせください。

alteryx_960x400

AWS Cloud Roadshow 2017 福岡