File types
Sift allows you to import certain file types directly through the web interface. This is the fastest way to bring data into Sift for review, visualization, or analysis without any setup or code. Sift allows you to import the following file types through the UI:General configuration
After uploading a supported file type, Sift requires basic configuration before the data can be used. The following general configuration settings may apply depending on the file type being imported.Timestamp formats
The following table lists the timestamp formats supported by Sift. These formats must match the structure of the selected timestamp column during a supported file type import.Channel configuration
During a supported file type import, each non-timestamp column is treated as a Channel representing a stream of time-series data. Sift displays a configuration table where each Channel can be reviewed and customized before import.Data type
After importing a supported file type (in the UI), each Channel must be assigned a data type. The following data types are supported:CSV
Format
A CSV to be imported to Sift must include a header row, a timestamp column, and one or more telemetry Channels, each formatted according to supported conventions.Parquet
Format
Sift supports Parquet files with a flat schema, where each telemetry Channel is represented as an individual column.Nested columns
When importing a Parquet file with nested columns (such as hierarchical structures or columns containing objects), Sift automatically flattens these columns into a flat schema. Nested fields are converted to individual columns using dot notation to represent their hierarchy. For example, a nested column likelocation with two sub fields lat and lon will appear as a separate Channels named location.lat and location.lon.
This flattening ensures that all data is accessible and can be analyzed as standard time-series Channels, regardless of the original file’s complexity.
Complex types
When importing a Parquet file, you can select one of the supported modes to determine how lists or maps (complex types) are handled. Supported modes:Working with stringsWhen complex types are imported as strings, the Channel name will automatically have
.json appended to it to avoid naming conflicts.Working with bytesWhen querying complex types using Sift’s API, you can use any available Arrow library to read the raw bytes and recover the original values. Each Sift “data point” for a given timestamp is an Arrow record with one column and one row. Here’s a Python example for converting that into a usable value: