Serialization IonToCsv

Serialization IonToCsv

Certified

Convert an ION file to the CSV format

Supports configurable field separator, text delimiter, and line delimiter. Use quoteMode to control field quoting; alwaysDelimitText is deprecated in favor of quoteMode.

yaml
type: io.kestra.plugin.serdes.csv.IonToCsv

Download a CSV file, transform it in SQL and store the transformed data as a CSV file.

yaml
id: ion_to_csv
namespace: company.team

tasks:
  - id: download_csv
    type: io.kestra.plugin.core.http.Download
    description: salaries of data professionals from 2020 to 2023 (source ai-jobs.net)
    uri: https://huggingface.co/datasets/kestra/datasets/raw/main/csv/salaries.csv

  - id: avg_salary_by_job_title
    type: io.kestra.plugin.jdbc.duckdb.Query
    inputFiles:
      data.csv: "{{ outputs.download_csv.uri }}"
    sql: |
      SELECT
        job_title,
        ROUND(AVG(salary),2) AS avg_salary
      FROM read_csv_auto('{{ workingDir }}/data.csv', header=True)
      GROUP BY job_title
      HAVING COUNT(job_title) > 10
      ORDER BY avg_salary DESC;
    store: true

  - id: result
    type: io.kestra.plugin.serdes.csv.IonToCsv
    from: "{{ outputs.avg_salary_by_job_title.uri }}"

Query a database and export to CSV with quoted strings but unquoted numbers using the NON_NUMERIC quote mode.

yaml
id: export_csv_non_numeric
namespace: company.team

tasks:
  - id: query
    type: io.kestra.plugin.jdbc.snowflake.Query
    fetchType: STORE
    sql: |
      SELECT
        Referencia,
        Descripcion,
        Cantidad,
        Precio
      FROM my_table
    url: "jdbc:snowflake://{{ namespace.snowflake.account }}.snowflakecomputing.com"
    username: "{{ namespace.snowflake.user }}"
    password: "{{ secret('SNOWFLAKE_PASSWORD') }}"

  - id: to_csv
    type: io.kestra.plugin.serdes.csv.IonToCsv
    from: "{{ outputs.query.uri }}"
    header: false
    quoteMode: NON_NUMERIC
Properties

Source file URI

Defaultfalse

Whether fields should always be delimited using the textDelimiter option

Deprecated: use quoteMode instead for more control. If quoteMode is set, this property is ignored.

Assets this task consumes as inputs or produces as outputs, for lineage tracking and the asset graph (Enterprise Edition). A flow declaring this property on a task is rejected in the open-source edition.

Definitions
assetFailureBehaviorstring
Possible Values
IGNOREFAILWARN

Asset failure behavior

Behavior applied to the task state when a declared asset fails to render, emit, or be persisted (e.g. a lock conflict): FAIL escalates it to FAILED, WARN (default) warns it if it would otherwise succeed, IGNORE leaves the state untouched.

enableAutobooleanstring

Whether to auto-register assets referenced dynamically at runtime that are not statically declared in inputs or outputs.

inputsarray

The assets consumed as inputs.

id*string
Min length1
typestring
outputs

The assets produced as outputs.

id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*string
Min length1

Custom asset type

descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
DefaultUTF-8

The name of a supported charset

Defaultyyyy-MM-dd

Format to use for date

Defaultyyyy-MM-dd'T'HH:mm:ss.SSS[XXX]

Format to use for zoned datetime

Default,

The field separator character

Defaulttrue

Specifies if the first line should be the header

Default

The character used to separate rows

Possible Values
ALWAYSREQUIREDNON_NUMERIC

Controls when fields are quoted

When set, this property takes precedence over alwaysDelimitText.

  • ALWAYS: quote all fields.
  • REQUIRED: only quote fields that contain special characters (field separator, quote character, or newlines) as per RFC 4180.
  • NON_NUMERIC: quote all fields except those that are numeric (integer or decimal). Useful when downstream systems expect quoted strings but unquoted numbers.
Default"

The text delimiter character

DefaultHH:mm:ss[XXX]

Format to use for time

DefaultEtc/UTC

Timezone to use when no timezone can be parsed on the source

Default0

The number of records converted

Formaturi

URI of a temporary result file

Number of records converted