メインコンテンツへスキップ
メインコンテンツへスキップ

estimateCompressionRatio

estimateCompressionRatio

指定されたカラムを圧縮処理を行わずに、その圧縮率を推定します。

構文

estimateCompressionRatio(codec, block_size_bytes)(column)

引数

  • column - 任意の型の列

パラメータ

  • codec - 圧縮コーデック を指定する String。1 つのコーデック、または複数のコーデックをカンマ区切りで 1 つの文字列として指定します。
  • block_size_bytes - 圧縮データのブロックサイズ。これは max_compress_block_sizemin_compress_block_size の両方を設定することに類似します。デフォルト値は 1 MiB (1048576 バイト) です。

どちらのパラメータも省略可能です。

戻り値

  • 指定された列に対する圧縮率の推定値を返します。

型: Float64

CREATE TABLE compression_estimate_example
(
    `number` UInt64
)
ENGINE = MergeTree()
ORDER BY number
SETTINGS min_bytes_for_wide_part = 0;

INSERT INTO compression_estimate_example
SELECT number FROM system.numbers LIMIT 100_000;
SELECT estimateCompressionRatio(number) AS estimate FROM compression_estimate_example;
┌───────────estimate─┐
│ 1.9988506608699999 │
└────────────────────┘
注記

上記の結果は、サーバーのデフォルト圧縮コーデックによって異なります。詳細については、列圧縮コーデックを参照してください。

SELECT estimateCompressionRatio('T64')(number) AS estimate FROM compression_estimate_example;
┌──────────estimate─┐
│ 3.762758101688538 │
└───────────────────┘

関数では複数のコーデックを指定することもできます。

SELECT estimateCompressionRatio('T64, ZSTD')(number) AS estimate FROM compression_estimate_example;
┌───────────estimate─┐
│ 143.60078980434392 │
└────────────────────┘