compress

语法

compress(X, [method='lz4'])

参数

X 是一个向量或数据表。

method 是一个字符串,为压缩算法,可取值为 "lz4","delta" (delta-of-delta encoding) 或 "zstd",默认值为 "lz4"。其中,

  • lz4 适用于几乎所有数据类型,它侧重于压缩和解压速度,虽然压缩比不是最高的,但解压速度快,适用于需要快速解压的场景。

  • zstd 同样适用于几乎所有数据类型,其压缩比高于 lz4,但解压缩速度较 lz4 慢约1倍。它适用于对压缩比有较高要求的场景。

  • delta 使用 delta-of-delta 压缩算法,适用于 SHORT, INT, LONG 与时间或日期类型数据。

详情

使用指定压缩算法对向量或数据表进行压缩。压缩某个变量后,需要使用函数 decompress 将其解压缩后方可使用该变量。

例子

x=1..100000000
y=compress(x, "delta");

y.typestr();
// output: HUGE COMPRESSED VECTOR

z=compress(x, "zstd");
z.typestr();
// output: HUGE COMPRESSED VECTOR

select name, bytes from objs() where name in `x`y;
name bytes
x 402653952
y 13634544
注: 对向量 x 压缩后的结果(y )使用 size 函数,结果为 y 的长度,而不是 x 的长度。若要从 y 中获取 x 的长度或其它信息,需先将 y 解压缩:
y.size();
// output: 12670932

z=decompress(y);
z.size();
// output: 100000000

相关函数:decompress