View a markdown version of this page

Data concepts in Scenario Discovery - Amazon IoT SiteWise
Services or capabilities described in Amazon Web Services documentation might vary by Region. To see the differences applicable to the China Regions, see Getting Started with Amazon Web Services in China (PDF).

Data concepts in Scenario Discovery

Before you manage your workflow, take a moment to understand the key data concepts in this section. Understanding these concepts and the reasoning behind them enables you to use the system more efficiently. In the previous sections, you learned about the Account and Workspace data entities. This section takes you deeper into the data entities in the system.

Datasets

Datasets serve as the fundamental logical grouping of data. A dataset contains (or references) the actual data you ingest, store, and index in Scenario Discovery through the onboarding process. Data types in datasets include video (MPEG-4, H.264 encoding), OpenLABEL annotations, and telemetry data captured as Parquet files. There are two fundamental types of datasets, each with its own function in the system.

Session dataset

Session datasets represent a complete collection (videos, annotations, and telemetry) captured from a particular data collection event. In automotive ADAS applications, this typically represents a single driving session for an instrumented vehicle set up to capture multi-modal driving data. For the purposes of Scenario Discovery, a session dataset represents the system-ingested parts of the original recordings in the formats the system specifies (MPEG-4 H.264, OpenLABEL, and Parquet) derived from the actual raw data gathered on the vehicle.

Curated dataset

Curated datasets are a collection of video snippets (and possibly other time-synchronous multi-modal data such as telemetry and annotations) that have been curated within the system. Curation occurs through manual curation, where you prompt the system and judge or choose the relevant results, or through Agentic Curation, where the system leverages your intent expressed in natural language to derive a curated set of related results. Curated datasets contain all the information needed to identify where in the original data the scenes or snippets of interest are located. Curated datasets also define how Scenario Discovery extracts the curated results from the original session datasets for delivery to your downstream applications (annotation tools, simulation tools, or model training tools).

Timeseries and aliases

Scenario Discovery uses the concept of timeseries. You can reference a timeseries in two ways: by an internally generated unique alphanumeric ID, or by a (recommended) human-readable alias associated with that ID. Timeseries are unique at the account level by system-generated identifier; aliases are unique at the workspace level. This means that in Workspace A you can have a timeseries alias called "/test_vehicle_02/left_front_camera" associated with a UUID of abc123. In Workspace B, you can also have a timeseries alias called "/test_vehicle_02/left_front_camera," but the UUID will be different (for example, zxy987) because the system creates it with the data you load into that workspace. A timeseries conceptually represents the data contained in one physical sensor across datasets and across time. This sensor can be a camera, in-vehicle network signals, or an annotation file. Scenario Discovery stores three types of timeseries data, discussed in the following subsections.

Understanding aliases

An alias (propertyAlias) is a customer-defined, human-readable string that uniquely names a data stream (timeseries) within a workspace. Every piece of data you ingest — whether it's a video recording, a telemetry stream, or an annotation file — is identified by an alias that you choose.

Think of it like a filesystem path for your data:

/fleet-7/truck-42/front_camera /fleet-7/truck-42/lidar_top /route-A/session-2026-06-15/rear_cam_rainy

The system also assigns an opaque timeSeriesId (UUID), but the alias is what you interact with day-to-day.

Why aliases matter

Purpose Explanation
Human readability Name your data logically instead of tracking UUIDs
Cross-API identifier Used across ingestion, enrichment, listing, and querying APIs
Stable reference You control the name; it doesn't change unless you do
Filtering and diagnostics List segments by alias to find specific recordings quickly

Where you provide an alias (ingestion)

When calling CreateBulkImportJob, you specify the alias differently depending on the file format.

MP4 video files

Alias is required per file, along with startTime:

{ "files": [ { "alias": "/fleet-7/truck-42/front_camera", "bucket": "my-data-bucket", "key": "recordings/2026-06-15/front_cam.mp4", "startTime": {"timeInSeconds": 1718452800, "offsetInNanos": 0} } ], "jobConfiguration": { "fileFormat": { "mp4": {} } } }
Annotation (OpenLABEL) files

Alias is required per file. Timestamps are derived from frame data inside the file:

{ "files": [ { "alias": "/fleet-7/truck-42/front_camera_annotations", "bucket": "my-data-bucket", "key": "labels/pedestrian_events.json" } ], "jobConfiguration": { "fileFormat": { "annotation": {} } } }
Parquet telemetry files

Alias is a required column inside the Parquet schema itself — each row declares which timeseries it belongs to:

Column Type Description
alias string, required Identifies the timeseries for this row
timestamp_ns int64, required* Nanosecond-precision timestamp
value binary, required Data payload
data_type string, required One of: JSON, BINARY, BOOLEAN, DOUBLE, STRING, INTEGER

Where aliases appear after ingestion

ListDatasetDataSegments response

Every segment returned carries its alias:

{ "alias": "/fleet-7/truck-42/front_camera", "dataType": "VIDEO", "timeSeriesId": "a1b2c3d4-...", "startTimestamp": { "timeInSeconds": 1778275007, "offsetInNanos": 0 }, "endTimestamp": { "timeInSeconds": 1778275307, "offsetInNanos": 0 }, "enrichment": { "status": "ENRICHED", "lastEnrichedAt": 1781933115.223 } }
CLI example — list all video aliases and enrichment status
aws iotsitewise list-dataset-data-segments --region eu-west-1 \ --workspace-name my-workspace --dataset-id my-dataset \ --query "dataSegments[?dataType=='VIDEO'].{alias:alias,tsId:timeSeriesId,status:enrichment.status}"

How to use aliases for enrichment

CreateEnrichmentJob targets a single timeseries. Identify it using either propertyAlias or timeSeriesId — never both. The API rejects the request if you supply both.

{ "workspaceName": "my-workspace", "jobConfiguration": { "eventDetection": { "datasetId": "dataset-abc123", "propertyAlias": "/fleet-7/truck-42/front_camera", "trimSettings": { "startTime": { "timeInSeconds": 1778275007, "offsetInNanos": 0 }, "endTime": { "timeInSeconds": 1778275307, "offsetInNanos": 0 } } } } }

This is where alias shines — you can target a video for enrichment by name without needing to look up its UUID.

How to use aliases for diagnostics

When a dataset shows PARTIALLY_ENRICHED, use the alias to pinpoint which videos still need enrichment:

# Step 1: Check dataset-level enrichment status aws iotsitewise describe-dataset --region eu-west-1 \ --workspace-name my-workspace --dataset-id my-dataset \ --query 'enrichmentStatus' # Step 2: Find the NOT_ENRICHED segments by alias aws iotsitewise list-dataset-data-segments --region eu-west-1 \ --workspace-name my-workspace --dataset-id my-dataset \ --query "dataSegments[?enrichment.status=='NOT_ENRICHED'].alias"

Naming conventions (recommendations)

The alias is a freeform string (type AssetPropertyAlias). Common patterns:

Pattern Example
/fleet/vehicle/camera_position /fleet-7/truck-42/front_camera
/route/session_date/sensor /route-A/2026-06-15/lidar_top
/project/recording_id/stream_name /adas-v2/rec-0042/stereo_left

Use a consistent hierarchy so your team can filter and reason about data without consulting a lookup table.

Video

You typically gather videos on test vehicles over a set period as part of a broader sensor suite deployed on the vehicle. You can manage video collection in different ways: sometimes as one long video over a whole drive session or often segmented into many smaller chunks. Since a single camera on a test vehicle can generate multiple videos over a single drive session as well as over multiple drive sessions, use an alias unique to that test vehicle and sensor (camera) to associate the many small chunks of video with the single video timeseries. In a session-type dataset, you can see all videos uploaded to the session dataset and their associated aliases. A single alias can (and usually does) contain multiple video files.

Annotations

You ingest annotations to Scenario Discovery using the OpenLABEL JSON format. The system stores each annotation as its own individual timeseries, and there is a one-to-one relationship between the number of annotation files you upload, and the number of annotations shown in a dataset.

Telemetry

Telemetry ingestion is designed to be flexible and capable of handling thousands of different timestreams in one import. Since many types of signal data are captured as time-value pairs, the standard format for telemetry ingestion consists of a single Parquet file containing the timestamp, alias for each signal, and the value for each signal at a given timestamp. Upon ingestion, the system generates a unique ID for each different alias and includes it in the Parquet file.

Important

Once you understand these concepts, your next steps are to upload and ingest data and manage tasks and pipelines. These are available through a combination of user interface, SDK documentation and API documentation. For more in-depth SDK and API documentation, go to the SDK Experience and API documentation sections.