はじめに
Sitecoreでは、ページの閲覧数がReportingデータベースに自動的に集計されます。しかし、CDサーバー上でこれらの分析データを表示する標準機能は提供されていません。そのため、サイト上で閲覧数を表示したい場合には、Reportingデータベースにクエリを発行するカスタム実装が必要になります。
PageViewsテーブル
SitecoreのReportingデータベースには、ユーザーの行動データを蓄積・分析するためのさまざまなテーブルが用意されています。その中でFact_PageViewsテーブルには、ページビュー情報が格納されています。
このテーブルの主な構造は以下の通りです:
カラム名 |
データ型 |
説明 |
Date |
datetime |
集計の開始日時(1時間単位でレコードが作成されます) |
ItemId |
uniqueidentifier |
表示されたページのSitecoreアイテムID |
Views |
bigint |
その期間内のページの合計閲覧数 |
Duration |
bigint |
滞在時間(ミリ秒単位)
ページ表示から次のページ表示までの時間 |
Visits |
bigint |
表示されたページの訪問セッション数(1セッション=1Count) |
「Views」と「Visits」の違いは?
「Views」は単純なページ表示回数でカウントします。リロードや戻る操作でページが再表示されるたびに加算されます。
一方、「Visits」は訪問セッション数でカウントします。同じセッション内での複数回のページ表示は1回として集計され、実際のユニークな訪問回数を反映します。
SQLクエリの作成
今回は、ページの総訪問セッション数「Visit」を取得します。
public class PageViewData
{
// ページのアイテムID
public Guid ItemId { get; set; }
// 閲覧数
public int Visits { get; set; }
}
public class VisitsRepository
{
public PageViewData GetTotalVisits(Guid pageItemId)
{
var query = @"
SELECT SUM(Visits) AS Visits
FROM [dbo].[Fact_PageViews]
WHERE ItemId = @ItemId";
var parameters = new { ItemId = pageItemId };
var result = Connection.QueryFirstOrDefault<pageviewdata>(query, parameters);
return result;
}
}
注意点
・日英別で集計する場合は、追加のテーブル結合が必要になります。
・訪問データはセッション終了後に処理されるため、リアルタイムで表示されません。
・Sitecoreのバージョンや構成によってテーブル構造が異なる場合があります。
※エントリーの内容・画像等は、公開時点での情報に基づきます。
※Sitecoreのバージョンによって実装されている機能が異なります。