SITECORE MANIA 開発者向け技術ブログ

その他

崔

Reportingデータベースからページ閲覧数を取得する方法

はじめに

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のバージョンによって実装されている機能が異なります。
この記事を読んだ人はこちらの記事も読んでます

Sitecore導入に関するご相談・資料ダウンロード

導入をご検討・ご依頼の方や、サービスについてご不明点がございましたらお気軽にお問い合わせください。

Sitecoreの運用問題を解決する

既にSitecoreを導入しているお客様向けサービス