Skip to content

Your first schema

We will build a customer list: an id, a name, an email, a signup date, and a status - then make the ids unique and hand the whole thing to someone else.

In the application

  1. Add a column. It starts as a Guid named column1. Rename it to customer_id.
  2. Change a type. Click the column's type to open the picker, search for Full Name, and choose it for a second column named name.
  3. Open a column's settings. Some types take options - a Pick List needs its values, a Date has a range. The settings panel opens beside the column and stays open while you work.
  4. Set the row count and seed at the top. Fix the seed: it is what makes the run repeatable.
  5. Generate. Choose an output path and format, and run it.

The preview beside each column shows what that column will produce, which is usually faster than generating to find out.

The same thing as a file

yaml
Output:
  Path: customers.csv
  Format: CSV

Schema:
  RowCount: 1000
  GlobalSeed: 20260822
  Columns:
    - Id: 7e57d004-2b97-0e7a-b45f-5387367791cd
      Name: customer_id
      Generator:
        Type: Guid

    - Id: 7e57d004-2b97-0e7a-b45f-5387367791ce
      Name: name
      Generator:
        Type: Full Name

    - Id: 7e57d004-2b97-0e7a-b45f-5387367791cf
      Name: email
      Generator:
        Type: Email

    - Id: 7e57d004-2b97-0e7a-b45f-5387367791d0
      Name: signed_up
      Generator:
        Type: Date
        Settings:
          Min: 2023-01-01
          Max: 2026-06-30
          IncludeTime: false

    - Id: 7e57d004-2b97-0e7a-b45f-5387367791d1
      Name: status
      Generator:
        Type: Pick List
        Settings:
          ValueType: String
          Values:
            - Active
            - Pending review
            - Closed
bash
hippodatamus-cli --config customers.yaml

Make the ids unique

Mark the column Unique in the application, or add a constraint to the file:

yaml
Schema:
  UniqueConstraints:
    - - 7e57d004-2b97-0e7a-b45f-5387367791cd

Uniqueness is checked before the run starts, against how many distinct values the column can actually produce. Ask for 1,000 unique values from a list of three and you are told immediately. See Uniqueness.

A column that helps but does not appear

Sometimes you need a value to build another value, but not in the output. Mark it excluded from output: it still generates, templates can still reference it, constraints still apply, and it simply is not written.

yaml
    - Name: n
      IsExcludedFromOutput: true
      Generator:
        Type: Sequential Id

    - Name: account
      Generator:
        Type: Template
        Settings:
          Template: "ACC-{n:00000}"

Hand it over

Send the .yaml. Not the seed - the file, because column ids take part in the seed.

If the schema reads an external spreadsheet, export a bundle instead and send that one file.

Proprietary software, free to use. Licence · Privacy