Skip to main content

Explore Data

Chariot supports various ways to explore the contents of your dataset.

The Browse tab of the Datasets section allows you to view high-level information about the data that populates your dataset. Here, datasets can be easily sorted (from the Sort drop-down) and filtered in order to get an exact view of your specific data. Toggle Show Annotations to show their annotation labels.

On the right, you can view the distribution of annotation labels for the currently applied filter and the history of uploads to your dataset.

To further inspect a particular data point, which we refer to as a datum, click any of the previews. Metadata about the image can also be viewed from this preview page and used for filtering for specific data.

Filtering

Metadata filters support range-based filtering, allowing you to query for values within specific numeric or date intervals. This makes it easier to isolate records based on properties like file size or timestamp ranges. The system automatically infers the data type of your filter values and applies appropriate comparison logic, with fallback mechanisms for robust querying.

Supported Filter Operations

The following filter operations are supported:

OperationDescriptionSupported Types
eqEqual toAll types
neqNot equal toAll types
gtGreater thanNumeric, Timestamp, Text
gteGreater than or equal toNumeric, Timestamp, Text
ltLess thanNumeric, Timestamp, Text
lteLess than or equal toNumeric, Timestamp, Text
inAny of the specified valuesAll types (array format)

Type Inference and Parsing

The system automatically infers the data type of your filter values using the following priority order:

  1. Numeric: Attempts to parse as a 64-bit float
  2. Boolean: Attempts to parse as a boolean (true/false)
  3. Timestamp: Attempts to parse as a timestamp
  4. Text: Falls back to lexicographical text comparison

Example: Numeric Fallback

  • temperature eq "23.5C"
    • When filtering on this value, numeric parsing fails because of the non-numeric character C. Instead, lexicographical (text) comparison is used.

Type Inference Examples

  • temperature eq 23.5 → Inferred as Numeric (23.5)
  • is_processed eq true → Inferred as Boolean (true)
  • capture_time ≥ 2025-06-01T11:30:15-0700 → Inferred as Timestamp (2025-06-01T18:30:15Z)
  • file_type eq jpeg → Inferred as Text (jpeg)

Timestamp Format Support

The system supports multiple timestamp formats:

  • RFC3339: 2025-06-01T11:30:15Z [Recommended]
  • With timezone offset: 2025-06-01T11:30:15-0700 or 2025-06-01T11:30:15+07:00
  • DateTime format: 2025-06-01 11:30:15

All timestamps are normalized to UTC for consistent comparison.

Array Values (IN Operation)

For the in operation, provide values as comma separated values:

  • file_type in "jpeg, png, tiff"

Array Type Inference

Arrays follow the same type inference rules:

  • Numeric array: 1, 2, 3.5 → Numeric type
  • Boolean array: true, false → Boolean type
  • Timestamp array: "2025-06-01", "2025-06-02" → Timestamp type
  • Mixed typesK true, "yes", 1 → Text type (fallback)

Pitfalls and Best Practices

1. Type Consistency

  • Problem: Metadata values are inconsistent.
  • Example: Some records have temperature as a number (23.5), others as a string with units ("23.5C").
  • Solution:
    • Rely on the fallback behavior that compares both numeric and text.
    • Or standardize metadata formats across your dataset for consistency.

2. Timestamp Format Issues

  • Problem: Unsupported timestamp formats fallback to lexicographical (text) comparison, causing unexpected filter results.
  • Example: "06012025" is not supported.
  • Solution: Use supported timestamp formats such as:
    • 2025-06-01T11:30:15Z
    • 2025-06-01T11:30:15-0700
    • 2025-06-01 11:30:15

3. Case Sensitivity

  • Problem: Text comparisons are case-sensitive.
  • Example: Searching for "JPEG" will not match "jpeg".
  • Solution:
    • Use consistent casing in metadata and filters.

4. Numeric Precision

  • Problem: Floating point precision can cause equality filters to fail.
  • Example: Filtering for 0.123456789 may miss stored values with different decimal places.
  • Solution:
    • Use range filters (e.g., greater than, less than).
    • Round values to a suitable precision before filtering.

5. Fraction Not Supported

  • Problem: A fraction will not be parsed as a number.
  • Example: Filtering for 3/4 will only match "3/4", not 0.75.
  • Solution:
    • Avoid using fraction as value.
    • Or convert fraction values to numbers beforehand.

Troubleshooting

If your metadata filter is not returning the expected results, try the following:

  1. Check data: Verify the datum metadata is consistent.
  2. Verify key path: Ensure the key path matches your metadata structure.
  3. Check for case sensitivity: Text comparisons are case-sensitive.
  4. Validate timestamp format: Use supported timestamp formats.
  5. Test with simpler filters: Start with basic equality filters to isolate issues.