如何在压缩文件中保留 Google 云存储行顺序

How to preserve Google Cloud Storage rows order in compressed files

我们在 BigQuery 中创建了一个查询 returns SKU 和它们之间的相关性。类似于:

sku_0,sku_1,0.023
sku_0,sku_2,0.482
sku_0,sku_3,0.328
sku_1,sku_0,0.023
sku_1,sku_2,0.848
sku_1,sku_3,0.736

结果有数百万行,我们将其导出到 Google 云存储,这会生成几个压缩文件。

这些文件已下载,我们有一个 Python 应用程序循环遍历它们以使用相关性进行一些计算。

然后我们尝试利用我们的第一列 SKU 已经订购的事实,而不必在我们的应用程序中应用此订购。

但是后来我们刚发现我们从GCS获取的文件改变了skus出现的顺序

看起来这些文件是由多个读取结果并将其保存在不同文件中的进程创建的,这打破了我们想要维护的顺序。

例如,如果我们创建了 2 个文件,第一个文件将如下所示:

sku_0,sku_1,0.023
sku_0,sku_3,0.328
sku_1,sku_2,0.0848

第二个文件:

sku_0,sku_2,0.482
sku_1,sku_0,0.328
sku_1,sku_3,0.736

这是两个进程读取结果的示例,每个进程都将其当前行保存在特定文件中,该文件会更改列的顺序。

所以我们寻找一些可以用来强制保留顺序的标志,但到目前为止找不到。

有没有什么方法可以强制保留这些 GCS 文件中的顺序?或者有什么解决方法吗?

提前致谢,

据我所知没有维持秩序的旗帜

作为解决方法,您可以重新考虑使用 NESTED 类型的数据输出,并确保将要组合在一起的内容转换为 NESTED 行,然后您可以导出到 JSON.

is there some workaround?

作为一个选项 - 您可以将处理逻辑从 Python 移至 BigQuery,从而无需将数据从 BigQuery 移至 GCS。