Guides
Submit Documentation FeedbackJoin Developer CommunityLog In

Migrating to Enriched Events

❗️

Deprecation Notice

Enriched Events Export replaces Results Export and Raw Events Export as Optimizely's source-of-truth events dataset. Results Export and Raw Events Export will no longer be supported beginning November 15, 2020. Please refer to the Enriched Events Export documentation for how to get started.

Migration Steps

  1. Update how you access your AWS S3 buckets, by using our new Authentication API.
  2. Update existing scripts, or create a new task to pull data from the Enriched Events Export S3 buckets, using the new data schemas.
  3. Update any data transformations or queries you are performing on top of your export datasets in your data warehouse.
  4. (optional) Update the historical Results export data in your systems to match the new Enriched Events schemas.

Results Export ⟶ Enriched Events Export

Between these datasets, we’ve added a few more fields to Enriched Events, like tags and event_name and user_agent, to help you better analyze event-level attributes of your experiment data.

Enriched Events Export will contain more events than the Results Export (REX). Because REX contains session-aggregated data, if you send us 3 conversion events called feature_click in the same session, REX will produce one row for the conversion, with the count field set to 3. Enriched Events Export will produce three rows, one for each conversion.

Results Event to Enriched Event Decision:
We’ve renamed a few fields here for clarity, and added some that weren’t available in the Results Export decisions, like is_holdback and user_agent. Though receivedTimestamp and process_timestamp both represent process time, they won’t be exactly correlated, since each export processes a given event at slightly different times.

Results Event to Enriched Event Conversion:
We’ve renamed eventId to entity_id, added a tags field and an event_name field, in case you prefer querying the human-readable name, and removed the count field, which was useful only for aggregated conversion events. Experiment ID, variation ID, campaign ID, and holdback have been collapsed into the experiments column.

Data Comparisons
Here are a few examples of correlated queries you can run against Enriched Events Export and Raw Export, to verify that the data between them remains consistent. Tolerance thresholds range from 1-5%.

Unique Visitor Counts

--E3

SELECT COUNT(distinct visitor_id) AS unique_visitors
FROM e3_decisions
WHERE experiment_id = '10728121502'
  AND timestamp BETWEEN '2020-06-01 01:00:00.000' 
    AND '2020-06-01 23:00:00.000'
  AND is_holdback = false
--REX
SELECT COUNT(distinct visitorId) AS unique_visitors
FROM results_export
WHERE experimentId = '10728121502'
  AND timestamp BETWEEN 1590973200000 AND 1591052400000
  AND eventId = experimentId

Conversion Counts

--E3

SELECT COUNT(*) AS event_count 
FROM e3_conversions 
LATERAL VIEW explode(experiments) t AS exp
WHERE exp.experiment_id = '10554104820' 
  AND timestamp BETWEEN '2020-06-01 01:00:00.000' 
    AND '2020-06-01 23:00:00.000' 
  AND entity_id = '10597072554'
  AND event_name = ‘feature-click’
--REX

SELECT SUM(count) AS event_count
FROM results_export
WHERE experimentId = ‘10554104820’
  AND timestamp BETWEEN 1590973200000 AND 1591052400000 
  AND eventid = ‘10597072554’