Keen IOでメディアのページビュー分析

https://keen.io/guides/media-analytics/

## メディアの閲覧データで分析したい事

- どの閲覧者が最もページビューが多いか
- どのトピックが最もページビューが多いか
- どのランディングページが最も多くクリックされるか
- 最も多く記事が読まれるのはどの曜日か
- スポンサー広告のクリック数が多いのはどの種類の記事か

## サンプルでのトラッキング
今回のサンプルサイト
![image.png](https://qiita-image-store.s3.amazonaws.com/0/196629/0af0d8d7-d13d-1548-beb8-c51aa747648b.png)

すべてのページビューで一連のプロパティを収集する

- トピック
- タイトル
- ブラウザ情報
- 外部参照(どのようにしてアクセスしてきたか)
- 著者

### 外部参照からのランディングページビュー

```json
{
   "page":{
    "url":"/topics/scoops-and-scandals",
    "type":"Landing",
    "topic":{
      "id":10,
      "title":"Scoops and Scandals"
    }
  },
  "user_agent":{
    "browser":{
      "name":"Chrome",
      "version":"28.0.1500.95",
      "major":28
    },
    "engine":{
      "name":"WebKit",
      "version":"537.36"
    },
    "os":{
      "name":"Mac OS X",
      "version":"10.7.4"
    }
  },
  "referrer":{
    "type":"external",  "source":"http://www.referrer.com/some/ad?param1=foo\u0026param2=bar/#someplace",
    "protocol":"http",
    "domain":"www.referrer.com"
  },
  "session":{
    "session_id":"session-cookie",
    "unique_id":"unique-cookie"
  },
  "at":{
    "timestamp":"2015-06-24T07:44:27.737-07:00",
    "day_of_week":"Wednesday",
    "hour_of_day":7
  }
}
```

### 内部参照元からの記事ページビュー

```json
{
  "page":{
    "url":"/articles/learning-to-fly",
    "type":"Article",
    "author":"Danaerys Targaryen",
    "keywords":["espionage","investment"]
  },
  "user_agent":{
    "browser":{
      "name":"Chrome",
      "version":"28.0.1500.95",
      "major":28
    },
    "engine":{
      "name":"WebKit",
      "version":"537.36"
    },
    "os":{
      "name":"Mac OS X",
      "version":"10.7.4"
    }
  },
  "referrer":{
    "type":"internal",
    "source":"/topics/current-affairs",
    "keyword":"investment"
  },
  "session":{
    "session_id":"session-cookie",
    "unique_id":"unique-cookie"
  },
  "at":{
    "timestamp":"2015-06-24T07:45:27.900-07:00",
    "day_of_week":"Wednesday",
    "hour_of_day":7
  }
}
```
RDBの行ではなくJSONプロパティの集まりなので必要な分だけいくらでも増減可能

- [keen-tracking.js](https://github.com/keen/keen-tracking.js#pageview-tracking-front-end)
- [クッキー](https://github.com/carhartl/jquery-cookie)
- [ユーザーエージェント](https://github.com/faisalman/ua-parser-js)
- [URL](https://github.com/allmarkedup/purl)
- [ランダムIDジェネレータ](http://www.broofa.com/Tools/Math.uuid.js)

## 分析

### どの著者が最も多くのページビューを生み出しているか
Group Byを利用

```javascript
var client = new Keen({
  projectId: "PROJECT_ID",
  readKey: "READ_KEY"

});
Keen.ready(function(){
  var query = new Keen.Query("count", {
    event_collection: "page_views",
    timeframe: "this_14_days",
    filters: [
      {
        property_name:"page.type",
        operator:"eq",
        property_value:"Article"
      }
    ],
    group_by: "page.author",
    timezone: "UTC"
  });
  client.draw(query, document.getElementById("my_chart"), {
    // Custom configuration here
  });
});
```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/196629/52b20d6c-ba5c-360c-0d30-e941c7647c67.png)

### 最も多いページビューはどのトピックか
トピック別にまとめられたランディングページをフィルタリング

```javascript
Keen.ready(function(){
  var query = new Keen.Query("count", {
    event_collection: "page_views",
    timeframe: "this_14_days",
    filters: [{"operator":"eq","property_name":"page.type","property_value":"Landing"}],
    group_by: "page.topic.title",
    timezone: "UTC"
  });
  client.draw(query, document.getElementById("my_chart"), {
    // Custom configuration here
  });
});
```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/196629/d5831d75-ad12-03ca-f991-dff88a2506c2.png)

### 各トピックが生成する外部トラフィックの量

```javascript
Keen.ready(function(){
  var query = new Keen.Query("count", {
    event_collection: "page_views",
    timeframe: "this_14_days",
    filters: [{"operator":"eq","property_name":"page.type","property_value":"Landing"},{"operator":"eq","property_name":"referrer.type","property_value":"external"}],
    group_by: "page.topic.title",
    timezone: "UTC"
  });
  client.draw(query, document.getElementById("my_chart"), {
    // Custom configuration here
  });
```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/196629/2132a57e-e61d-dfe5-12ff-449f98e206e8.png)

### どの曜日が最もページビューが多いか

```javascript
Keen.ready(function(){
  var query = new Keen.Query("count", {
    event_collection: "page_views",
    timeframe: "this_14_days",
    group_by: "at.day_of_week",
    timezone: "UTC"
  });
  client.draw(query, document.getElementById("my_chart"), {
    // Custom configuration here
  });
```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/196629/81cc9cc8-7054-bbc6-dfbd-8b9234620b4b.png)

### 最も関心を引くのはどのキーワードか
記事にタグ付けしてユーザーがコンテンツに関わる機会を増やす

```javascript
Keen.ready(function(){
  var query = new Keen.Query("count", {
    event_collection: "page_views",
    timeframe: "this_14_days",
    filters: [{"operator":"eq","property_name":"referrer.type","property_value":"internal"}],
    group_by: "referrer.keyword",
    timezone: "UTC"
  });
  client.draw(query, document.getElementById("my_chart"), {
    // Custom configuration here
  });
})
```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/196629/a2a34087-0bd2-ca5f-69f3-bce1ce218e66.png)

### 誰が「adventure」キーワードで一番ページビューが多いか

```javascript
Keen.ready(function(){
  var query = new Keen.Query("count", {
    event_collection: "page_views",
    timeframe: "this_14_days",
    filters: [{"operator":"in","property_name":"referrer.keyword","property_value":["adventure"]},{"operator":"eq","property_name":"page.type","property_value":"Article"}],
    group_by: "page.author",
    timezone: "UTC"
  });
  client.draw(query, document.getElementById("my_chart"), {
    // Custom configuration here
  });
});
```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/196629/7cbebcab-9185-5e63-c02f-4c0e8a117e64.png)