Acquire / generate · All operations

Generate rows

Generate rows: sequences, date ranges, constants, typed-in data.

Status

In arcform

Runs as a SQL step

arcform carries it as a sql: step today.

Shape of the result
a new table, from no input table
Level
one clause of SQL

The DuckDB step

A date spine

SQL
CREATE TEMP TABLE result AS
SELECT d::DATE AS day FROM generate_series(DATE '2026-01-01', DATE '2026-01-07', INTERVAL 1 DAY) t(d);
SELECT * FROM result;
SELECT CASE WHEN ((SELECT count(*) = 7 AND min(day) = DATE '2026-01-01' AND max(day) = DATE '2026-01-07' FROM result)) THEN 'as expected' ELSE error('the spine is not the seven days asked for') END AS verdict;
  • The statement builds its own data.
  • It needs nothing installed beyond DuckDB itself.
  • The statement checks its own result and raises an error when it is wrong: “the spine is not the seven days asked for”.
  • It passed on DuckDB v2.0.0 (Cyanoptera) d54cbbe3df.

Variants

Paste rows from the clipboard

Start a table from text or data pasted from the clipboard.

Load an example or stored dataset

Emit a built-in example or test table, or a static data set kept with the project.

Other generated inputs

Emit a single special-purpose input, such as the current time, a drawn map shape or a holiday list.

What other tools call it

Meridian's classification; an independent blind rating agreed on 86.2% of 312 rows (exact class, version 2).

Alteryx Designer (4)
  • Date Time Nowread 2026-09-27

    Emit one record holding the run-time date and time in a chosen string format

  • Map Inputread 2026-09-27

    Draw or pick a point, line or polygon on a base map and use it as input

  • Synthetic Inputread 2026-09-27

    Generate synthetic rows with generative AI to build a workflow before real data exists

  • Text Inputread 2026-09-27

    Type rows in by hand to make a small input or lookup table

Apache DataFusion (2)
Apache Hop (5)
  • Data Gridread 2026-09-27

    Emit a static table of rows typed into a grid

  • Data set inputread 2026-09-27

    Read a reusable static data set stored in project metadata

  • Fake dataread 2026-09-27

    Generate fake names, addresses and other values with the Java Faker library

  • Generate Random Valueread 2026-09-27

    Add random numbers, strings, UUIDs or hashes as new fields

  • Row Generatorread 2026-09-27

    Emit a fixed number of rows, empty or holding constant fields

Apache NiFi (3)
  • DuplicateFlowFileread 2026-09-27

    Load-testing aid: emit a configured number of copies of each incoming FlowFile

  • GenerateFlowFileread 2026-09-27

    Create FlowFiles with random data or custom content

  • GenerateRecordread 2026-09-27

    Create records with random values for the fields of a schema

Bruin (2)
dbt-utils (2)
  • date_spineread 2026-09-27

    Generate one row per datepart between a start date and an exclusive end date

  • generate_seriesread 2026-09-27

    Generate a 1-indexed row set of integers up to an upper bound

DuckDB (7)
  • VALUES (clause)read 2026-09-27

    Write rows inline

  • generate_seriesread 2026-09-27

    generate_series table function

  • rangeread 2026-09-27

    range table function

  • repeatread 2026-09-27

    repeat table function

  • repeat_rowread 2026-09-27

    repeat_row table function

  • test_all_typesread 2026-09-27

    test_all_types table function

  • test_vector_typesread 2026-09-27

    test_vector_types table function

Duckle (2)
  • Clipboardread 2026-09-25

    read the system clipboard as rows

  • Inline Rowsread 2026-09-25

    rows written into the pipeline itself, repeated rowCount times over range()

EasyMorph (4)
  • Calendarread 2026-09-27

    Generate one row per date across a date range

  • Create listread 2026-09-27

    Create a one-column table from up to 100 hand-entered values

  • Sandboxread 2026-09-27

    Hold a static snapshot of data pasted from the clipboard or copied from an action's result

  • Sequenceread 2026-09-27

    Generate the integers 1 to N as rows

Ibis (3)
  • DummyTableread 2026-09-27

    A table built from scalar expressions alone, with no source table

  • IntegerRangeread 2026-09-27

    Generate an array of integers from start to stop by a step

  • TimestampRangeread 2026-09-27

    Generate an array of timestamps from start to stop by an interval step

KNIME Analytics Platform (6)
  • Data Generatorread 2026-09-27

    Generate random clustered numeric data with a share of noise, normalised to 0..1

  • Generate a sequence of date&time values from start, end, interval or row count

  • Example Data Readerread 2026-09-27

    Load one of several built-in example datasets

  • Extension outside the base install: 21 current nodes: Beta Distributed Assigner; Conditional Label Assigner; Counter Generation, …

  • Table Creatorread 2026-09-27

    Create a table by typing values into a spreadsheet-like editor

  • Create an empty table with a predefined set of columns and types

mlpack (2)
  • mlpack_gmm_generateread 2026-09-27

    Sample new points at random from a trained Gaussian mixture model

  • mlpack_hmm_generateread 2026-09-27

    Generate a random observation sequence from a trained hidden Markov model

OpenRefine (1)
  • Clipboardread 2026-09-27

    Paste comma-separated, tab-separated or one-item-per-line text to start a project

Pentaho Data Integration (4)
Polars (4)
  • DataFrame.clearread 2026-09-27

    Make an empty copy with the same schema, or one of n all-null rows

  • 14 functions: int_range, date_range, datetime_range, linear_space, repeat and others; generate sequences as columns

  • 9 entries: dataframes, series, lists, dtypes, column and others; Hypothesis strategies that generate test frames

  • selectread 2026-09-27

    Evaluate expressions with no input frame, giving a new frame

Power Query M (1)
  • #tableread 2026-09-27

    Build a table from literal column names or a table type and a list of rows

RapidMiner Studio (16)
SQLMesh (1)
  • @DATE_SPINEread 2026-09-27

    Generate one row per datepart between a start date and an inclusive end date

Talend (2)
  • tFixedFlowInputread 2026-09-27

    Generate a fixed flow of rows from values or variables set in the component

  • tRowGeneratorread 2026-09-27

    Generate any number of rows and fields of random values, as test data

VisiData (1)
  • open-newread 2026-09-23

    Open a new blank sheet with one column for manual entry

Yggdrasil Decision Forests (1)
  • synthetic_datasetread 2026-09-27

    Generate synthetic train, validation and test datasets from an options file

Background

In DuckDB, a table function is used in place of a table in a FROM clause, and generate_series returns a table of values between a start and a stop.[1] Test data can be generated by the tester or by a program or function that assists the tester, and can be recorded for reuse or used only once.[2]

When to use it

Reach for generated rows when a query needs a table that no file holds: a run of numbers or dates to join against, a handful of lookup values, or rows to try a pipeline on before the real data arrives. (Meridian's view) Test data may be created manually, with data generation tools that are often based on randomness, or retrieved from an existing production environment.[2] A set of test data may consist of synthetic, fake data, but ideally it should include representative, real data.[2] Treat generated rows as scaffolding for the shape of a pipeline, and check its results again once real rows flow through it. (Meridian's view)

OpenRefine recognises comma-separated, tab-separated or table-formatted text pasted from the clipboard, and reads each new line of a pasted list as a row.[3] KNIME's Example Data Reader node reads data from one of several pre-defined example datasets.[4] In Apache Hop, the Data set input transform lets a project use and reuse static data in several places.[5] Keep a small table that several steps share in one place rather than writing it out twice, so that a correction reaches every step. (Meridian's view)

The method

In PostgreSQL, set returning functions possibly return more than one row, and the most widely used of them are the series generating functions.[6] In the SQL:1999 standard, hierarchical queries are implemented with recursive common table expressions (CTEs).[7] A recursive CTE inside an INSERT INTO can populate a table with data generated by a recursive query, and random data can be generated this way without any procedural statements.[7]

Used in

One Protocol uses this operation: