Stiamo lavorando alla scrittura di un wrapper per bq.py e si riscontrano alcuni problemi con set di risultati superiori a 100k righe. Sembra che in passato questo ha funzionato bene (abbiamo avuto problemi correlati con Google BigQuery Incomplete Query Replies on Odd Attempts). Forse non sto capendo i limiti spiegati nello doc page?bq.py Non risultati cercapersone
Ad esempio:
#!/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
Rendimenti (notare ci sono 4 linee di formattazione):
Limit 99999 Returned 100003 Rows
Limit 100000 Returned 100004 Rows
Limit 100001 Returned 100004 Rows
Limit 100002 Returned 100004 Rows
Nel nostro involucro, si accede direttamente l'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', [])
Noi ci si aspetta di ottenere un token in questo caso, ma nessuno viene restituito.
Grazie per l'informazione, non vediamo l'ora di cambiare. Siamo a conoscenza dei client API e in origine li usavamo esclusivamente. Tuttavia, abbiamo riscontrato numerosi problemi, alcuni dovuti a cambiamenti API che ci hanno costretto a prendere in considerazione alternative. bq.py implementa quasi tutte le funzionalità di cui abbiamo bisogno e sono un grande fan del riutilizzo del codice testato quando possibile.Inoltre, il codice di flusso di autenticazione incorporato è molto più fluido di quello che avrei potuto ottenere :-) Per favore fateci sapere quando i cambiamenti sono in diretta. –
Hey Jacob, Fai un tentativo ora e fammi sapere se hai ancora un problema. – Eric
Si trattava di un cambio di backend, o dovrei fare qualcosa di diverso? Lo script di dimostrazione che ho dato sopra genera gli stessi risultati errati. Allo stesso modo, il nostro wrapper attorno al codice fallisce ancora per query simili. –