Pathアナライザーのマップを再構築する方法


概要

Pathアナライザーのマップの可視化に使用されるデータの単位は、「ツリーTrees)」と呼ばれます。ツリーは、Processingサーバーのメモリ上に構築され、RDB(Treesテーブル) にBlobとして永続化されるデータ構造です。各々のツリーは、ある期間(例えば日、月、四半期など)と、特定のツリー定義Tree Definition)に対応しています。ツリー定義は、対応するTree Definitionsテーブル内の一つのレコードです。
ツリー定義は、masterデータベースのマーケティング コントロール パネル下のマップ アイテム(*)をアイテムIDにより参照します。

*マップ アイテムとは、ツリー定義をマーケティング上使いやすい方法で説明したものです。詳細については、Pathアナライザー用語集を参照してください。

以下に、Sitecore XP 8.0に付属するデフォルトのマップを示します。合計で7つのマップ(5つの訪問マップと2つのゴール マップ)が存在します。

「TreeDefinitions」テーブルには、各マップ アイテムに対応するレコードが存在します。

Pathアナライザーは、これらのレコードを使用してツリーを構築し、「Trees」テーブルに格納します。

このメカニズムは、ツリー構築(Tree Construction)と呼ばれています。xDBからのデータをストリーミングし、メモリ内のインタラクションからツリー構造を構築します。この操作は、Processingサーバー上で実施され、必要な操作に応じて、様々なエージェントによって処理が実装されています。この処理がどのように動作するかの詳細につきましては、本記事の下記のエージェントのセクションをご参照ください。

知っておくべき重要な点:

マップの再構築のメカニズム

ツリー構築処理は、自動で実施されるように構築されています。しかし、いくつかのシナリオでは、この処理を完了するために、管理者ユーザーが手動で関与する必要があります。

ここで知っておくべき重要な点としては、Sitecore XP 8.0をインストールした際、デフォルトの「Trees」テーブルは空である点です。これは、ツリーはお客様のxDBインスタンスからのインタラクション データを反映するためです。

以下のシナリオをご確認ください。

シナリオ 1: Sitecore XP 8.0をインストールしたばかりであり、それが空のxDB(*)を参照している場合

* xDBが空とは、インタラクションのコレクションにデータがないことを意味します。

これはシンプルなシナリオです。過去のデータがなにもないため、Pathアナライザーは過去の日付に対してのツリー構築を実施しません。ただし、翌日に全てのセッションがxDBにフラッシュされると、新しいインタラクションに対するマップが構築され、その後マップが分析に使用できるようになります。この動作は、下記のエージェントのセクションに記載されているdailyMapAgentによって実施されます。

シナリオ 2: 最近Sitecore XP 8.0をインストールし、それがいくつかの過去のインタラクション データ(*)を有する既存のxDBを参照している場合

* xDBデータはDMSの以前のバージョンから移行されたものでも、他のxDBから転送されたものでも、スクリプトによって自動生成されたものでも、いずれでも問題ありません。

この場合、システムを最初に使用した時点では、過去データを含むxDBへの接続文字列が設定されていると推測されます。

ツリー構築処理は、システムが最初に開始されてからおよそ5分以内に、Pathアナライザー向けに必要な過去データの再構築処理を開始します。

この処理が完了すると、RDBのPropertiesテーブルの状態が以下のように変化するはずです。

キー

PathAnalyzer_newmaps

<空>

PathAnalyzer_busy

False

PathAnalyzer_lastrunnewmaps

<UTCのタイムスタンプ>

この結果、Treesテーブルに新しいレコードが追加されるはずです。この時点で、PathアナライザーはUIにマップを表示することができるようになり、使用可能なデータセットに対してマップ解析が開始できるようになります。

シナリオ 3: 空のxDB(*)を参照するSitecore XP 8.0をインストールしたが、その後いくらかの過去のデータを有する他のxDBデータに接続文字列を切り替えた場合

* xDBが空とは、インタラクションのコレクションにデータがないことを意味します。

まず初めに、RDBのPropertiesテーブルの状態を確認します。次のキーの値が以下のようになっている場合には、全てのマップのデータの再構築が必要です。手順については以下のシナリオ4の指示に従ってください。

キー

PathAnalyzer_newmaps

<空>

PathAnalyzer_busy

False

PathAnalyzer_lastrunnewmaps

<UTCのタイムスタンプ>

 

シナリオ 4: Sitecore XP 8.0のインストール後に、何らかの理由により全てのPathアナライザーのマップを再構築しなければならない場合

前提条件:

次に行うべき対応は、状況に応じて変わります。

  1. /Sitecore/admin/pathanalyzer.aspxを開きます(管理者としてログインする必要あり)。
  2. 「Rebuild All Deployed Maps」ボタンをクリックします。
    この処理により、全てのxDBインタラクション データの再ストリーミング処理と、過去のデータ セット全体のマップの再構築が開始されます。
    過去データの再構築の処理が始まらない場合は、本記事のトラブルシューティングのセクションを参照してください。
  1. 以下のSQLスクリプトを、プライマリのReportingデータベースで実行します。
    IF EXISTS(SELECT 1 FROM [Properties] WHERE [Key] = 'PathAnalyzer_newmaps')
    BEGIN
        DELETE FROM [Properties] WHERE [Key] = 'PathAnalyzer_newmaps'
    end
    GO
    DELETE FROM [Properties] WHERE [Key] = 'PathAnalyzer_lastrunnewmaps'
    INSERT [Properties]([PropertyId], [Key], [Value])
    VALUES (NEWID(), 'PathAnalyzer_newmaps', '68e713d8-a382-4378-8fb0-9d7f7ad14b25|8690c11c-621b-4515-ad63-267cd82a4ff3|e049ad86-d98b-4639-a450-77d1b294a270|6423e93e-197c-4c72-b864-a9cb59c99ffb|11efce5e-966b-4f02-b85c-ccd2ad8e16eb|a6261383-efca-4fc7-94c8-6818980f9bc0|d57b53be-cd98-4ec4-9767-c99f8a72ec0a')
    重要: Sitecore XPに最初から付属している7つのマップに加えて、新しいマップを追加している場合、マーケティング コントロール パネル/Pathアナライザー/マップ...のマップ定義アイテムから対応するアイテムIDを追加し、挿入したプロパティの値を変更する必要があります。

  2. バック グラウンド エージェントがジョブを取得するまで、約5分間待ちます。
    この値が挿入された時、この過去のツリー構築処理を担当するエージェントが値を取得し(処理するまでに最大5分間かかることがあります)、これらのIDに合致するマップに対する過去データの再構築を開始します。過去データの再構築の処理が開始しない場合は、本記事のトラブルシューティングのセクションを参照してください。

エージェント

このセクションでは、ツリー構築処理の詳細について説明します。ツリー構築処理には、3つの主要なシナリオがあります(以下では4つのシナリオを紹介します)。

  1. 現在デプロイされている全てのマップを、定期的(日次)に繰り返しアップデートする。
  2. マーケティング コントロール パネルで、新しいマップをデプロイし、xDBからのデータをそのマップに伝播(Propagate)させる必要がある。
  3. 全てのマップを、過去のデータから再構築する必要がある。
  4. マップを事前に調製する(Proactive map pre-cook)。

シナリオ 1: 全てのマップを毎日更新する

専門のdailyMapAgentが用意されています(Sitecore.PathAnalyzer.Processing.configファイルに設定されています)。
これは、一定間隔(10分おき)に起動されるように設定されていますが、24時間に1回のみ、かつローカルのサーバーのタイム ゾーンで、深夜1時以降にのみ実際に実行されるようになっています。
最終実行日時のタイムスタンプは、Propertiesテーブル内に保持されています(キー=「PathAnalyzer_lastrundaily」)。

このエージェントは、現在RDBにデプロイされている全てのマップを読み込み、それぞれに対して、前日の xDBからのデータを再ストリーミングする処理をスケジュールします。

シナリオ 2: 新しいマップをデプロイする

新しいマップがマーケティング コントロール パネルで作成され、RDBにデプロイされると、専門のnewMapAgent(Sitecore.PathAnalyzer.Processing.configファイルに設定されています)が過去のデータを新しいマップに伝播させます。

これは、一定間隔(5分おき)で起動されるように設定されており、dailyMapAgentと同じように、24時間に1回のみ、かつローカルのサーバーのタイム ゾーンで、深夜1時以降にのみ実際に実行されるようになっています。また、最終実行日時のタイムスタンプは、Propertiesテーブル内に保持されています(キー=「PathAnalyzer_lastrunnewmaps」)。

dailyMapAgentとの違いは、最後に実行されてから、新しいマップがRDBにデプロイされた場合にのみ実行されるという点です。
新しくデプロイされたマップの一覧は、Propertiesテーブルにキー「PathAnalyzer_newmaps」のレコードとして保管されます。このレコードは新しくデプロイされたマップのGUIDを、パイプ記号(「|」)で区切って格納します。もし値がそこに存在する場合、newMapAgentはそれらを解析し、以下のアクションを実施します。

この処理の終わりに、インメモリのツリー データ構造がRDBのTreesテーブルのレコード内にblobとして保持されます。

シナリオ 3: 過去のマップの再構築

この処理も、同じnewMapAgentにより進められますが、違う点としては、この処理は新しいマップではなく、RDBに現在デプロイされている全てのマップに対して行われることが挙げられます。

詳細につきましては、上記の「マップ再構築のメカニズム」のセクションを参照してください。

シナリオ 4: 事前マップ調製(Proactive map pre-cook

ツリーは日次ベースで構築されるため、複数の日付や月に及ぶアドホックな日付範囲へのリクエストのパフォーマンスを最適化するために、ツリーを事前定義された間隔(週毎、月毎、四半期毎、年毎)に事前調製(pre-cook)する処理を起動する、専門のエージェントが用意されています。この処理では、複数のツリーを一つにインメモリでマージし、それをTreesテーブルに保持します。

この処理を担当するエージェントは、smartMergeAgentと呼ばれます。
他のエージェントと同じように、一定間隔(15分おき)に起動されるように設定されており、24時間に1回のみ、かつローカルのサーバーのタイム ゾーンで、深夜1時以降にのみ実際に実行されるようになっています。また、最終実行日時のタイムスタンプは、Propertiesテーブル内に保持されています(キー=「PathAnalyzer_lastrunmerge」)。

FAQ

マップの再構築が成功したことを確認するには、どうすればよいですか?

残念ながら、現時点(記事執筆時点)では、システムからユーザーに分かりやすい形としてはフィードバックされません。「Trees」テーブルのレコードの数をモニタリングし、現在の進捗をログから確認することができます。ロギングでDEBUGモードを有効化する方法について、「トラブルシューティング」セクションをご確認ください。「Trees」テーブルにレコードが何も追加されておらず、かつログ ファイルからツリー構築処理に関連するPathアナライザーの活動が何も見られない場合、処理が完了したことを意味します。

全てのマップを再構築するまでに、どのくらいかかりますか?

処理時間はサーバーの処理能力、xDB設定に依存し、数分から数時間かかることがあります。主に、ProcessingサーバーのxDBインタラクション データを呼び出し、デシリアライズすることに時間が費やされます。

一例として、単一のサーバーで実行した際に、700万のインタラクションを処理するのに約2時間かかることが予想されます。

トラブルシューティング

もしツリーがシステムに構築されない事象が発生した場合は、以下のチェックリストを使用して事象を検証してください。

  1. 処理の推移をより分かりやすくするために、web.configのロギングの優先度を、デフォルトのINFOからDEBUGに変更してください。

     <root>
       <priority value="DEBUG" />
       <appender-ref ref="LogFileAppender" />
     </root>

    これにより、ログ ファイルに多数の追加エントリが出力されるようになります。関連ログが発見しやすいよう、全てのPathアナライザーのエントリには、接頭辞「[Path Analyzer]」が付与されています。

    このロギング モードは、本番環境で動作させることは意図されていないため、トラブル防止の為、 事象が解決したらこの設定は忘れずに無効化してください。

  2. ツリー構築の処理の開始を担当する全てのエージェントは、一定間隔ごと(エージェントによって、5分、10分、または15分のいずれか)に起動され、24時間に1回のみ実際の処理が実行されるように設定されています。

    これは、Sitecore.PathAnalyzer.Processing.configファイルでデフォルトの間隔を微調整するか、また処理が始まるまでの数分間待つ必要があるかもしれないということを意味します。

    エージェントが過去24時間以内にすでに実行されている場合は、もう一度実行できるようにするため、特定のエージェントに対応するレコード(例:「PathAnalyzer_lastrunnewmaps」)をPropertiesテーブルから削除する必要があります。

    Sitecore XP 8.0 Update-2以降で、単一のサーバーのセットアップを使用している場合、/Sitecore/admin/pathanalyzer.aspxページからエージェントを起動できます。

  3. /sitecore/admin/showconfig.aspxページで、エージェントが有効化され、起動間隔が無効化されていないことを確認します。

    全てのエージェントはデフォルトでSitecore.PathAnalyzer.Processing.configファイルに定義されています。

  4. 複数のProcessingサーバーが有効化されているセットアップでは、エージェントはそれらのサーバーのいずれでも実行できます。

  5. Propertiesテーブルの「PathAnalyzer_lastrunnewmaps」タイム スタンプが更新されたということは、そのエージェントが実際に実行されたことを示しています。エージェントは、起動されたとしても実際の処理を行わない場合があります。エージェントが、マップを構築するためのデータがxDBインタラクション コレクションにないと判断した場合、処理がスキップされます。

  6. Propertiesテーブルで、キー「PathAnalyzer_busy」または「sc_isrebuilding」のレコードの値を確認してください。

    これらのいずれかのプロパティの値がTrueである場合、現時点で過去データの処理が行われているか、いずれかのエージェントが実行中であることを示すため、その他の全てのエージェントは停止されます。

    もし、これらのフラグが長時間Falseにリセットされない場合、いずれかのエージェントがスタックしており、「PathAnalyzer_busy」レコードの値を手動でリセットする必要があることを示している場合があります。
    なお、「sc_isrebuilding」レコードに関しては、干渉しないことを強くお薦めいたします。