[Alteryx]Webアクセス解析のようなことをする
こんにちは、小澤です。
今回はAlteryxでこんこと実現するにはどうすればいいんだっけ?というような状況にお答えする簡単なサンプルを作成してみたいと思います。 利用するデータは簡易的に作成したサンプルですが、実際に似たような状況に遭遇することもあるかと思います。
やること
いくつかの切り口で簡単な分析をする例を紹介します。 イメージしやすさを優先して複雑な分析は行わなず、簡単な例を紹介します。
手元にあるデータは以下のようなものとなります。
- ユーザ情報のデータベース
- webサイトの各ページに関する情報
- 商品一覧のデータベース
- webサイトへのアクセスログ
データの確認
まずは、それぞれにどんな情報が含まれているのかを確認します。
ユーザ情報のデータベース
ユーザに関する情報は以下のようになっています。
今回は簡略化された情報として、ユーザID, 年齢, 性別のみを保持しています。
webサイトの各ページに関する情報
Webページ一覧は以下のようになります。
各ページのURL, タイトル, 本文の情報が記載されています。
また、データには日本語が含まれるため入力時の文字コードをUTF-8にしています。
商品一覧のデータベース
商品一覧のデータベースには以下のようになっています。
Webサイトのアクセスログ
Webサイトのアクセスログは以下のようになっています。
Webサイトのアクセスログは他の情報と異なり、ヘッダ行がないためSelect Toolで追加しています。
簡単な分析をしてみる
このデータを元に簡単な分析をしてみます。
商品ごとのアクセス数
まずは、商品ごとのWebページのアクセス数を確認してみます。
まずは、Webページの中から以下の情報を取得します。
- 商品に関する情報のページのみに絞り込み
- それぞれのページと商品名を結びつける
今回はこれらを実現するのにJoin Toolを利用しています。 商品に関するページのtitleが商品名になっているのを利用し、商品一覧との結合を行っています。
結合の結果、以下のようなデータが得られます。
次にログデータにある各ページへのアクセスログと結合します。 これは前段のデータに含まれる各ページのURLとログの中に含まれるアクセスページのURLで結合できます。
結果は以下のようになります。
最後に、Summarize Toolでページごとのカウントを取得し、アクセス数の降順でソートしています。
結合するためのキーがすぐに見つからない場合は?
今回の例ですと、webページのtitleが商品名になっているため、そのまま利用できました。 しかし、場合によってはうまいデータ情報がない場合があります。
そういった場合には名寄せなどの作業が必要になることがあります。 例として、以下のようなパターンが考えられる
- 正規表現などの文字列操作で必要な部分を取り出す必要上がる
- 表記ゆれの解消や日本語と英語の変換が必要
- ユーザIDの異なる複数のシステム間で同一ユーザの情報を取得する
状況にもよりますが、下に行くほど難易度が高くなります。 特に下2つに関しては、やり方自体はわかっていて、Alteryxでどのようなツールを利用して実現するかよりも、そもそもどういう手法で実現するかから検討が必要になるでしょう。
正規表現で必要な部分を抜き出すことが可能な場合は、AlteryxではReguler Expression Toolが利用できます。 例えばtitleをメーカ名と商品名を「|」でつないでいるような場合は以下のようになります
年代ごとの傾向
次に年代ごとに傾向があるかを見ていましょう。
ログから商品に関するページのみを取得する部分は先ほどの例と同様です。 次に、以下の部分でユーザ情報に対する前処理を行います。
まず、Select Toolを利用して、年齢の項目を文字列から数値に変換します。
次にFomula Toolを利用して、年齢から年代を計算します。 この計算は何をしているかというと、年齢を10で割ったものの小数点を切り捨てて10をかけることで年齢の一桁目を0にしています。
また、今回の例では利用しませんが、データ分析ではよく必要になるため性別を男性が0、女性が1という形式で数値に変換しています。
結果は以下のようになります。
次にユーザデータを他のデータと結合します。
最後にこれを年代ごとに集計します。
Summarize Toolで集約したのち、Cross Tabツールで行列を修正しています。
結果は以下のようになります。
20代はいろいろなものを買っていますが、30代になると単一商品に偏る傾向があるようです(※ このサンプルのために作成したデータなので実際の傾向と一致するわけではありません)
また、以下ではage_rangeをgenderにすることで性別でも同様の分析を行っています。
終わりに
今回はサンプル用に作成したデータを利用してAlteryxで分析を行う簡単な例を紹介しました。 少々長くなってしまったため、2つのみの紹介となりますが、他にも様々な切り口で分析することが可能です。
また、今回の例はありませんでしが、実際のデータにはこの他に売り上げ情報なども含まれることが多いかと思います。 そういったデータも含めればより多くの切り口での分析が可能になるかと思います。