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
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
- Generate a range of dates
Emit one row per date or timestamp between a start and an end at a chosen grain.
- Generate a series of numbers
Emit one row per integer from a start to an end by a step.
- Generate random or synthetic data
Generate rows or columns of random, fake or simulated values for testing.
- Emit a fixed number of rows
Emit N empty, blank or identical rows, or an empty table with set columns.
- Type rows in by hand
Build a small table from values written into the step or query itself.
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-27Emit one record holding the run-time date and time in a chosen string format
Map Inputread 2026-09-27Draw or pick a point, line or polygon on a base map and use it as input
Synthetic Inputread 2026-09-27Generate synthetic rows with generative AI to build a workflow before real data exists
Text Inputread 2026-09-27Type rows in by hand to make a small input or lookup table
Apache DataFusion (2)
VALUES listsread 2026-09-27Produce rows from literal value lists
table functions (range, generate_series)read 2026-09-27Generate a series of values as a relation in FROM
Apache Hop (5)
Data Gridread 2026-09-27Emit a static table of rows typed into a grid
Data set inputread 2026-09-27Read a reusable static data set stored in project metadata
Fake dataread 2026-09-27Generate fake names, addresses and other values with the Java Faker library
Generate Random Valueread 2026-09-27Add random numbers, strings, UUIDs or hashes as new fields
Row Generatorread 2026-09-27Emit a fixed number of rows, empty or holding constant fields
Apache NiFi (3)
DuplicateFlowFileread 2026-09-27Load-testing aid: emit a configured number of copies of each incoming FlowFile
GenerateFlowFileread 2026-09-27Create FlowFiles with random data or custom content
GenerateRecordread 2026-09-27Create records with random values for the fields of a schema
Bruin (2)
bruin.date_spine(datepart, start_date, end_date)read 2026-09-27Emit a one-column date or timestamp spine at a datepart grain
bruin.generate_series(upper_bound)read 2026-09-27Emit a one-column relation of integers from 1 to an upper bound
dbt-utils (2)
date_spineread 2026-09-27Generate one row per datepart between a start date and an exclusive end date
generate_seriesread 2026-09-27Generate a 1-indexed row set of integers up to an upper bound
DuckDB (7)
VALUES (clause)read 2026-09-27Write rows inline
generate_seriesread 2026-09-27generate_series table function
rangeread 2026-09-27range table function
repeatread 2026-09-27repeat table function
repeat_rowread 2026-09-27repeat_row table function
test_all_typesread 2026-09-27test_all_types table function
test_vector_typesread 2026-09-27test_vector_types table function
Duckle (2)
Clipboardread 2026-09-25read the system clipboard as rows
Inline Rowsread 2026-09-25rows written into the pipeline itself, repeated rowCount times over range()
EasyMorph (4)
Calendarread 2026-09-27Generate one row per date across a date range
Create listread 2026-09-27Create a one-column table from up to 100 hand-entered values
Sandboxread 2026-09-27Hold a static snapshot of data pasted from the clipboard or copied from an action's result
Sequenceread 2026-09-27Generate the integers 1 to N as rows
Ibis (3)
DummyTableread 2026-09-27A table built from scalar expressions alone, with no source table
IntegerRangeread 2026-09-27Generate an array of integers from start to stop by a step
TimestampRangeread 2026-09-27Generate an array of timestamps from start to stop by an interval step
KNIME Analytics Platform (6)
Data Generatorread 2026-09-27Generate random clustered numeric data with a share of noise, normalised to 0..1
Date&Time Range Creatorread 2026-09-27Generate a sequence of date&time values from start, end, interval or row count
Example Data Readerread 2026-09-27Load one of several built-in example datasets
KNIME Data Generation (extension)read 2026-09-27Extension outside the base install: 21 current nodes: Beta Distributed Assigner; Conditional Label Assigner; Counter Generation, …
Table Creatorread 2026-09-27Create a table by typing values into a spreadsheet-like editor
Table Structure Creatorread 2026-09-27Create an empty table with a predefined set of columns and types
mlpack (2)
mlpack_gmm_generateread 2026-09-27Sample new points at random from a trained Gaussian mixture model
mlpack_hmm_generateread 2026-09-27Generate a random observation sequence from a trained hidden Markov model
OpenRefine (1)
Clipboardread 2026-09-27Paste comma-separated, tab-separated or one-item-per-line text to start a project
Pentaho Data Integration (4)
Data Gridread 2026-09-27Emit rows of static data typed into a grid
Generate Rowsread 2026-09-27Emit a fixed number of empty or identical rows
Generate random credit card numbersread 2026-09-27Generate random card numbers that pass the Luhn check
Generate random valueread 2026-09-27Generate random values as new fields
Polars (4)
DataFrame.clearread 2026-09-27Make an empty copy with the same schema, or one of n all-null rows
Functions: range and sequence generators (group)read 2026-09-2714 functions: int_range, date_range, datetime_range, linear_space, repeat and others; generate sequences as columns
polars.testing.parametric (family)read 2026-09-279 entries: dataframes, series, lists, dtypes, column and others; Hypothesis strategies that generate test frames
selectread 2026-09-27Evaluate expressions with no input frame, giving a new frame
Power Query M (1)
#tableread 2026-09-27Build a table from literal column names or a table type and a list of rows
RapidMiner Studio (16)
Build Simulationread 2026-09-27Generate a synthetic table with the same statistical properties as a reference table
Create Documentread 2026-09-27Create a text document from typed-in text
Create ExampleSetread 2026-09-27Create a table from expressions, numeric series, date series or typed-in comma-separated text
Generate Churn Dataread 2026-09-27Generate a synthetic customer churn table for testing
Generate Dataread 2026-09-27Generate random numeric columns with a label from a chosen target function
Generate Data (ARIMA)read 2026-09-27Generate a synthetic series from an ARIMA process
Generate Direct Mailing Dataread 2026-09-27Generate a synthetic direct-mailing table for testing
Generate Massive Dataread 2026-09-27Generate a very large synthetic table for performance testing
Generate Multi-Label Dataread 2026-09-27Generate random numeric columns with several label columns
Generate Nominal Dataread 2026-09-27Generate random nominal columns with a label
Generate Sales Dataread 2026-09-27Generate a synthetic sales table for testing
Generate Team Profit Dataread 2026-09-27Generate a synthetic team-profit table for testing
Generate Transaction Dataread 2026-09-27Generate synthetic customer-item transactions for testing
Generate Transfer Dataread 2026-09-27Generate a synthetic money-transfer table for testing
Generate Up-Selling Dataread 2026-09-27Generate a synthetic up-selling table for testing
Get Holidaysread 2026-09-27Return the national and state holidays of a country for a given year as a table
SQLMesh (1)
@DATE_SPINEread 2026-09-27Generate one row per datepart between a start date and an inclusive end date
Talend (2)
tFixedFlowInputread 2026-09-27Generate a fixed flow of rows from values or variables set in the component
tRowGeneratorread 2026-09-27Generate any number of rows and fields of random values, as test data
VisiData (1)
open-newread 2026-09-23Open a new blank sheet with one column for manual entry
Yggdrasil Decision Forests (1)
synthetic_datasetread 2026-09-27Generate 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]
Sources
- [1]Utility Functions – DuckDBdocumentation
- [2]Test data - Wikipediasecondary source
- [3]Starting a project | OpenRefinedocumentation
- [4]Example Data Readerdocumentation
- [5]Data set input | Apache Hopdocumentation
- [6]PostgreSQL: Documentation: 18: 9.26. Set Returning Functionsdocumentation
- [7]Hierarchical and recursive queries in SQL - Wikipediasecondary source
Used in
One Protocol uses this operation:
- SuperGPQA dataset, step
corpus