bq.pyのラッパーを作成していますが、結果セットが100k行を超える場合に問題があります。これはこれまでうまくいきました(私たちはGoogle BigQuery Incomplete Query Replies on Odd Attemptsと関連する問題を抱えていました)。おそらく私はdoc pageで説明されている限界を理解していないでしょうか?例えばbq.pyページング結果がありません
:
#!/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
利回り(書式設定の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', [])
私たちは、この場合トークンを取得することを期待しますが、返されるものはありません。
情報をお寄せいただきありがとうございます。我々は変更を楽しみにしています。私たちはAPIクライアントを認識しており、もともとそれを独占的に使用していました。しかし、いくつかの問題に遭遇しました。そのいくつかは、APIの変更によっていくつかの問題を抱えていました。 bq.pyは必要な機能をほとんどすべて実装しています。可能な限り、テストされたコードを再利用することを熱狂しています。また、組み込みの認証フローコードは、私が思いついたよりもはるかにスムーズです。 変更が生存しているときにお知らせください。 –
Hey Jacob、 問題がまだ解決していれば、今すぐ撮影してお知らせください。 – Eric
これはバックエンドの変更ですか、別の何かをする必要がありますか?私が上で与えたデモンストレーションスクリプトは、同じ不正確な結果を生成する。同様に、コードのラッパーも同様のクエリで失敗します。 –