可以将BigQuery表提取的行随机化

问题描述:

我目前正在将一个BigQuery表提取到Google云端存储中的分片.csv中 - 有没有什么方法可以对提取行进行随机/随机化? GCS .csv将作为GCMLE模型的训练数据使用,当前导出是以非随机顺序排列的,因为它们被类似的“标签”拼凑在一起。可以将BigQuery表提取的行随机化

这在培训GCMLE模型时会引发问题,因为您必须在每个批次中交付模型的所有标签的随机示例。尽管GCMLE/TF能够随机化单个.csv中行的顺序,但是(据我所知)没有任何方法可以随机化多个.csv中选定的行。所以,我正在寻找一种方法来确保输出到.csv的行确实是随机的。

+0

你没有控制权如何从BigQuery中导出数据。我首先会问你为什么需要这样做?你试图解决什么问题.. –

+0

可能重复的[Google云DataFlow Randomize WritetoBigQuery](https://*.com/questions/46778848/google-cloud-dataflow-randomize-writetobigquery) –

+0

我问了两个这些问题,但我相信他们是不同的问题。第一个问题涉及更广泛地涉及Dataflow流水线,而这个问题询问BigQuery中的功能(这可能对另一个问题有用),而不是在评论中丢失问题(和答案)否则有关于BigQuery的类似问题 – reese0106

BigQuery表提取的行可以随机化吗?

编号Extract Job API(因此任何建立在它上面的客户端)都没有任何东西可以让你这样做。

我正在寻找一种方法来确保输出到.csv的行确实是随机的。

您应该首先创建对应于您的csv文件的表格,然后将它们一个接一个地提取到单独的csv中。在这种情况下,您可以控制如何处理什么csv

如果您担心的是处理成本(您需要扫描表的次数与csv文件一样多) - 您可以检查Migrating from non-partitioned to Partitioned tables中的分区方法。这还涉及到成本,而且大大降低一个

最后,零成本的选择是使用Tabledata.list API与寻呼而分配整个CSV文件的响应 - 你可以在你选择的client容易做到这一点