---
title: "アナリティクスデータクラス"
slug: "analytics-data-classes"
abstract: "分析データクラスの概要と利用可能な手法。"
---
# アナリティクスデータクラス

カスタムAnalytics Dataクラスは、データがインタラクションにシリアライズされる際に2つのメソッドを公開し、1つのコンテンツリハイドレートメソッドを公開します。

![An example of Initialize and Serialize methods in the BaseAnalyticsData class diagram.](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/100/sitecore-experience-commerce/images/03000007.png)

![An example of the Deserialize method in the BaseAnalyticsData class diagram.](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/100/sitecore-experience-commerce/images/03000008.png)

名称

概要

**初期化**

ページイベントの文脈では、このメソッドを呼び出し、呼び出し中に受け取った引数をサービス層に渡します。シリアライズしたいデータを抽出するためにRequestオブジェクトとResultオブジェクトを解析する方法を知るのは、特定の AnalyticsEntity オブジェクトの責任です。  
  
\> \[!注\]  
\> 一部の実装では、明示的な順序がECSから引き戻されないなど、異なる入力パラメータに対応するためにオーバーロード初期化が作成されています。

**連載**

このメソッドを呼び出して、内容を指定された辞書にシリアライズし、そのインタラクションのページイベントや目標のカスタム値に書き込まれます。

**デシリアライズ**

このメソッドを呼び出してデータクラスの内容を再水和化します。現在、Connect Experience ProfileおよびExperience Analyticsのレポートコンポーネントで使用されています

データをシリアライズする際には、以下のユーティリティ手法が利用可能です:

![An example of the AddEntityToEventDictionary method in the BaseAnalyticsData class diagram.](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/100/sitecore-experience-commerce/images/03000009.png)

-   名称:説明
-   AddEntityToEventDictionary:このテンプレート化されたメソッドは、カスタム値辞書にConnectエンティティを追加する際に使用されます。注意:Connectエンティティを直接追加する代わりに、このメソッドを使用することが重要です。このメソッドはいくつかのことをします。まず、ECSによって追加された拡張機能を除去したベースエンティティの値のみを保存します。これは分散環境では、ECS固有のデータ型が利用できない可能性があり、デシリアル化フェーズ中にレポーティングや処理サーバーに問題を引き起こす可能性があるためです。これら両方のサーバーが自分のドメインと制御内にある場合、元の「カスタム」ECSエンティティを持つことが望ましい場合があります。この場合、Sitecoreで以下の設定が利用可能です。Commerce.configファイル:有効な値は以下の通りです:BaseCustomBothBase - ベースエンティティのみを保存します。Custom - 元のエンティティを保存します。Both - ベースエンティティと元のバージョンを保存します。デフォルトではBaseが設定されています。詳細については、Experience Profile Commerce タブのトピックをご覧ください。

<setting name="Commerce.Analytics.EntitiesIncludedInXDB" value="Base"/>

データをリハイドレートする際は、以下のユーティリティ手法を使用します。

![A BaseAnalyticsData class diagram showing utility methods.](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/100/sitecore-experience-commerce/images/0300000A.png)

上記のメソッドは、必要な型のシリアライズ済みリストから値を取得できます。 GetMandatory\* メソッドは、必須パラメータが見つからない場合に備え、適切なnullチェックやエラーログの追加など、追加のエラー処理コードを追加します。

Get Optional\*メソッドはGetMandatory\*メソッドと同じですが、キーが存在しない場合はエラーログが発生します。

以下は、新しいビジターオーダーが作成された際に登録される注文目標のConnect実装を示しています:

public class OrderGoalAnalyticsData : BaseAnalyticsData
{
public string ExternalId { get; set; }
public string ShopName { get; set; }
public Total Total { get; set; }
public Order Order { get; set; }
public bool? IsOfflineOrder { get; set; }
public override void Initialize(Pipelines.ServicePipelineArgs args)
 {
 base.Initialize(args);
 this.Order = this.GetOrderFromArgs();

 this.ExternalId = this.Order.ExternalId;
 this.ShopName = this.Order.ShopName;
 this.Total = this.Order.Total.ToBaseType<Total>();
 this.IsOfflineOrder = this.Order.IsOfflineOrder;
 }
public virtual void Initialize(Order order)
 {
 this.ServicePipelineArgs = null;
 this.Order = order;
 this.ExternalId = this.Order.ExternalId;
 this.ShopName = this.Order.ShopName;
 this.Total = this.Order.Total.ToBaseType<Total>();
 this.IsOfflineOrder = this.Order.IsOfflineOrder;
 }
public override void Serialize(IDictionary<string, object> customValues)
 {
 customValues.Add(Constants.KnownPageEventDataNames.ExternalId, this.ExternalId);
 customValues.Add(Constants.KnownPageEventDataNames.ShopName, this.ShopName);
 customValues.Add(Constants.KnownPageEventDataNames.Total, this.Total);
 customValues.Add(Constants.KnownPageEventDataNames.IsOfflineOrder, this.IsOfflineOrder);
 this.AddEntityToEventDictionary<Order>(this.Order, customValues, Constants.KnownPageEventDataNames.Order);
 }
public override void Deserialize(IDictionary<string, object> customValues)
 {
 this.ExternalId = this.GetMandatoryCustomValueAsObject<string>(Constants.KnownPageEventDataNames.ExternalId, customValues);
 this.ShopName = this.GetMandatoryCustomValueAsObject<string>(Constants.KnownPageEventDataNames.ShopName, customValues);
 this.Total = this.GetMandatoryCustomValueAsObject<Total>(Constants.KnownPageEventDataNames.Total, customValues);
 this.Order = this.GetOptionalCustomValueAsObject<Order>(Constants.KnownPageEventDataNames.Order, customValues);
 var isOfflineOrder = this.GetOptionalCustomValueAsObject<bool?>(Constants.KnownPageEventDataNames.IsOfflineOrder, customValues);
 this.IsOfflineOrder = isOfflineOrder ?? false;
 base.Deserialize(customValues);
 }
protected virtual Order GetOrderFromArgs()
 {
 Assert.IsTrue(this.ServicePipelineArgs.Result is SubmitVisitorOrderResult, "args.Result is SubmitVisitorOrderResult");
 return ((SubmitVisitorOrderResult)this.ServicePipelineArgs.Result).Order;
 }
}

いくつか言及すべきことがあります:

-   2つの Initialize メソッドがあります。1つ目はトリガーページイベント機構によって呼び出される際にその ServicePipelineArgs を受け取ります。2つ目はオフライン命令の登録プロセス中に使われるOrderを受け取ります。
-   Totalプロパティを設定する際には、ToBaseType<Total>()が使用されます。これは、カスタム拡張がページイベントに保存されるようにしたくないため重要です。これらのデータ型はレポーティングや処理サーバー(マルチサーバー展開)で利用できない可能性があるためです。
-   SerializeメソッドはAddEntityToEventDictionary()テンプレートメソッドを利用してページイベントに順序を追加します。

以下のコードスニペットは、分析データの利用方法を示しています:

var customData = AnalyticsDataInitializerFactory.Create<SearchAnalyticsData>();
customData.Deserialize(pageEventData.CustomValues);

上記は、Sitecoreインタラクションからのページイベントデータがあると仮定しています。 Deserializeメソッドを呼び出すと、SearchAnalyticsDataオブジェクトプロパティに情報が入力されます。