Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions documentation/query/export-parquet.md
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,7 @@ penalty of keeping pages that barely compress.
Individual columns can override the global encoding and compression settings.
See [CREATE TABLE - Per-column Parquet encoding, compression, and bloom filters](/docs/query/sql/create-table/#per-column-parquet-encoding-compression-and-bloom-filters)
for defining overrides at table creation, or
[ALTER TABLE ALTER COLUMN SET PARQUET](/docs/query/sql/alter-table-alter-column-parquet-encoding/)
[ALTER TABLE ALTER COLUMN SET PARQUET](/docs/query/sql/alter-table-alter-column-set-parquet/)
for modifying existing tables.

## Bloom Filters
Expand All @@ -286,7 +286,7 @@ alongside min/max statistics.

Bloom filters can be enabled per-column via the `BLOOM_FILTER` keyword in
[`CREATE TABLE`](/docs/query/sql/create-table/#bloom-filters) or
[`ALTER TABLE`](/docs/query/sql/alter-table-alter-column-parquet-encoding/#bloom-filter),
[`ALTER TABLE`](/docs/query/sql/alter-table-alter-column-set-parquet/#bloom-filter),
or per-export via `bloom_filter_columns` in
[`CONVERT PARTITION`](#bloom-filters-for-in-place-conversion),
[`COPY TO`](/docs/query/sql/copy/), and the
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,40 @@
---
title: ALTER TABLE ALTER COLUMN SET PARQUET
sidebar_label: PARQUET ENCODING/COMPRESSION
title: "ALTER TABLE ALTER COLUMN SET PARQUET: encoding, compression, and bloom filter options"
sidebar_label: SET PARQUET
description: ALTER TABLE ALTER COLUMN SET PARQUET SQL keyword reference documentation.
---

Sets or removes per-column Parquet encoding, compression, and
bloom filter configuration on
existing tables. These settings only affect
Sets or removes per-column Parquet encoding, compression, and bloom filter
configuration on existing tables. Encoding and compression control how column
data is stored in Parquet files, affecting file size and read performance.
Bloom filters allow QuestDB to skip row groups that do not contain matching
values, significantly speeding up equality and `IN` queries on large Parquet
partitions.

These settings only affect
[Parquet partitions](/docs/query/export-parquet/#in-place-conversion) and are
ignored for native partitions.

## SET
## Syntax

```questdb-sql
ALTER TABLE tableName ALTER COLUMN columnName
SET PARQUET ( encoding [, compression [( level )] ] [, BLOOM_FILTER] );
```

Override the default Parquet encoding, compression, bloom filter, or any
combination for a column. The syntax is
`SET PARQUET(encoding [, compression[(level)]] [, BLOOM_FILTER])`. Use
`default` for the encoding when specifying compression only.
Where `encoding` is `default` or a
[supported encoding](#supported-encodings-and-codecs), and `compression` is a
[supported codec](#supported-encodings-and-codecs) with an optional `level`.

## Supported encodings and codecs

See the [CREATE TABLE](/docs/query/sql/create-table/#supported-encodings)
reference for the full list of supported encodings, compression codecs, and
their valid column types.

## Examples

Use `default` for the encoding when specifying compression only.

```questdb-sql title="Set encoding only"
ALTER TABLE trades ALTER COLUMN price SET PARQUET(rle_dictionary);
Expand All @@ -29,17 +48,16 @@ ALTER TABLE trades ALTER COLUMN price SET PARQUET(default, zstd(3));
ALTER TABLE trades ALTER COLUMN price SET PARQUET(rle_dictionary, zstd(3));
```

Reset per-column overrides back to the server defaults.
Reset per-column overrides back to the server defaults:

```questdb-sql title="Reset to defaults"
ALTER TABLE trades ALTER COLUMN price SET PARQUET(default);
```

### Bloom filter

The optional `BLOOM_FILTER` keyword enables bloom filter generation for the
column when partitions are converted to Parquet. It can be combined with
encoding and compression, and always appears as the last argument.
The optional `BLOOM_FILTER` keyword can be combined with encoding and
compression, and always appears as the last argument.

```questdb-sql title="Enable bloom filter with default encoding"
ALTER TABLE trades ALTER COLUMN symbol SET PARQUET(default, BLOOM_FILTER);
Expand All @@ -59,9 +77,3 @@ ALTER TABLE trades ALTER COLUMN symbol SET PARQUET(rle_dictionary);
The bloom filter false positive probability (FPP) is a global setting and
cannot be configured per column. See
the [Configuration reference](/docs/configuration/overview/) for details.

## Supported encodings and codecs

See the [CREATE TABLE](/docs/query/sql/create-table/#supported-encodings)
reference for the full list of supported encodings, compression codecs, and
their valid column types.
2 changes: 1 addition & 1 deletion documentation/query/sql/create-table.md
Original file line number Diff line number Diff line change
Expand Up @@ -513,7 +513,7 @@ For more details on Parquet compression, see the
[Apache Parquet compression documentation](https://parquet.apache.org/docs/file-format/data-pages/compression/).

To modify encoding or compression on existing tables, see
[ALTER TABLE ALTER COLUMN SET PARQUET](/docs/query/sql/alter-table-alter-column-parquet-encoding/).
[ALTER TABLE ALTER COLUMN SET PARQUET](/docs/query/sql/alter-table-alter-column-set-parquet/).

#### Bloom filters

Expand Down
40 changes: 20 additions & 20 deletions documentation/sidebars.js
Original file line number Diff line number Diff line change
Expand Up @@ -256,26 +256,6 @@ module.exports = {
type: "category",
label: "ALTER",
items: [
{
type: "category",
label: "ALTER COLUMN (TABLE)",
items: [
"query/sql/alter-table-alter-column-add-index",
"query/sql/alter-table-alter-column-cache",
"query/sql/alter-table-change-column-type",
"query/sql/alter-table-alter-column-drop-index",
"query/sql/alter-table-alter-column-parquet-encoding",
"query/sql/alter-table-change-symbol-capacity",
],
},
{
type: "category",
label: "ALTER COLUMN (MAT VIEW)",
items: [
"query/sql/alter-mat-view-alter-column-add-index",
"query/sql/alter-mat-view-alter-column-drop-index",
],
},
{
id: "query/sql/acl/alter-service-account",
type: "doc",
Expand All @@ -285,6 +265,18 @@ module.exports = {
label: "ALTER TABLE",
items: [
"query/sql/alter-table-add-column",
{
type: "category",
label: "ALTER COLUMN",
items: [
"query/sql/alter-table-alter-column-add-index",
"query/sql/alter-table-alter-column-cache",
"query/sql/alter-table-change-column-type",
"query/sql/alter-table-alter-column-drop-index",
"query/sql/alter-table-alter-column-set-parquet",
"query/sql/alter-table-change-symbol-capacity",
],
},
"query/sql/alter-table-attach-partition",
"query/sql/alter-table-change-column-type",
"query/sql/alter-table-enable-deduplication",
Expand All @@ -305,6 +297,14 @@ module.exports = {
type: "category",
label: "ALTER MATERIALIZED VIEW",
items: [
{
type: "category",
label: "ALTER COLUMN",
items: [
"query/sql/alter-mat-view-alter-column-add-index",
"query/sql/alter-mat-view-alter-column-drop-index",
],
},
"query/sql/alter-mat-view-resume-wal",
"query/sql/alter-mat-view-set-refresh",
"query/sql/alter-mat-view-set-refresh-limit",
Expand Down
Loading