Digital Measurement SEI Content Viewing: Difference between revisions
From Engineering Client Portal
Tag: Reverted |
|||
Line 167: | Line 167: | ||
The reported content “reference” time needs to match the actual content that was played out with plus/minus 10 seconds (for clarity: start and end times can each be off by up to 10 seconds, so the combined under/over reporting for each individual viewing segment should be no greater than 20 seconds) | The reported content “reference” time needs to match the actual content that was played out with plus/minus 10 seconds (for clarity: start and end times can each be off by up to 10 seconds, so the combined under/over reporting for each individual viewing segment should be no greater than 20 seconds) | ||
= CTV, Mirroring, and Casting = | == CTV, Mirroring, and Casting == | ||
For apps native to the OTT device (i.e. downloading and viewing a streaming app to an Apple TV), audit ping should fire from the OTT device, and Viewing data should reside in OTT | For apps native to the OTT device ''(i.e. downloading and viewing a streaming app to an Apple TV)'', audit ping should fire from the OTT device, and Viewing data should reside in OTT Viewing file. | ||
[[File:Phone_Playback.png]] | |||
For mirroring, where video playback occurs on the mobile device and OTT device, only one Viewing file row is necessary where, if possible to determine, set: <code>"secondscr":"MIR"</code> and include in respective mobile platform Viewing file. | |||
For a casting scenario where content is controlled via the mobile device, but displayed only on the OTT device such as an AppleTV or Chromecast, an audit ping must fire from the mobile device before the casting occurs and at the end of playback from the mobile device only. Viewing data resides in the respective mobile platform Viewing file. | |||
<syntaxhighlight lang="JSON"> | |||
{... | |||
"sessionid":"ABC", | |||
"streamid":"DEF", | |||
"position":[ | |||
{ | |||
"referencestart":"xxxxxxx123", | |||
"referenceend":"xxxxxxx183", | |||
"playheadstart":"0", | |||
"playheadend":"60" | |||
}, | |||
{ | |||
"referencestart":"xxxxxxx243", | |||
"referenceend":"xxxxxxx303", | |||
"playheadstart":"120", | |||
"playheadend":"180" | |||
} | |||
] | |||
} | |||
</syntaxhighlight> | |||
"position": [{ | |||
} | |||
<syntaxhighlight lang="JSON"> | |||
{... | |||
"sessionid":"ABC", | |||
"streamid":"DEF", | |||
"position":[ | |||
{ | |||
"referencestart":"xxxxxxx183", | |||
"referenceend":"xxxxxxx243", | |||
"playheadstart":"60", | |||
"playheadend":"120" | |||
} | |||
], | |||
"secondscr":"OTT" | |||
} | |||
</syntaxhighlight> |
Revision as of 01:10, 22 June 2024
This interface specification depicts the file schema required to supply Nielsen with response-level Viewing data in a “Server-to-Server” relationship for incorporation into the Nielsen One Content and/or Nielsen One Ads products.
Delivery Specifications
Files should be delivered at a fixed cadence in a dedicated S3 bucket following the outlined in this spec prefix and object naming conventions and data formats.
- All prefix labels and file names should be lowercase except for app ids.
- Supported format are:
- Text files with utf-8 encoding in JSON Lines format;
- Apache Parquet format with snappy compression;
- All data files have extensions to indicate the file format (.json | .parquet)
- Data file can be partitioned into multiple parts with min size of 256MB
- Data can be delivered separately in multiple splits, if needed due to organizational, technical or privacy requirements. This allows to permission s3 access separately, to process data independently and to persist data partitioned, within the limits of the SEI system;
S3 Bucket and Prefix Naming Convention
useast1-nlsn-w-dig-sei-<partnerid>-feeds-<env>/<filetype>/<split>/yyyy/mm/dd/hh/<object>
Name | Description |
---|---|
partnerid | Abbreviation provided by Nielsen for each provider or publisher |
env | test or prod
|
filetype | exposure , dcr-exposure , dar-exposure , audio-exposure , etc., where:
|
split | a separate data split, can be by platform (ex.: ios, browser, android, ctv), by country (us, ca, jp, etc.), by publisher, by team, etc. or “all” (if data is provided in one split). |
yyyy/mm/dd/hh |
|
S3 Bucket and Prefix Naming Convention
<partnerid>_<filetype>_<intid>_<appid>_<starttime>_<endtime>.[json|parquet]
Name | Description |
---|---|
partnerid | Abbreviation provided by Nielsen for each provider or publisher |
filetype | exposure, dcr-exposure, dar-exposure, audio-exposure, etc., where:
|
initid | integration id: unique identifier provided by Nielsen |
appid | Nielsen-provided server application identifier |
starttime | start date and hour of the data in the file in UTC
|
endtime | end date and hour (not inclusive) of the data in the file in UTC
|
Success File
Empty _SUCCESS
file should be provided to indicate that data delivery for a particular hour and split is completed (even if there is no data for that particular hour and split).
Manifest File
A manifest should be provided which contains metadata related to the uploaded file(s). The manifest is a text file in .json format that implements the AWS unload manifest file format. It has the same name as the data file, but has the _manifest
suffix.
Example:
{
"entries": [
{"url":"s3://bucket/prefix/0000_object_00.snappy.parquet", "mandatory":true},
{"url":"s3://bucket/prefix/0001_object_00.snappy.parquet", "mandatory":true},
{"url":"s3://bucket/prefix/0002_object_00.snappy.parquet", "mandatory":true}
{"url":"s3://bucket/prefix/0003_object_00.snappy.parquet", "mandatory":true}
],
"meta": {
"schema_version": "S2SV1.7.0",
"accreditation_status": "0",
"start_time": "1710154800",
"end_time": "1710158399",
"record_count": 31337
}
}
The manifest contains a complete list of all files provided for a given period and split, as well as a meta data (a.k.a. header) which should include the following attributes:
Parameter | Description | Required | Specified | Format / Example | Type |
---|---|---|---|---|---|
schema_version | Schema Version | Yes | Nielsen | S2SV1.7.0
|
String |
accreditation_status | Accreditation Status | No | Client | MRC = 1
|
String |
data_start_time | Data Start Time (min) | Yes | Client | Format:32-bit unsigned int Unix time in seconds
Example: |
String |
data_end_time | Data Start Time (max) | Yes | Client | Format:32-bit unsigned int Unix time in seconds
Example: |
String |
record_count | Number of records in data file | Yes | Client | Example: 31337
|
Number |
Data delivery example for hour 11 (11:00:00 AM UTC to 11:59:59 PM UTC):
useast1-nlsn-w-dig-sei-acme-feeds-prod/dar-exposure/ios/2022/05/25/11/acme_dtvr-exposure_a9ddf15ea054ea415718767ea6_P47C2495B-BBBA-56DE-BE99-14758F92F034_2024031111_2024031112_0000.json
useast1-nlsn-w-dig-sei-acme-feeds-prod/dar-exposure/ios/2022/05/25/11/acme_dtvr-exposure_a9ddf15ea054ea415718767ea6_P47C2495B-BBBA-56DE-BE99-14758F92F034_2024031111_2024031112_0001.json
useast1-nlsn-w-dig-sei-acme-feeds-prod/dar-exposure/ios/2022/05/25/11/acme_dtvr-exposure_a9ddf15ea054ea415718767ea6_P47C2495B-BBBA-56DE-BE99-14758F92F034_2024031111_2024031112_0002.json
useast1-nlsn-w-dig-sei-acme-feeds-prod/dar-exposure/ios/2022/05/25/11/acme_dtvr-exposure_a9ddf15ea054ea415718767ea6_P47C2495B-BBBA-56DE-BE99-14758F92F034_2024031111_2024031112_0003.json
useast1-nlsn-w-dig-sei-acme-feeds-prod/dar-exposure/ios/2022/05/25/11/acme_dtvr-exposure_a9ddf15ea054ea415718767ea6_P47C2495B-BBBA-56DE-BE99-14758F92F034_2024031111_2024031112_manifest
useast1-nlsn-w-dig-sei-acme-feeds-prod/dar-exposure/ios/2022/05/25/11/_SUCCESS
SLA
The files must be delivered into the proper S3 bucket within 3 hours of the start of that hourly viewing file interval. For example, files from 1:00 AM to 2:00 AM must be delivered before 4 AM.
Accuracy of Measurement
The reported “wall clock” time of viewing needs to be within 25 seconds of the actual viewing time.
The reported content “reference” time needs to match the actual content that was played out with plus/minus 10 seconds (for clarity: start and end times can each be off by up to 10 seconds, so the combined under/over reporting for each individual viewing segment should be no greater than 20 seconds)
CTV, Mirroring, and Casting
For apps native to the OTT device (i.e. downloading and viewing a streaming app to an Apple TV), audit ping should fire from the OTT device, and Viewing data should reside in OTT Viewing file.
For mirroring, where video playback occurs on the mobile device and OTT device, only one Viewing file row is necessary where, if possible to determine, set: "secondscr":"MIR"
and include in respective mobile platform Viewing file.
For a casting scenario where content is controlled via the mobile device, but displayed only on the OTT device such as an AppleTV or Chromecast, an audit ping must fire from the mobile device before the casting occurs and at the end of playback from the mobile device only. Viewing data resides in the respective mobile platform Viewing file.
{...
"sessionid":"ABC",
"streamid":"DEF",
"position":[
{
"referencestart":"xxxxxxx123",
"referenceend":"xxxxxxx183",
"playheadstart":"0",
"playheadend":"60"
},
{
"referencestart":"xxxxxxx243",
"referenceend":"xxxxxxx303",
"playheadstart":"120",
"playheadend":"180"
}
]
}
{...
"sessionid":"ABC",
"streamid":"DEF",
"position":[
{
"referencestart":"xxxxxxx183",
"referenceend":"xxxxxxx243",
"playheadstart":"60",
"playheadend":"120"
}
],
"secondscr":"OTT"
}