web-dev-qa-db-fra.com

BigQuery - Où puis-je trouver le flux d'erreur?

J'ai téléchargé un fichier CSV contenant 300 000 lignes de GCS vers BigQuery et j'ai reçu l'erreur suivante:

 error_image

Où puis-je trouver le flux d'erreur?

J'ai modifié la configuration de la table de création pour autoriser 4 000 erreurs et cela a fonctionné. Il doit donc s'agir d'un problème avec les lignes 3894 du message, mais ce message d'erreur ne me dit pas beaucoup sur quelles lignes ni pourquoi.

Merci

11
Ary Jazz

J'ai enfin réussi à voir le flux d'erreur en exécutant la commande suivante dans le terminal:

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

Il retourne un JSON avec plus de détails . Dans mon cas, c'était:

"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

Vous devriez pouvoir cliquer sur Job History dans l'interface utilisateur de BigQuery, puis sur le travail de chargement ayant échoué. J'ai essayé de charger un fichier CSV invalide tout à l'heure, et les erreurs que je vois sont les suivantes:

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)

Le premier est juste un message générique indiquant l'échec, mais la deuxième erreur (du "flux d'erreur") est celle qui fournit le contexte pour l'échec, à savoir CSV table references column position 1, but line starting at position:0 contains only 1 columns.

Éditer: à partir d'un ID de travail, vous pouvez également utiliser la CLI de BigQuery pour afficher des informations complètes sur l'échec. Vous utiliseriez:

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

En utilisant le client python c'est

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

Après le reste des réponses, vous pouvez également voir ces informations dans l'outil de journalisation GCP (Stackdriver).

Mais il se peut que cela ne réponde pas à votre question. Il semble y avoir des erreurs détaillées (telles que celle trouvée par Elliot) et des erreurs plus imprécises. Ce qui ne vous donne aucune description indépendamment de l'interface utilisateur que vous utilisez pour l'explorer.

0
dinigo