[Alteryx]Webアクセス解析のようなことをする

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

こんにちは、小澤です。

今回はAlteryxでこんこと実現するにはどうすればいいんだっけ?というような状況にお答えする簡単なサンプルを作成してみたいと思います。 利用するデータは簡易的に作成したサンプルですが、実際に似たような状況に遭遇することもあるかと思います。

やること

いくつかの切り口で簡単な分析をする例を紹介します。 イメージしやすさを優先して複雑な分析は行わなず、簡単な例を紹介します。

手元にあるデータは以下のようなものとなります。

  • ユーザ情報のデータベース
  • webサイトの各ページに関する情報
  • 商品一覧のデータベース
  • webサイトへのアクセスログ

データの確認

まずは、それぞれにどんな情報が含まれているのかを確認します。

スクリーンショット 2017-04-13 10.24.53

ユーザ情報のデータベース

ユーザに関する情報は以下のようになっています。

スクリーンショット 2017-04-13 10.26.22

今回は簡略化された情報として、ユーザID, 年齢, 性別のみを保持しています。

webサイトの各ページに関する情報

Webページ一覧は以下のようになります。

スクリーンショット 2017-04-13 10.28.43

各ページのURL, タイトル, 本文の情報が記載されています。

また、データには日本語が含まれるため入力時の文字コードをUTF-8にしています。

スクリーンショット 2017-04-13 10.36.18

商品一覧のデータベース

商品一覧のデータベースには以下のようになっています。

スクリーンショット 2017-04-13 10.31.16

Webサイトのアクセスログ

Webサイトのアクセスログは以下のようになっています。

スクリーンショット 2017-04-13 10.34.55

Webサイトのアクセスログは他の情報と異なり、ヘッダ行がないためSelect Toolで追加しています。

スクリーンショット 2017-04-13 10.39.26

簡単な分析をしてみる

このデータを元に簡単な分析をしてみます。

商品ごとのアクセス数

まずは、商品ごとのWebページのアクセス数を確認してみます。

スクリーンショット 2017-04-13 11.13.10

まずは、Webページの中から以下の情報を取得します。

  • 商品に関する情報のページのみに絞り込み
  • それぞれのページと商品名を結びつける

今回はこれらを実現するのにJoin Toolを利用しています。 商品に関するページのtitleが商品名になっているのを利用し、商品一覧との結合を行っています。

スクリーンショット 2017-04-13 11.13.10 2

スクリーンショット 2017-04-13 11.18.00

結合の結果、以下のようなデータが得られます。

スクリーンショット 2017-04-13 11.21.12

次にログデータにある各ページへのアクセスログと結合します。 これは前段のデータに含まれる各ページのURLとログの中に含まれるアクセスページのURLで結合できます。

スクリーンショット 2017-04-13 11.13.10 3

スクリーンショット 2017-04-13 11.38.32

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

スクリーンショット 2017-04-13 11.41.38

最後に、Summarize Toolでページごとのカウントを取得し、アクセス数の降順でソートしています。

スクリーンショット 2017-04-13 11.13.10 4

スクリーンショット 2017-04-13 11.45.39

スクリーンショット 2017-04-13 11.46.07

スクリーンショット 2017-04-13 11.46.51

結合するためのキーがすぐに見つからない場合は?

今回の例ですと、webページのtitleが商品名になっているため、そのまま利用できました。 しかし、場合によってはうまいデータ情報がない場合があります。

そういった場合には名寄せなどの作業が必要になることがあります。 例として、以下のようなパターンが考えられる

  • 正規表現などの文字列操作で必要な部分を取り出す必要上がる
  • 表記ゆれの解消や日本語と英語の変換が必要
  • ユーザIDの異なる複数のシステム間で同一ユーザの情報を取得する

状況にもよりますが、下に行くほど難易度が高くなります。 特に下2つに関しては、やり方自体はわかっていて、Alteryxでどのようなツールを利用して実現するかよりも、そもそもどういう手法で実現するかから検討が必要になるでしょう。

正規表現で必要な部分を抜き出すことが可能な場合は、AlteryxではReguler Expression Toolが利用できます。 例えばtitleをメーカ名と商品名を「|」でつないでいるような場合は以下のようになります

スクリーンショット 2017-04-13 11.34.31

スクリーンショット 2017-04-13 11.34.07

スクリーンショット 2017-04-13 11.34.41

スクリーンショット 2017-04-13 11.34.55

年代ごとの傾向

次に年代ごとに傾向があるかを見ていましょう。

スクリーンショット 2017-04-13 13.14.34

ログから商品に関するページのみを取得する部分は先ほどの例と同様です。 次に、以下の部分でユーザ情報に対する前処理を行います。

スクリーンショット 2017-04-13 13.14.34 2

まず、Select Toolを利用して、年齢の項目を文字列から数値に変換します。

スクリーンショット 2017-04-13 13.18.14

次にFomula Toolを利用して、年齢から年代を計算します。 この計算は何をしているかというと、年齢を10で割ったものの小数点を切り捨てて10をかけることで年齢の一桁目を0にしています。

スクリーンショット 2017-04-13 13.24.22

また、今回の例では利用しませんが、データ分析ではよく必要になるため性別を男性が0、女性が1という形式で数値に変換しています。

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

スクリーンショット 2017-04-13 13.25.22

次にユーザデータを他のデータと結合します。

スクリーンショット 2017-04-13 13.14.34 3

スクリーンショット 2017-04-13 13.28.09

スクリーンショット 2017-04-13 13.28.53

最後にこれを年代ごとに集計します。

スクリーンショット 2017-04-13 13.14.34 4

Summarize Toolで集約したのち、Cross Tabツールで行列を修正しています。

スクリーンショット 2017-04-13 13.31.16

スクリーンショット 2017-04-13 13.33.17

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

スクリーンショット 2017-04-13 13.41.16

20代はいろいろなものを買っていますが、30代になると単一商品に偏る傾向があるようです(※ このサンプルのために作成したデータなので実際の傾向と一致するわけではありません)

また、以下ではage_rangeをgenderにすることで性別でも同様の分析を行っています。

スクリーンショット 2017-04-13 13.14.34 5

スクリーンショット 2017-04-13 13.45.50

終わりに

今回はサンプル用に作成したデータを利用してAlteryxで分析を行う簡単な例を紹介しました。 少々長くなってしまったため、2つのみの紹介となりますが、他にも様々な切り口で分析することが可能です。

また、今回の例はありませんでしが、実際のデータにはこの他に売り上げ情報なども含まれることが多いかと思います。 そういったデータも含めればより多くの切り口での分析が可能になるかと思います。