When "Download" event occurs during a visit for a media item that has an empty value in the "Marketing Asset" field, the corresponding interaction will cause exception in aggregation process and will be excluded from the results displayed by Experience Analytics or any other reporting application.
The following error would also occur in log files:
9100 12:12:33 ERROR Aggregation Error Exception: System.Exception Message: definition not found Source: Sitecore.ExperienceAnalytics at Sitecore.ExperienceAnalytics.Aggregation.Pipeline.SegmentProcessor.ProcessSegments(AggregationPipelineArgs args, IEnumerable`1 segments) at Sitecore.ExperienceAnalytics.Aggregation.Pipeline.SegmentProcessor.OnProcess(AggregationPipelineArgs args) at Sitecore.Analytics.Aggregation.Pipeline.AggregationProcessor.Process(AggregationPipelineArgs args) Nested Exception
Exception: System.InvalidOperationException Message: definition not found Source: Sitecore.ExperienceAnalytics at Sitecore.ExperienceAnalytics.Core.Repositories.FacetDataService.GetFacetFieldValues[TDefinition](ID itemId) at Sitecore.ExperienceAnalytics.Core.Repositories.FacetDataService.HasDimensionKey[TDefinition](PageEventData pageEvent) at System.Linq.Enumerable.WhereListIterator`1.MoveNext() at Sitecore.ExperienceAnalytics.Aggregation.Dimensions.PageEventDimensionBase.GetDimensionKeys(IVisitAggregationContext context) at Sitecore.ExperienceAnalytics.Aggregation.Dimensions.PageEventDimensionBase.<GetData>d__8.MoveNext() at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext() at Sitecore.ExperienceAnalytics.Aggregation.Pipeline.SegmentProcessor.ProcessSegments(AggregationPipelineArgs args, IEnumerable`1 segments)
To avoid the issue, populate the "Marketing Asset" field on all media items before connecting Sitecore XP 8.1 installation to xDB.
To populate "Marketing Asset" field automatically, use the following workaround: