我们在BigQuery中创建了一个返回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文件中的订单吗?或者有一些解决方法吗?
提前致谢,
答案 0 :(得分:1)
据我所知,没有标志可以保持秩序。
作为一种变通方法,您可以重新考虑数据输出以使用NESTED
类型,并确保将要组合在一起的内容转换为NESTED
行,并且可以导出为JSON。< / p>
答案 1 :(得分:0)
有一些解决方法吗?
作为一个选项 - 您可以将处理逻辑从Python移动到BigQuery,从而消除将数据从BigQuery移动到GCS。