これなら使える!ビッグデータ分析基盤のエコシステム

第6回 Webアナリティクスにおける基本KPI分析

この記事を読むのに必要な時間:およそ 3.5 分

第4回第5回でJupyterとPandasによって,分析エンジンにクエリを簡単に発行でき,またその結果をGithubやJupyterhub上で共有できることを紹介しました。このアドホック分析環境を使ってさまざまなクエリを書いて,分析エンジン上のデータを使って基本KPIを作成していきます。

アドホック分析環境を使って試行錯誤できるようにしておくことが,毎日の定点観測するためのダッシュボードツールなどの可視化につなげるために重要となります。

ログデータによる基本KPI分析

基本KPIについてもう一度見てみましょう。Webアナリティクスでユーザの動向を考えたときに最低限見ておくべき基本KPIの一例となります。こうした基本KPIを毎日収集し,定型レポートして観測できるようにすることで,長期間での変化がわかるようになり,何らかのイベントによる変化などを通して新たな知見を得ることができるようになります。

またこれらのKPIは,Fluentdで集めたアクセスログのデータだけで可視化することが可能です。

  • ページビュー(PV: Page View)
  • ユニークユーザ数(UU: Unique User)
  • 平均アクセス回数
  • 新規ユーザ数
  • 直近と最終訪問日までの期間
  • 最終訪問日の分布
  • 直帰率
  • 高頻度訪問ユーザの一覧(週n日以上)
  • 連続訪問ユーザ一覧(直近n日連続)

アクセスログの確認

第2回で,fluentdから収集したアクセスログの内容を再度確認してみましょう。

log_id12
domain52.69.91.20152.69.91.201
host153.232.253.97153.232.253.97
server172.31.6.70172.31.6.70
ident--
user--
time2015-07-26 08:58:202015-07-26 08:58:21
methodGETGET
path/index.html/index.html
protocolHTTP/1.1HTTP/1.1
status200200
size32563256
referer--
agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/600.7.12 (KHTML, like Gecko) Version/8.0.7 Safari/600.7.12 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/600.7.12 (KHTML, like Gecko) Version/8.0.7 Safari/600.7.12
response_time795670
cookie-Apache=2a4375d6.51bc3704b915f
set_cookieApache=2a4375d6.51bc3704b915f; path=/; expires=Tue, 25-Jul-17 08:58:20 GMT -

ここでの特徴としては,Apacheのデフォルトのログフォーマットだけではなく,cookieとset_cookieという情報をとっていることにあります。初回ログイン時はset_cookieにcookie情報が付与されるため,下記のようにcookieのみを抽出してcookieカラムに上書きしたり,cookieだけで集計が行えるように別テーブルを作った方が便利です。

# 'set_cookie:Apache=296d21.51dc2fc692fb4; path=/; expires=Sat, 19-Aug-17 19:16:19 GMT' as set_cookie
# -> Apache=296d21.51dc2fc692fb4
SELECT substr(set_cookie,LOCATE( ':', set_cookie )+1, (LOCATE( ';', set_cookie) - LOCATE( ':', set_cookie )) - 1),
FROM accesslog

基本KPI分析のためのクエリ

Jupyter上での可視化の流れとしては下記の手順で実行しています。

  1. クエリを発行する。
    %%sql
    Query
  2. 結果を変数に入れる。
    result = _
  3. 結果を可視化する。
    result.DataFrame().plot(x='day',figsize=(12, 10))

ページビュー(PV: Page View)

ページビューは,1日のアクセス回数を表す最も基本的な指標です。

SELECT
  DATE_FORMAT(time, '%Y-%m-%d') as day,
  COUNT(1) as pv
FROM accesslog
GROUP BY 1

図1 Page View

図1 Page View

ユニークユーザ数(UU: Unique User)

ユニークユーザ数は,同日(または同月,同年)の1人のユーザの複数回のアクセスを1回と見なした指標です。

SELECT
  DATE_FORMAT(time, '%Y-%m-%d') as day,
  COUNT(DISTINCT cookie) as uu
FROM accesslog
GROUP BY 1

図2 Unique User

図2 Unique User

平均アクセス回数

PV / UU で計算される,ユーザ当たりの1日の平均アクセス回数です。

SELECT
  DATE_FORMAT(time, '%Y-%m-%d') AS d,
  COUNT(1) DIV COUNT(DISTINCT(cookie)) AS play_times
FROM accesslog
GROUP BY
  DATE_FORMAT(time, '%Y-%m-%d')

図3 avg_access

図3 avg_access

新規ユーザ数

新規ユーザ数は,サイトに初めてログインしたユーザを日別にカウントした指標です。

SELECT
  DATE_FORMAT(first_access_time, '%Y-%m-%d') AS day,
  COUNT(1) AS new_user
FROM
(
  SELECT set_cookie, MIN(time) AS first_access_time
  FROM accesslog
  WHERE set_cookie IS NOT NULL
  GROUP BY set_cookie
) t1
GROUP BY
  1

図4 new_user

図4 new_user

著者プロフィール

高橋達(たかはしとおる)

Treasure Data Inc.でテクニカルサポートエンジニアとして,毎日,日米問わず顧客のサポートを担当。サポートエンジニアのエンジニアとしての地位向上を目指して色々模索中。そのために,秋葉原幻橙館で今日も元気にOSS活動を行っている。

URL:http://toru-takahashi.gitbooks.io/secret-ninja/content/

コメント

コメントの記入