Before you begin
- You have a Sift API key and base URL. See Authentication.
- You are already streaming data to Sift, or you are setting up streaming for the first time. See Stream telemetry from a running application.
How Assets are created
An Asset exists in Sift in one of two ways:- Sift creates it automatically the first time data arrives for its name, whether through streaming, file upload, Run creation, or an ingestion config.
- You create it explicitly before any data exists, using the New Asset button on the Assets page or the
CreateAssetcall on the Asset API. See Create an asset.
How Runs work
A Run is a distinct grouping of time-series data captured from one or more Assets. By organizing telemetry into Runs, you can isolate specific events, tests, or missions, and investigate patterns, assess performance, and diagnose anomalies within a contextual timeframe. The Run API supports the following fields:start_time,stop_time—the time window of the Run.asset_ids—one Run can span multiple assets.start_time,stop_time: the time window of the Run.asset_ids: one Run can span multiple assets.duration: computed fromstop_time - start_time, or ongoing ifstop_timeis not set.
- Optional: create the Asset. If it does not exist, Sift creates it when data first arrives.
- Create a Run.
- Stream data for an asset, including the Run ID in each request.
- View the Run in Sift.
Create a Run and associate it with streamed data
Step 1: Create a Run
CallRunService.CreateRun. The response returns a CreateRunResponse containing a Run with a run_id. Save the run_id; you will include it in your ingestion requests.
Client keysThe
Run message has an optional client_key field that lets you assign a unique identifier to the Run. Although optional, it is recommended because it makes querying runs more convenient. A client_key can only be set once, at creation or on the first update.Step 2: Associate data with the Run
There are two ways to associate a Run with asset data. Manual association (recommended) Include therun_id in each ingestion request. For ingestion-config-based streaming, add it to the IngestWithConfigDataStreamRequest:
Retrieving a Run IDIf the Run ID is not available, query your runs first. See Continue streaming across multiple runs for how to retrieve runs by
client_key.RunService.CreateAutomaticRunAssociationForAssets to associate a Run with specific assets in advance. Data arriving for those assets will automatically associate with the Run; you do not need to include the run_id in each ingestion request.
Separate the same Channels by data source
Some systems send the same telemetry over more than one path, such as a wired connection and a wireless link. The Channel names are identical, but you need to know which path each value came from. The setup depends on whether any Rule compares values across the sources.Keep the sources independent
Create one Asset for each source and ingest the same Channel names to each. For example, stream wired data to an Asset namedvehicle_wired and wireless data to an Asset named vehicle_wireless, with a Channel named battery.voltage in both.
Because the Channel names match, one Rule or Calculated Channel can target both Assets. You define each one once.
Compare the sources in a Rule
Rules evaluate Channels within a single Asset. To flag when the sources disagree, ingest both sources to one Asset and add the source to each Channel name, such aswired.battery.voltage and wireless.battery.voltage.
Because the Channel names now differ, create a copy of each Rule for each source.
Verify the result
After streaming, open Sift and navigate to the asset you streamed data for. You should see:- The Run listed with its name and start time.
- Channel data visible within the Run’s time window in Explore.