トレジャーデータ(Treasure Data)ブログ

トレジャーデータ(Treasure Data)ブログです。

本サイトは移転しました。新サイトにリダイレクトします。

Login(アクセス)ログからわかる12の指標 その1

本記事は移転しました。新サイトにリダイレクトします。

*トレジャーデータはデータ収集、保存、分析のためのエンドツーエンドでサポートされたクラウドサービスです。

「Login(アクセス)ログからわかる12の指標 シリーズ」

本シリーズの主張は,例え単純な ”ログイン”(アクセス)の記録のみを取るだけでも,それにユーザーIDが付くことでトレジャーデータ上遙かにリッチな示唆を得ることができる,ということです。

もしユーザーを識別できるサービスをお持ちでこれから分析を始めたい企業様は,きちんとそれをloginログを残すことから始めましょう。本記事では「login(アクセス)ログ」というたった1種類のデータから得られる12の指標を紹介したいと思います。

定義

以下の項目で定義されるログを「loginログ」と定義し,かつ各ユーザーの登録時からこのログデータが取得できていることを前提とします。

 {

   'uid': 123456,

   'time': 138959673

 } 

さて,上記のloginログはユーザーIDとログイン時間のみが記録された非常にシンプルなログですが,これがサービス開始時より蓄積されているとすれば以下に紹介する分析は可能です。

0. データインポート

トレジャーデータへのフリーサインアップに関しては以下の記事を参照下さい。

実データで覚える Treasure Client コマンドラインリファンス 〜1.Data Import〜 - Treasure Data JP 公式ブログ

また,login ログの100万レコードのサンプルデータを下記に置いてきます。

login.json.zip

解凍したファイルのトレジャーデータへのインポートは以下のコマンドを実行します。

$ td db:create demo
$ td table:create demo login
$ td table:import demo login --format json --time-key time login.json

1. PV

非常にベーシックな指標としてPV:アクセス数があります。loginログがトレジャークラウドにあるとすれば,PVを集計するためのHiveクエリは以下の様になります:

SELECT
  TD_TIME_FORMAT(time, 'yyyy-MM-dd', 'JST') AS d,
  COUNT(1) AS pv
FROM login
GROUP BY
  TD_TIME_FORMAT(time, 'yyyy-MM-dd', 'JST')
ORDER BY d ASC

f:id:treasure-data:20140507131420p:plain

2. アクティブユーザー数(UU)

アクティブユーザー(UU)数は,純粋なデイリーでのレコードカウントに対して,同ユーザーの同日のアクセスは全て1回とみなすことで集計が可能です。

SELECT
  TD_TIME_FORMAT(time, 'yyyy-MM-dd', 'JST') AS d,
  COUNT(DISTINCT(uid)) AS uu
FROM login
GROUP BY
  TD_TIME_FORMAT(time, 'yyyy-MM-dd', 'JST')
ORDER BY d ASC

f:id:treasure-data:20140507131726p:plain

3. 新規ユーザー数

全期間中で各ユーザーの最初のログイン(登録時)のみを集計することによってデイリーの新規ユーザー数を求めることができます。

SELECT
  TD_TIME_FORMAT(first_login_time, 'yyyy-MM-dd', 'JST') AS d,
  COUNT(1) AS new_user
FROM
(
  SELECT uid, MIN(time) AS first_login_time
  FROM login
  GROUP BY uid
) t1
GROUP BY
  TD_TIME_FORMAT(first_login_time, 'yyyy-MM-dd', 'JST')
ORDER BY d ASC

f:id:treasure-data:20140507132537p:plain

4. 1日当たりの平均アクセス回数

デイリーでユーザー当たりの1日の訪問回数を求めたものです。

SELECT
  TD_TIME_FORMAT(time, 'yyyy-MM-dd', 'JST') AS d,
  COUNT(1) / COUNT(DISTINCT(uid)) AS play_times
FROM login
GROUP BY
  TD_TIME_FORMAT(time, 'yyyy-MM-dd', 'JST')
ORDER BY d ASC

f:id:treasure-data:20140507133224p:plain

5. Recency

本日に対して各ユーザーの最終ログインが何日前なのかを求め,分布をみるものです。

SELECT uid,
  CAST( TD_SCHEDULED_TIME()-MAX(time)) / (60*60*24) AS INT ) AS term_day
FROM login
GROUP BY uid
ORDER BY term_day ASC

f:id:treasure-data:20140507155833p:plain

Metric Insights

トレジャーデータでは上記の指標を一覧するためのダッシュボード:Metric InsightsをOEM提供しています。

f:id:treasure-data:20140501161331p:plain

Treasure Data Platform で始めるデータ分析入門 〜7. Data Visualization 〜 Metric Insights - Treasure Data JP 公式ブログ 

トレジャーデータに関するお問い合わせは support@treasure-data.com まで。