基于所有读入的column_name的值,系统根据x、y的设置做采样,并过滤掉不满足采样条件的行。
命令格式
boolean sample(<x>, <y>, [<column_name1>, <column_name2>[,...]])
参数说明
- x、y:x必填。BIGINT类型,取值范围为大0的整型常量。表示哈希为x份,取第y份。
y可选,省略时默认取第一份。如果省略参数中的y,则必须同时省略column_name。
x、y为其它类型或小于等于0时抛异常,如果y大于x时也返回异常。x、y任一输入为NULL时,返回NULL。
- column_name:可选。采样的目标列。该参数省略时将根据x、y的值随机采样。任意类型,列的值可以为NULL。不做隐式类型转换。如果column_name为常量NULL,则返回报错。
说明 为避免NULL值带来的数据倾斜,对于column_name中为NULL的值,会在x份中进行均匀哈希。如果不指定column_name,则数据量比较少时输出不一定均匀,在这种情况下建议指定column_name,以获得较好的输出结果。
返回值说明
返回BOOLEAN类型。
使用示例
例如存在表
tbla
,表内有列名为cola
的列。--表示数值会根据cola hash为4份,取第1份。返回值为True。
select * from tbla where sample (4, 1 , cola);
--表示数值会对每行数据做随机哈希分配为4份,取第2份。返回值为True。
select * from tbla where sample (4, 2);