Browse the docs
Output node

SFTP File

Write the pipeline's output to an SFTP server with a templated path (dates, run id) and a write mode.

Category
Output
Connection
SFTP

What it does

Writes the pipeline's result straight to a folder on an SFTP server through a saved Connection, the usual way to deliver an extract to a partner. You choose the format (CSV, JSON, Parquet or Excel), the destination path, and what should happen if a file is already there. Folders that don't exist yet are created, and the path can carry tokens filled in at run time so a nightly delivery names itself.

Inputs and outputs

InputsOne.
OutputsNone. This node ends a pipeline.

When to use it

  • Deliver a nightly extract to a partner's drop folder
  • Publish a dated file every night without hand-editing the name
  • Send results to a system that only accepts files over SFTP

Examples

Dated delivery

outgoing/sales/${date}/orders.csv

${date} becomes 2026-08-26: one file a day, and the folder is created for you.

Per-run file

outgoing/sales/orders-${run_id}.csv

Every run delivers its own file, so a re-run never clobbers last night's.

Per-value

outgoing/${region}/orders.csv

One template, one delivery per value: ${region} is the value of the pipeline parameter this run was started with.

Don't clobber a delivery

If it exists: Fail

Stops the run and names the path rather than quietly replacing a file the partner may already have collected.

Excel for a partner

outgoing/acme/risk_${date-1:%Y%m}.xlsx · Format: Excel

When the receiver's import expects a workbook rather than a CSV. It is formatted the way Excel Report formats one.

Tips

  • The format settings are the same as on the CSV File, JSON File, Parquet File and Excel File outputs: the delimiter, the JSON layout and the Parquet compression.
  • Excel writes a real .xlsx with the same settings as Excel Report: a sheet name, a styled table, columns sized to their content, a frozen header, number formats and a chart. Excel's own limit is 1,048,576 rows per sheet; with Partition by, each folder gets its own workbook.
  • Tokens filled in at run time: ${date} (today in the instance timezone, 2026-08-26), ${date-1} / ${date+7} (a day offset), ${date:%Y%m%d} (a layout), ${datetime} (UTC, filename-safe) and ${run_id}. The same tokens, except ${run_id}, work in an input node's prefix, so a daily schedule can read yesterday's folder.
  • If it exists: Overwrite replaces the file; Fail stops the run and names the path; Unique suffix delivers alongside it with a token added before the extension.
  • Writes happen after a successful Staging or Production run. A Test run never touches the server, so you can press Test as often as you like.
  • Each file is uploaded under a hidden temporary name (.name.trinium-….part) and renamed to its real name only once it has fully arrived, so a partner never sees a half-written file. An upload failure fails the run; files that arrived before it stay, and the run's error lists which arrived and which did not.
  • Missing folders in the path are created, so a ${date} in the middle of a path is safe on the first night.
  • Partition by routes rows into column=value/ folders beneath the destination (which then ends in /), leaving the partition columns out of the files (the Hive layout). Replace the folder replaces each folder this run writes into, removing what was there only once every new file has arrived, so re-running a day replaces that day and nothing else and a failed run leaves the old files in place.