このことから、questionランダムサンプリングを行うことができることがわかりますRAND
。無作為抽出サンプリング行
SELECT * FROM [table] WHERE RAND() < percentage
しかし、これは、全表スキャンを必要と同等のコストが発生します。もっと効率的な方法があるのだろうか?
tabledata.list
APIを試していますが、index
が非常に大きい(つまり> 10000000)場合はになりました。この操作はO(1)ではないのですか?
bigquery .tabledata() .list(tableRef.getProjectId, tableRef.getDatasetId, tableRef.getTableId) .setStartIndex(index) .setMaxResults(1L) .execute()
私の使用例は、完全なテーブルIOを実行せずに、小さな一定数の行を均一にサンプリングすることです。 'pageToken'アプローチは、テーブル内のすべての行を処理する必要がありますか? –
nope。あなたはいつでもページングを止めることができます –