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