我目前正在寻找如何从表中获得随机数据样本的最佳方法(例如在HIVE中(。我知道PRESTO提供了RANDOM((函数或TABLESAMPLE BERNOULLI/SYSTEM。问题是,当查询具有大量记录的表时,需要花费大量时间,这不适合与JayDeBeApi合作,后者可能会关闭等待响应时间过长的连接。
我更喜欢使用TABLESAMPLE BERNOULLI/SYSTEM,它将要提取的记录的百分比作为参数。与ORACLE、SAP或MSSQL数据库相比,它们能够通过精确的百分比,即0.0031123412%,PRESTO不允许您通过,尽管功能非常相似,并且所有内容都在1-100%的范围内转换。
有人知道如何解决这个问题吗?我更愿意避免与TABLESAMPLE BERNOULLI/SYSTEM合作使用限制子句,这可能无法按预期工作。
使用Presto 341(即将发布(,您可以只使用
... FROM my_table TABLESAMPLE BERNOULLI (0.01)
正如@michal.kyjovsky所指出的,旧版本有一个错误,需要使用科学符号来获得低于百分比的采样率
... FROM my_table TABLESAMPLE BERNOULLI (0.01e0)
这可以通过传递科学记数法中的数字来获得。