我需要审查我的解决方案,以便从存储在 MPP 机器上的表中采样 100 个随机行(当前为 Netezza,稍后可能是 hadoop/etc。)
我对使用 Netezza 的 rand() 不感兴趣,因为我希望以后能够重现相同的样本,而且我不指望 setseed()。
我现在使用的解决方案是:
SELECT * FROM MY_TABLE ORDER BY ID % 371, ID % 17, ID % 501, ID LIMIT 100
其中 3 个数字是我自己的 RNG 生成的素数。我在正确的轨道上吗?这个“随机”样本足够随机吗?
注意:我不需要它是一个加密的强随机样本,我只是想确保我每次都选择不同的样本,并且采样均匀,并且我希望能够轻松地重现我的样本(通过如果需要,执行相同的 SQL)。
谢谢!