大查询表中整体的加载顺序

ala*_*oot 1 jobs google-bigquery

我有一些示例数据已加载到 Google BigQueries 中。我一直以 ndjson 格式导入数据。如果我将所有数据加载到一个文件中,我会看到它们在表的预览选项卡中以不同的顺序显示,而不是按顺序一次导入一行 ndjson 时的顺序。

依次导入时,我会等到看到以下输出:

Waiting on bqjob_XXXX ... (2s) Current status: RUNNING
Waiting on bqjob_XXXX ... (2s) Current status: DONE 
Run Code Online (Sandbox Code Playgroud)

行显示的顺序似乎与我附加它们的顺序相匹配,因为导入它们的作业似乎在我继续下一个之前完成。但是,当将它们全部加载到一个文件中时,它们的显示顺序与我的数据文件中的顺序不同。

那么为什么批量加载时数据条目会以不同的顺序显示呢?数据条目如何排队等待加载以及它们如何索引到表中?

Mik*_*ant 5

BigQuery 没有索引的概念。BigQuery 表中的数据没有可以依赖的特定顺序。如果您需要从 BigQuery 中获取有序数据,则需要在查询中使用显式 ORDER BY - 顺便说一句,对于大型结果,非常不建议这样做,因为它会增加资源成本,并可能最终导致资源超出错误。

BigQuery 内部存储可以在内部“洗牌”数据行,以获得最佳/最优的查询性能。再说一遍 - BigQuery 表中不存在数据的物理顺序之类的东西

文档中的官方语言是这样的- 不保证压缩或未压缩文件的行排序。