Content Start Count
Also known as: Content Starts, Playback Starts, Title Starts, Stream Starts, Play Starts, Successful Starts
Counts valid instances in which eligible video or audio content begins playback and the player confirms that media time has started advancing. Each distinct playback start is counted once, including user-initiated and autoplay starts, while playback attempts, ad starts, previews, pause resumes, and duplicate telemetry are excluded.
Business Use Case
The Product organization compares content starts by title, placement, platform, and market after a homepage or recommendation change. If impressions increase but starts do not, the team can revise artwork, ranking, metadata, or playback entry points; if playback attempts increase without corresponding starts, the team can prioritize investigation of startup failures by application version and device.
Business Criticality
High
Journey / Navigation Area
Engagement
Owning Function
Product
Scope
Event
Formula
COUNT(DISTINCT CASE WHEN event_name = 'playback_start' AND playback_status = 'playing' AND media_time_advanced = TRUE AND is_eligible_content = TRUE AND is_ad = FALSE AND is_preview = FALSE THEN playback_start_id END)Calculation Notes
1️⃣ Assign starts based on original event occurrence timestamp. 2️⃣ Pauses, resumes, or recoveries do not create new starts. 3️⃣ Replays or restarts count only with a new playback_start_id. 4️⃣ Count content start at editorial content, not pre-roll. 5️⃣ Include autoplay of full eligible items; exclude silent previews. 6️⃣ Identity-resolve client and server events before counting. 7️⃣ Restate offline events into original occurrence period if within late-arrival window.
Technical Details
Events
| Platform | Event |
|---|---|
| Google Analytics 4 | video_start |
| Adobe | media.sessionStart |
Data Mappings
W3 Data Layer
{
"event": [
{
"page": {
"pageInfo": {
"pageURL": "<page_location>",
"pageName": "<page_title>",
"referringURL": "<page_referrer>"
}
},
"user": {
"profile": {
"profileInfo": {
"profileID": "<user_id>",
"anonymousID": "<anonymous_id>"
}
}
},
"media": {
"isAd": false,
"muted": false,
"autoplay": false,
"isResume": false,
"playerId": "<player_id>",
"playhead": 0,
"contentId": "<content_id>",
"isPreview": false,
"contentUrl": "<content_url>",
"fullscreen": false,
"playerName": "<player_name>",
"playerType": "<player_type>",
"streamType": "<live_or_on_demand>",
"contentType": "<video_or_audio>",
"contentOwner": "<content_owner>",
"contentTitle": "<content_title>",
"deliveryType": "<streaming_or_downloaded>",
"contentFormat": "<content_format>",
"contentSeason": "<season_number>",
"contentSeries": "<series_name>",
"playerVersion": "<player_version>",
"contentEpisode": "<episode_number>",
"contentCategory": "<content_category>",
"contentDuration": 0,
"contentLanguage": "<language_code>",
"contentProvider": "<content_provider>",
"playbackAttempt": false,
"advancementDelta": 0.001,
"contentAssetType": "<content_asset_type>",
"mediaTimeCurrent": 0.001,
"mediaTimeAdvanced": true,
"mediaTimePrevious": 0,
"playbackSessionId": "<playback_session_id>",
"playbackStartType": "<user_initiated_or_autoplay>"
},
"privacy": {
"analyticsStorage": "<granted_or_denied>"
},
"eventInfo": {
"eventId": "<unique_event_id>",
"eventName": "video_start",
"eventType": "media",
"startCount": 1,
"validStart": true,
"eventAction": "play",
"eventSequence": 1,
"schemaVersion": "1.0",
"eventTimestamp": "<iso_8601_timestamp>"
},
"environment": {
"platform": "<web_ios_android_or_connected_tv>",
"sessionId": "<analytics_session_id>"
}
}
]
}GA4 Data Layer
{
"event": "video_start",
"is_ad": false,
"muted": false,
"user_id": "<user_id>",
"visible": true,
"autoplay": false,
"event_id": "<unique_event_id>",
"platform": "<web_ios_android_or_connected_tv>",
"playhead": 0.001,
"is_resume": false,
"player_id": "<player_id>",
"video_url": "<content_url>",
"content_id": "<content_id>",
"fullscreen": false,
"is_preview": false,
"page_title": "<page_title>",
"session_id": "<analytics_session_id>",
"content_url": "<content_url>",
"player_name": "<player_name>",
"player_type": "<player_type>",
"start_count": 1,
"stream_type": "<live_or_on_demand>",
"valid_start": true,
"video_title": "<content_title>",
"anonymous_id": "<anonymous_id>",
"content_type": "<video_or_audio>",
"content_owner": "<content_owner>",
"content_title": "<content_title>",
"delivery_type": "<streaming_or_downloaded>",
"page_location": "<page_location>",
"page_referrer": "<page_referrer>",
"video_percent": 0,
"content_format": "<content_format>",
"content_season": "<season_number>",
"content_series": "<series_name>",
"event_sequence": 1,
"player_version": "<player_version>",
"schema_version": "1.0",
"video_duration": 0,
"video_provider": "<content_provider>",
"content_episode": "<episode_number>",
"event_timestamp": "<iso_8601_timestamp>",
"content_category": "<content_category>",
"content_duration": 0,
"content_language": "<language_code>",
"content_provider": "<content_provider>",
"playback_attempt": false,
"advancement_delta": 0.001,
"analytics_storage": "<granted_or_denied>",
"content_asset_type": "<content_asset_type>",
"media_time_current": 0.001,
"video_current_time": 0.001,
"media_time_advanced": true,
"media_time_previous": 0,
"playback_session_id": "<playback_session_id>",
"playback_start_type": "<user_initiated_or_autoplay>"
}Adobe Client Data Layer
{
"page": {
"pageURL": "<page_location>",
"pageName": "<page_title>",
"referringURL": "<page_referrer>"
},
"user": {
"userId": "<user_id>",
"anonymousId": "<anonymous_id>",
"analyticsStorage": "<granted_or_denied>"
},
"event": "media.sessionStart",
"media": {
"isAd": false,
"muted": false,
"owner": "<content_owner>",
"length": 0,
"season": "<season_number>",
"series": "<series_name>",
"episode": "<episode_number>",
"autoplay": false,
"isResume": false,
"language": "<language_code>",
"playerId": "<player_id>",
"playhead": 0.001,
"provider": "<content_provider>",
"assetType": "<content_asset_type>",
"contentId": "<content_id>",
"isPreview": false,
"sessionID": "<playback_session_id>",
"contentUrl": "<content_url>",
"fullscreen": false,
"playerName": "<player_name>",
"playerType": "<player_type>",
"startCount": 1,
"streamType": "<live_or_on_demand>",
"validStart": true,
"contentType": "<video_or_audio>",
"contentTitle": "<content_title>",
"deliveryType": "<streaming_or_downloaded>",
"friendlyName": "<content_title>",
"contentFormat": "<content_format>",
"playerVersion": "<player_version>",
"contentCategory": "<content_category>",
"playbackAttempt": false,
"advancementDelta": 0.001,
"mediaTimeCurrent": 0.001,
"mediaTimeAdvanced": true,
"mediaTimePrevious": 0,
"playbackStartType": "<user_initiated_or_autoplay>"
},
"eventInfo": {
"eventId": "<unique_event_id>",
"eventName": "media.sessionStart",
"eventType": "media",
"eventAction": "play",
"eventSequence": 1,
"schemaVersion": "1.0",
"eventTimestamp": "<iso_8601_timestamp>"
},
"environment": {
"platform": "<web_ios_android_or_connected_tv>",
"analyticsSessionId": "<analytics_session_id>"
}
}XDM Mapping
{
"_id": "<unique_event_id>",
"web": {
"webReferrer": {
"URL": "<page_referrer>"
},
"webPageDetails": {
"URL": "<page_location>",
"name": "<page_title>",
"pageViews": {
"value": 0
},
"isErrorPage": false
}
},
"eventType": "media.sessionStart",
"timestamp": "<iso_8601_timestamp>",
"environment": {
"type": "<web_ios_android_or_connected_tv>"
},
"identityMap": {
"ECID": [
{
"id": "<anonymous_id>",
"primary": true,
"authenticatedState": "ambiguous"
}
]
},
"eventMergeId": "<playback_session_id>",
"mediaCollection": {
"playhead": 0.001,
"sessionID": "<playback_session_id>",
"sessionDetails": {
"feed": "<delivery_type>",
"name": "<content_id>",
"show": "<series_name>",
"genre": "<content_category>",
"length": 0,
"season": "<season_number>",
"channel": "<content_provider>",
"episode": "<episode_number>",
"contentID": "<content_id>",
"originator": "<content_owner>",
"playerName": "<player_name>",
"streamType": "<live_or_on_demand>",
"contentType": "<video_or_audio>",
"friendlyName": "<content_title>"
}
},
"implementationDetails": {
"name": "<player_name>",
"version": "<player_version>",
"environment": "<player_type>"
}
}SQL Queries
Google Analytics 4 (BigQuery)
-- ==========================================
-- 1. GOOGLE BIGQUERY SQL
-- ==========================================
WITH extracted AS (
SELECT
PARSE_DATE('%Y%m%d', event_date) AS event_date,
TIMESTAMP_MICROS(event_timestamp) AS event_timestamp,
event_name,
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'event_id') AS event_id,
COALESCE(
(SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'event_sequence'),
event_bundle_sequence_id
) AS event_sequence,
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'schema_version') AS schema_version,
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_id') AS content_id,
COALESCE(
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_title'),
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'video_title')
) AS content_title,
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_type') AS content_type,
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_format') AS content_format,
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_category') AS content_category,
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_series') AS content_series,
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_season') AS content_season,
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_episode') AS content_episode,
COALESCE(
(SELECT ANY_VALUE(ep.value.double_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_duration'),
(SELECT ANY_VALUE(ep.value.float_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_duration'),
CAST((SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_duration') AS FLOAT64),
SAFE_CAST((SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_duration') AS FLOAT64)
) AS content_duration,
COALESCE(
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_url'),
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'video_url')
) AS content_url,
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_language') AS content_language,
COALESCE(
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_provider'),
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'video_provider')
) AS content_provider,
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_owner') AS content_owner,
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'content_asset_type') AS content_asset_type,
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'player_id') AS player_id,
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'player_name') AS player_name,
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'player_version') AS player_version,
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'player_type') AS player_type,
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'playback_start_type') AS playback_start_type,
COALESCE(
SAFE_CAST((SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'autoplay') AS BOOL),
(SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'autoplay') = 1,
FALSE
) AS autoplay,
COALESCE(
SAFE_CAST((SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'muted') AS BOOL),
(SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'muted') = 1,
FALSE
) AS muted,
COALESCE(
SAFE_CAST((SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'fullscreen') AS BOOL),
(SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'fullscreen') = 1,
FALSE
) AS fullscreen,
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'stream_type') AS stream_type,
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'delivery_type') AS delivery_type,
COALESCE(
(SELECT ANY_VALUE(ep.value.double_value) FROM UNNEST(event_params) ep WHERE ep.key = 'playhead'),
(SELECT ANY_VALUE(ep.value.float_value) FROM UNNEST(event_params) ep WHERE ep.key = 'playhead'),
CAST((SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'playhead') AS FLOAT64),
SAFE_CAST((SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'playhead') AS FLOAT64)
) AS playhead,
COALESCE(
(SELECT ANY_VALUE(ep.value.double_value) FROM UNNEST(event_params) ep WHERE ep.key = 'media_time_previous'),
(SELECT ANY_VALUE(ep.value.float_value) FROM UNNEST(event_params) ep WHERE ep.key = 'media_time_previous'),
CAST((SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'media_time_previous') AS FLOAT64),
SAFE_CAST((SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'media_time_previous') AS FLOAT64)
) AS media_time_previous,
COALESCE(
(SELECT ANY_VALUE(ep.value.double_value) FROM UNNEST(event_params) ep WHERE ep.key = 'media_time_current'),
(SELECT ANY_VALUE(ep.value.float_value) FROM UNNEST(event_params) ep WHERE ep.key = 'media_time_current'),
CAST((SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'media_time_current') AS FLOAT64),
SAFE_CAST((SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'media_time_current') AS FLOAT64)
) AS media_time_current,
COALESCE(
SAFE_CAST((SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'media_time_advanced') AS BOOL),
(SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'media_time_advanced') = 1,
FALSE
) AS media_time_advanced,
COALESCE(
(SELECT ANY_VALUE(ep.value.double_value) FROM UNNEST(event_params) ep WHERE ep.key = 'advancement_delta'),
(SELECT ANY_VALUE(ep.value.float_value) FROM UNNEST(event_params) ep WHERE ep.key = 'advancement_delta'),
CAST((SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'advancement_delta') AS FLOAT64),
SAFE_CAST((SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'advancement_delta') AS FLOAT64)
) AS advancement_delta,
COALESCE(
SAFE_CAST((SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'playback_attempt') AS BOOL),
(SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'playback_attempt') = 1,
FALSE
) AS playback_attempt,
COALESCE(
SAFE_CAST((SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'is_ad') AS BOOL),
(SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'is_ad') = 1,
FALSE
) AS is_ad,
COALESCE(
SAFE_CAST((SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'is_preview') AS BOOL),
(SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'is_preview') = 1,
FALSE
) AS is_preview,
COALESCE(
SAFE_CAST((SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'is_resume') AS BOOL),
(SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'is_resume') = 1,
FALSE
) AS is_resume,
COALESCE(
SAFE_CAST((SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'valid_start') AS BOOL),
(SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'valid_start') = 1,
FALSE
) AS valid_start,
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'playback_session_id') AS playback_session_id,
COALESCE(
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'session_id'),
CAST((SELECT ANY_VALUE(ep.value.int_value) FROM UNNEST(event_params) ep WHERE ep.key = 'ga_session_id') AS STRING)
) AS analytics_session_id,
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'page_location') AS page_location,
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'page_referrer') AS page_referrer,
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'page_title') AS page_title,
COALESCE(
user_id,
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'user_id')
) AS user_id,
COALESCE(
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'anonymous_id'),
user_pseudo_id
) AS anonymous_id,
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'analytics_storage') AS analytics_storage,
COALESCE(
(SELECT ANY_VALUE(ep.value.string_value) FROM UNNEST(event_params) ep WHERE ep.key = 'platform'),
platform
) AS platform
FROM `your-project.analytics_123456789.events_*`
WHERE event_name = 'video_start'
),
validated AS (
SELECT *
FROM extracted
WHERE valid_start
AND NOT is_ad
AND NOT is_preview
AND NOT playback_attempt
AND media_time_advanced
AND COALESCE(media_time_current, 0) > COALESCE(media_time_previous, 0)
),
deduplicated AS (
SELECT *
FROM validated
QUALIFY ROW_NUMBER() OVER (
PARTITION BY COALESCE(
event_id,
TO_HEX(SHA256(CONCAT(
COALESCE(anonymous_id, ''), '|',
COALESCE(CAST(event_timestamp AS STRING), ''), '|',
COALESCE(playback_session_id, ''), '|',
COALESCE(content_id, ''), '|',
COALESCE(CAST(event_sequence AS STRING), '')
)))
)
ORDER BY event_timestamp, event_sequence
) = 1
)
SELECT
event_date,
event_timestamp,
event_name,
event_id,
event_sequence,
schema_version,
content_id,
content_title,
content_type,
content_format,
content_category,
content_series,
content_season,
content_episode,
content_duration,
content_url,
content_language,
content_provider,
content_owner,
content_asset_type,
player_id,
player_name,
player_version,
player_type,
playback_start_type,
autoplay,
muted,
fullscreen,
stream_type,
delivery_type,
playhead,
media_time_previous,
media_time_current,
media_time_advanced,
advancement_delta,
playback_attempt,
is_ad,
is_preview,
is_resume,
valid_start,
playback_session_id,
analytics_session_id,
page_location,
page_referrer,
page_title,
user_id,
anonymous_id,
analytics_storage,
platform,
CAST(1 AS INT64) AS content_start_count
FROM deduplicated;Adobe Experience Platform (AEP Query Service)
-- ==========================================
-- 2. ADOBE AEP QUERY SERVICE SQL
-- ==========================================
WITH extracted AS (
SELECT
CAST(timestamp AS DATE) AS event_date,
timestamp AS event_timestamp,
eventType AS event_name,
_id AS event_id,
CAST(NULL AS BIGINT) AS event_sequence,
CAST(NULL AS VARCHAR) AS schema_version,
mediaCollection.sessionDetails.contentID AS content_id,
mediaCollection.sessionDetails.friendlyName AS content_title,
mediaCollection.sessionDetails.contentType AS content_type,
CAST(NULL AS VARCHAR) AS content_format,
mediaCollection.sessionDetails.genre AS content_category,
mediaCollection.sessionDetails.show AS content_series,
mediaCollection.sessionDetails.season AS content_season,
mediaCollection.sessionDetails.episode AS content_episode,
CAST(mediaCollection.sessionDetails.length AS DOUBLE PRECISION) AS content_duration,
CAST(NULL AS VARCHAR) AS content_url,
CAST(NULL AS VARCHAR) AS content_language,
mediaCollection.sessionDetails.channel AS content_provider,
mediaCollection.sessionDetails.originator AS content_owner,
CAST(NULL AS VARCHAR) AS content_asset_type,
CAST(NULL AS VARCHAR) AS player_id,
mediaCollection.sessionDetails.playerName AS player_name,
implementationDetails.version AS player_version,
implementationDetails.environment AS player_type,
CAST(NULL AS VARCHAR) AS playback_start_type,
CAST(FALSE AS BOOLEAN) AS autoplay,
CAST(FALSE AS BOOLEAN) AS muted,
CAST(FALSE AS BOOLEAN) AS fullscreen,
mediaCollection.sessionDetails.streamType AS stream_type,
mediaCollection.sessionDetails.feed AS delivery_type,
CAST(mediaCollection.playhead AS DOUBLE PRECISION) AS playhead,
CAST(0 AS DOUBLE PRECISION) AS media_time_previous,
CAST(mediaCollection.playhead AS DOUBLE PRECISION) AS media_time_current,
CAST(TRUE AS BOOLEAN) AS media_time_advanced,
CAST(mediaCollection.playhead AS DOUBLE PRECISION) AS advancement_delta,
CAST(FALSE AS BOOLEAN) AS playback_attempt,
CAST(FALSE AS BOOLEAN) AS is_ad,
CAST(FALSE AS BOOLEAN) AS is_preview,
CAST(FALSE AS BOOLEAN) AS is_resume,
CAST(TRUE AS BOOLEAN) AS valid_start,
COALESCE(mediaCollection.sessionID, eventMergeId) AS playback_session_id,
CAST(NULL AS VARCHAR) AS analytics_session_id,
web.webPageDetails.URL AS page_location,
web.webReferrer.URL AS page_referrer,
web.webPageDetails.name AS page_title,
CAST(NULL AS VARCHAR) AS user_id,
identityMap['ECID'][0].id AS anonymous_id,
CAST(NULL AS VARCHAR) AS analytics_storage,
environment.type AS platform
FROM aep_media_events
WHERE eventType = 'media.sessionStart'
),
deduplicated AS (
SELECT
extracted.*,
ROW_NUMBER() OVER (
PARTITION BY COALESCE(
event_id,
CONCAT(
COALESCE(anonymous_id, ''), '|',
COALESCE(CAST(event_timestamp AS VARCHAR), ''), '|',
COALESCE(playback_session_id, ''), '|',
COALESCE(content_id, '')
)
)
ORDER BY event_timestamp
) AS duplicate_sequence
FROM extracted
WHERE valid_start = TRUE
AND is_ad = FALSE
AND is_preview = FALSE
AND playback_attempt = FALSE
AND media_time_advanced = TRUE
AND COALESCE(media_time_current, 0) > COALESCE(media_time_previous, 0)
)
SELECT
event_date,
event_timestamp,
event_name,
event_id,
event_sequence,
schema_version,
content_id,
content_title,
content_type,
content_format,
content_category,
content_series,
content_season,
content_episode,
content_duration,
content_url,
content_language,
content_provider,
content_owner,
content_asset_type,
player_id,
player_name,
player_version,
player_type,
playback_start_type,
autoplay,
muted,
fullscreen,
stream_type,
delivery_type,
playhead,
media_time_previous,
media_time_current,
media_time_advanced,
advancement_delta,
playback_attempt,
is_ad,
is_preview,
is_resume,
valid_start,
playback_session_id,
analytics_session_id,
page_location,
page_referrer,
page_title,
user_id,
anonymous_id,
analytics_storage,
platform,
CAST(1 AS BIGINT) AS content_start_count
FROM deduplicated
WHERE duplicate_sequence = 1;Source Data
Digital Analytics
Dependencies
[ "playback_start_event", "playback_start_id", "playback_session_id", "content_id", "event_timestamp", "playback_status", "media_time_advanced", "is_eligible_content", "is_ad", "is_preview", "content_catalog_dimension", "traffic_classification_dimension" ]
Report Attributes
Event Date Event Hour Content ID Content Title Series Season Episode Content Type Genre Live or On-Demand Platform Device Type Application Version Operating System Country Market Subscription Tier Acquisition Channel Playback Initiation Type Homepage Placement Recommendation Module
Recommended Reporting Views
Segment Eligibility
true
Governance
Derived KPIs
Governance
GitHub
catalog/metrics/content-start-count.yml