Google bigquery 如何在BigQuery上以与CSV相同的顺序加载数据

Google bigquery 如何在BigQuery上以与CSV相同的顺序加载数据,google-bigquery,Google Bigquery,是否可以按与原始输入CSV文件相同的行顺序加载数据?这些文件不按任何特定顺序或任何特定列排序。 看起来BigQuery加载是分布式的,顺序是不可预测的,但是倾向于先将null分组。不,这是不可能的。此外,一旦数据加载到BigQuery表中,就不会保持静态顺序,因为BigQuery可能会重新排列行,以优化存储和未来的查询性能。 没有最外层ORDER BY的任何SELECT查询的结果行在不同的调用中可能以不同的顺序出现。鉴于BigQuery在幕后的工作方式,实现这一点的唯一方法是在csv中添加一个额

是否可以按与原始输入CSV文件相同的行顺序加载数据?这些文件不按任何特定顺序或任何特定列排序。
看起来BigQuery加载是分布式的,顺序是不可预测的,但是倾向于先将null分组。

不,这是不可能的。此外,一旦数据加载到BigQuery表中,就不会保持静态顺序,因为BigQuery可能会重新排列行,以优化存储和未来的查询性能。
没有最外层ORDER BY的任何SELECT查询的结果行在不同的调用中可能以不同的顺序出现。

鉴于BigQuery在幕后的工作方式,实现这一点的唯一方法是在csv中添加一个额外的列来定义所需的顺序。BigQuery在后台洗牌数据以优化存储和查询速度,因此不可能依赖任何顺序


但是排序很容易,因此如果数据集包含相当于行数的数据,则始终可以通过简单的排序恢复行的任何排序。

这是什么原因?也许(最有可能)其他地方的解决方案-不是为了从csv中保留顺序?米哈伊尔,我需要以与输入相同的顺序交付聚合输出。我认为@matt_black给了你一个好主意-你需要在输入中定义某种顺序,以便你使用它对输出进行排序Hanks@matt_black,实际上我结束了这样做,没那么难,谢谢你的洞察力,它成功了。我想有这个功能的开箱即用时摄入,一个“保存顺序”复选框将是可怕的。