Skip to main content

Writing Data

Write DataFrame results to CSV, Parquet, or JSON files.

Basic Writes

using var df = await context.SqlAsync("SELECT * FROM orders");

// Write to different formats
await df.WriteCsvAsync("output/orders.csv");
await df.WriteParquetAsync("output/orders.parquet");
await df.WriteJsonAsync("output/orders.json");

DataFrameWriteOptions

Shared options for all write formats:

var writeOptions = new DataFrameWriteOptions
{
InsertOp = InsertOp.Overwrite,
IsSingleFileOutput = true,
};

await df.WriteCsvAsync("output/", dataFrameWriteOptions: writeOptions);
PropertyTypeDefaultDescription
InsertOpInsertOpAppendInsert behavior: Append, Overwrite, or Replace
IsSingleFileOutputboolfalseCoalesce all partitions into a single file
PartitionByIEnumerable<string>[]Columns for Hive-style partitioned writes

CSV Write Options

await df.WriteCsvAsync("output/", csvWriteOptions: new CsvWriteOptions
{
HasHeader = true,
Delimiter = ';',
Compression = CompressionType.Gzip,
});

CsvWriteOptions

PropertyTypeDescription
HasHeaderbool?Write a header row
Delimiterchar?Column delimiter
Quotechar?Quote character
Escapechar?Escape character
CompressionCompressionType?Output compression
DateFormatstring?Date format string
DatetimeFormatstring?Datetime format string
TimestampFormatstring?Timestamp format string
TimestampTzFormatstring?Timestamp with timezone format
TimeFormatstring?Time format string
NullValuestring?String representation of null
DoubleQuotebool?Double-quote special characters
NewlinesInValuesbool?Support newlines in quoted values
Terminatorchar?Line terminator character
Commentchar?Comment character
NullRegexstring?Regex pattern for null values

Parquet Write Options

await df.WriteParquetAsync("output/", parquetWriteOptions: new ParquetWriteOptions
{
Compression = ParquetCompression.Snappy,
MaxRowGroupSize = 1_000_000,
});

ParquetWriteOptions

PropertyTypeDescription
CompressionParquetCompression?Compression codec
MaxRowGroupSizeulong?Maximum rows per row group

ParquetCompression

Uncompressed, Snappy, Gzip, Brotli, Lz4, Lz4Raw, Zstd

JSON Write Options

await df.WriteJsonAsync("output/", jsonWriteOptions: new JsonWriteOptions
{
Compression = CompressionType.Zstd,
});

JsonWriteOptions

PropertyTypeDescription
CompressionCompressionType?Output compression