web-dev-qa-db-de.com

BigQuery - Wo finde ich den Fehlerstrom?

Ich habe eine CSV-Datei mit 300.000 Zeilen von GCS zu BigQuery hochgeladen und die folgende Fehlermeldung erhalten:

 error_image

Wo finde ich den Fehlerstrom?

Ich habe die Tabelle zum Erstellen von Tabellen geändert, um 4000 Fehler zuzulassen, und es hat funktioniert. Es muss also ein Problem mit den 3894-Zeilen in der Nachricht sein. Diese Fehlermeldung sagt mir jedoch nicht viel darüber aus, welche Zeilen oder warum.

Vielen Dank

11
Ary Jazz

Ich habe es endlich geschafft, den Fehlerstrom zu sehen, indem ich den folgenden Befehl im Terminal ausführte:

bq --format=prettyjson show -j <JobID>

Es gibt eine JSON mit mehr Details zurück ... In meinem Fall war es:

"message": "Error while reading data, error message: Could not parse '16.66666666666667' as int for field Course_Percentage (position 46) starting at location 1717164"
19
Ary Jazz

Sie sollten in der BigQuery-Benutzeroberfläche auf Job History klicken können und dann auf den fehlgeschlagenen Ladejob klicken. Ich habe gerade versucht, eine ungültige CSV-Datei zu laden. Folgende Fehler werden angezeigt:

Errors:
Error while reading data, error message: CSV table encountered too many errors, giving up. Rows: 1; errors: 1. Please look into the error stream for more details. (error code: invalid)
Error while reading data, error message: CSV table references column position 1, but line starting at position:0 contains only 1 columns. (error code: invalid)

Die erste ist nur eine allgemeine Nachricht, die den Fehler anzeigt, aber der zweite Fehler (vom "Fehlerstrom") ist der, der mehr Kontext für den Fehler bereitstellt, nämlich CSV table references column position 1, but line starting at position:0 contains only 1 columns.

Bearbeiten: Mit einer Job-ID können Sie auch die BigQuery-CLI verwenden, um vollständige Informationen zum Fehler anzuzeigen. Sie würden verwenden:

bq --format=prettyjson show -j <job ID>
5

Mit Python-Client ist es so

from google.api_core.exceptions import BadRequest

job = client.load_table_from_file(*args, **kwargs)
try:
    result = job.result()
except BadRequest as err:

    for er in err.errors:
        print(err)
    raise
    # or alternatively
    # job.errors
0
Robin Nemeth

Nach den restlichen Antworten können Sie diese Informationen auch im GCP-Protokolltool (Stackdriver) sehen.

Es kann jedoch vorkommen, dass Ihre Frage dadurch nicht beantwortet wird. Es scheint, als gäbe es detaillierte Fehler (wie die, die Elliot gefunden hat) und ungenauere. Das gibt Ihnen keine Beschreibung unabhängig von der Benutzeroberfläche, mit der Sie sie erkunden.

0
dinigo