雅典娜中大小为 N 的随机样本

random sample of size N in Athena

我正在尝试从 Athena 获取 N 行的随机样本。但是由于我想从中抽取这个样本的 table 很大,所以天真

SELECT
id
FROM mytable
ORDER BY RANDOM()
LIMIT 100

永远到 运行,大概是因为 ORDER BY 要求将所有数据发送到单个节点,然后该节点对数据进行洗牌和排序。

我知道 TABLESAMPLE 但这允许人们对一定百分比的行而不是一定数量的行进行抽样。有更好的方法吗?

雅典娜其实在普雷斯托后面。您可以使用 TABLESAMPLE 获取 table.

的随机样本

假设您想要 table 的 10% 样本,您的查询将类似于:

SELECT id FROM mytable TABLESAMPLE BERNOULLI(10)

注意有BERNOULLI和SYSTEM采样。 Here 是它的文档。