現在、 bq.pyのラッパーの作成に取り組んでおり、10万行を超える結果セットで問題が発生しています。過去にはこれでうまくいったようです ( Google BigQuery Incomplete Query Replies on Odd Attempts に関連する問題がありました)。おそらく、ドキュメントページで説明されている制限を理解していないのでしょうか?
例えば:
#!/bin/bash
for i in `seq 99999 100002`;
do
bq query -q --nouse_cache --max_rows 99999999 "SELECT id, FROM [publicdata:samples.wikipedia] LIMIT $i" > $i.txt
j=$(cat $i.txt | wc -l)
echo "Limit $i Returned $j Rows"
done
Yields (4 行のフォーマットがあることに注意してください):
Limit 99999 Returned 100003 Rows
Limit 100000 Returned 100004 Rows
Limit 100001 Returned 100004 Rows
Limit 100002 Returned 100004 Rows
ラッパーでは、API に直接アクセスします。
while row_count < total_rows:
data = client.apiclient.tabledata().list(maxResults=total_rows - row_count,
pageToken=page_token,
**table_dict).execute()
# If there are more results than will fit on a page,
# you will recieve a token for the next page
page_token = data.get('pageToken', None)
# How many rows are there across all pages?
total_rows = min(total_rows, int(data['totalRows'])) # Changed to use get(data[rows],0)
raw_page = data.get('rows', [])
この場合、トークンを取得することが期待されますが、何も返されません。