エクスペリエンス アナリティクスのレポートにおいて、セグメント アイテムに複数の言語バージョンがある場合、実際のデータが表示されない恐れがあります。この事象は、スケールされたトポロジー(XP1)でSitecore XPを実行している場合に発生します。事象が発生した場合、Processingサーバのログに下記のエラー メッセージが出力されます:
ERROR Aggregation Error Exception: System.ArgumentException Message: An item with the same key has already been added. Source: mscorlib at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource) at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer) at System.Linq.Enumerable.ToDictionary[TSource,TKey](IEnumerable`1 source, Func`2 keySelector) at Sitecore.ExperienceAnalytics.Core.Repositories.MarketingSegmentReaderBase`1.GetAll(CultureInfo cultureInfo, NameValueCollection readingPreferences) at Sitecore.ExperienceAnalytics.Aggregation.Pipeline.MarketingSegmentationProcessor.GetSegments() at Sitecore.ExperienceAnalytics.Aggregation.Pipeline.MarketingSegmentationProcessor.Process(InteractionAggregationPipelineArgs args) at (Object , Object ) at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args) at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain, Boolean failIfNotExists) at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain) at Sitecore.ExperienceAnalytics.Aggregation.Pipeline.InteractionProcessor.OnProcess(InteractionAggregationPipelineArgs args) at Sitecore.Analytics.Aggregation.Pipeline.InteractionAggregationPipelineProcessor.Process(InteractionAggregationPipelineArgs args)
この問題は、以下の2つの場合に発生します:
本事象を解決するには、以下の手順に従って実施してください:
select dc.* from [xdb_refdata].[Definitions] as d join [xdb_refdata].[DefinitionCultures] as dc on d.ID = dc.DefinitionVersionID where d.Moniker in ( 'cd0b4c6b-8c41-4eba-bc10-b936b29303e7', -- Computer '0df6797e-ee1b-4bfd-9262-0471b1add438', -- Mobile Phone 'ecd9a3d4-f549-487a-93aa-1ea3cf0477e5' -- Tablet ) and dc.Culture != 'en';
DELETE FROM [xdb_refdata].[DefinitionCultures] where ID in ( select dc.ID from [xdb_refdata].[Definitions] as d join [xdb_refdata].[DefinitionCultures] as dc on d.ID = dc.DefinitionVersionID where d.Moniker in ( 'cd0b4c6b-8c41-4eba-bc10-b936b29303e7', -- Computer '0df6797e-ee1b-4bfd-9262-0471b1add438', -- Mobile Phone 'ecd9a3d4-f549-487a-93aa-1ea3cf0477e5' -- Tablet ) and dc.Culture != 'en')