SELECT 通过 PRESTO 连接器的随机数据样本

SELECT random sample of data via PRESTO connector

我目前正在寻找如何从 table(例如在 HIVE 中)获取随机数据样本的最佳方式。我知道 PRESTO 提供 RANDOM() 函数或 TABLESAMPLE BERNOULLI/SYSTEM。问题是当查询 table 有大量记录时,它需要很多时间,这不是 suitable 与 JayDeBeApi 合作可能会关闭连接等待响应太久。

我更喜欢使用 TABLESAMPLE BERNOULLI/SYSTEM,它将要获取的记录的百分比作为参数。与 ORACLE、SAP 或 MSSQL 数据库相比,可以传递精确的百分比,即 0.003123412%,PRESTO 不允许你,尽管功能非常相似,并且所有内容都在 1-100% 的范围内转换。

有人知道如何解决这个问题吗?我宁愿避免与 TABLESAMPLE BERNOULLI/SYSTEM 合作的 limit 子句,它可能无法按预期工作。

这个可以通过科学计数法传递数字得到。

使用 Presto 341(即将发布)您可以

 ... FROM my_table TABLESAMPLE BERNOULLI (0.01)

如@michal.kyjovsky 指出的那样,旧版本有一个错误,需要使用科学记数法来获得 sub-percent 采样率

 ... FROM my_table TABLESAMPLE BERNOULLI (0.01e0)