fields:
  - name: "an_id"
    type: "uint" # (default IDField (non-mutex))
    distribution: "sequential"
    min: 0
    max: 2000000
    repeat: false # if false, data generation stops when we hit >= max. only available with sequential
    step: 1
  - name: "an_int"
    type: "int" # (default IntField)
    distribution: "uniform" # uniform or zipfian
    min: 0
    max: 500
  - name: "a_random_string"
    type: "string" # (default StringField (non-mutex))
    generator_type: "random-string" # used to generate random strings rather than pulling from known set
    min_len: 3
    max_len: 3
    charset: "AB" # set of possible characters to pull from when generating random string
  - name: "an_id_set"
    type: "uint-set" # (default IDArrayField)
    min: 0
    max: 1000
    distribution: "uniform"
    min_num: 1
    max_num: 6
  - name: "a_string_set"
    type: "string-set" # (default StringArrayField)
    generator_type: "random-string" # used to generate random strings rather than pulling from known. "distribution" is ignored.
    min_len: 4
    max_len: 4
    charset: "0123456789ABCDEF"
    min_num: 0 # minimum number of strings in each value (default 0)
    max_num: 10 # max number of strings (default to cardinality of source)

# idk_params describe how data from "fields" should be ingested by IDK
idk_params:
  primary_key_config:
    field: "id" # if this is a single field named "id" then we'll use uint IDs, if it's empty we'll autogen ids, and if it's anything else we'll do string keys... yes this is a bit hacky, needs to be cleaned up.
  # fields is keyed by names of fields from top level "fields". It is
  # not required that all fields appear here, those that don't will
  # use the default ingestion.
  fields:
    an_id:
      - type: "ID"
        mutex: false
        name: "id"
    a_string_set:
      - type: "StringArray"
    a_random_string:
      - type: "String"
        mutex: true
