Elizon Docs
Workflows

Data Table

Read and write a project's Data Table as a workflow step — the register that lets a run remember.

The Data Table node (data_table) reads and writes one of your project's Data Tables: create and change tables, and insert, get, update, upsert and delete rows. It is documented in full in the Data Tables section — The Data Table node covers every operation, mapping, condition and flag, with examples checked against the shipped schema. This page is its entry in the node reference.

Configuration

FieldTypeDescription
resourcetable | rowWhat the operation acts on. See Operations at a glance.
operationstringThe operation, for example insert, get, update, upsert, bulkUpsert, delete, exists, create, list, rename, addColumn, removeColumn.
tableIdstringThe table, from this workflow's project. See Choosing the table.
tableNamestringThe table's name — kept for display, and the name for Create table.
columnslistCreate table: the columns, each a name and a type.
returnExistingIfExistsbooleanCreate table: return the table if one by that name exists, instead of failing.
newTableNamestringRename table: the new name.
columnNamestringAdd / Remove column: the column.
columnTypestringAdd column: its type.
mappingmanual | automaticHow a write's cells are set. See Writing cells.
mappingRowslistManual mapping: one row per column.
automaticSourceobjectAutomatic mapping: where the values come from.
conditionslistWhich rows to match. See Conditions.
conditionMatchall | anyWhether every condition or any one must hold.
orderBylistSort order for Get and List tables.
limitintegerHow many rows or tables to return.
returnAllbooleanGet: return every matching row.
keyColumnslistBulk upsert: the column names a row is matched on. See Bulk upsert by key.
rowsSourceModearray | fileBulk upsert and an automatic insert: whether the rows come from an array expression or a file.
rowsFileExpressionstringThe file holding the rows (JSON array or JSONL), when rowsSourceMode is file.
cursorstringGet: the nextCursor of a previous page. See Paging with a cursor.
readOutputrows | fileGet: a page of rows, or every matching row as one JSONL file.
dryRunbooleanReport what a destructive operation would do, without doing it.
optimizeBulkbooleanInsert: write many rows in one statement.
applyToAllRowsbooleanUpdate / Delete with no conditions: confirm it is meant for every row.
allowTableDeletebooleanDelete table: confirm it.

See Flags and guards for the last five.

Output

FieldTypeDescription
resourcestringtable or row.
operationstringThe operation that ran.
table.idstringThe table's id.
table.namestringThe table's name.
affectednumberRows (or tables) affected.
dryRunbooleanWhether this was a dry run.

Each operation's own result is described in What the node outputs.

Limits and errors

See Limits and failures.

Example

workflows/register-contract.yaml
name: Register contract
description: Adds each new contract to the contract register.
graph:
  nodes:
    - id: new-contract
      type: trigger_form
      position: { x: 0, y: 0 }
      data:
        authMode: none
        fields:
          - { name: title, label: Contract title, type: text, required: true }
    - id: register
      type: data_table
      position: { x: 280, y: 0 }
      data:
        resource: row
        operation: insert
        table: dataTables.contract-register
        tableName: Contract register
        mapping: manual
        mappingRows:
          - {
              id: map-1,
              column: Contract,
              value: '{{ trigger.body.title }}',
              valueMode: expression,
            }
  edges:
    - { id: contract-to-register, source: new-contract, target: register }

In a Package

Declare the table under dataTables: in the manifest; the node references it as dataTables.<name>. See Data Tables in a Package.

  • Travels: resource, operation, tableName, columns, returnExistingIfExists, newTableName, columnName, columnType, mapping, mappingRows, automaticSource, conditions, conditionMatch, orderBy, limit, returnAll, keyColumns, rowsSourceMode, rowsFileExpression, cursor, readOutput, dryRun, optimizeBulk, applyToAllRows, allowTableDelete
  • Converted: tableId → table (a dataTables.<name> reference)
  • Never carried: none