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)
我目前正在寻找如何从 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)