2017-07-27 34 views
0

我正在使用Google Cloud客户端库将记录从BigQuery表导入到我的Python程序中。该表很大,记录按特定的顺序排列,以便出于算法原因我需要对它们进行流式处理。下面的代码返回一个无序生成表记录的迭代器。Google Cloud Python BigQuery库 - fetch_data无序返回记录

from google.cloud import bigquery 
from google.cloud.bigquery import SchemaField 

gcclient = bigquery.Client() 
dataset = gcclient.dataset("dataset_name") 
gcschema = [ 
      SchemaField('field1', 'STRING', mode = 'required'), 
      SchemaField('field2', 'STRING', mode = 'required'), 
      SchemaField('field3', 'STRING', mode = 'required'), 
      SchemaField('field4', 'STRING', mode = 'required'), 
      SchemaField('field5', 'STRING', mode = 'required') 
] 
gctable = dataset.table("table_name", gcschema) 
it = gctable.fetch_data() # Iterator is not in the order of table records 

有没有配置这个请求,以便记录将在BigQuery资料表的顺序返回的方式,或者是有另一种方式流排序记录逐一?

+1

如果您需要某行的特定顺序,则需要执行在特定列上使用'ORDER BY'的查询。 BigQuery对内部存储中的行重新排序以提高从表格中读取数据的效率。 –

回答

0

正如Elliott在评论中所说 - SQL表中的行没有特定的顺序,而不是查询数据时可以要求的顺序。

如果算法需要按任何特定顺序排序的数据,则该表需要有一列用于按照所需顺序获取数据。