2017-09-29 1 views
1

J'utilise des bibliothèques de clients Google Cloud pour Python here pour faire une requête SQL à BigQuery. Je veux être en mesure d'écrire les résultats de la requête dans un fichier csv qui inclut également les en-têtes des résultats de la requête.Comment obtenir les en-têtes du résultat de la requête à partir d'une requête asynchrone à l'aide du client BigQuery?

J'utilise l'extrait de code ci-dessous pour effectuer la requête asynchrone:

job = bigquery_client.run_async_query(job_name, sql_query) 
query_results = job.result() 
data = query_results.fetch_data() # returns an iterator to the query result data, this is successful 
schema = query_results.schema # returns() 
print(schema) 

j'ai pu récupérer les données de résultat de la requête. Mon plan pour extraire les en-têtes des résultats de la requête consistait à obtenir d'abord le schéma de la table des résultats de la requête. Cependant, quand j'ai essayé d'utiliser query_results.schema, il me renvoie un tuple vide (). De this documentation, il est mentionné que le schéma est None until set by server. Comment puis-je déclencher le serveur pour définir le schéma correctement?

Nous vous remercions de votre aide.

Remarque: Je n'ai eu aucun problème pour obtenir le query_result.schema si la requête est synchrone.

Répondre

0

D'accord, j'ai trouvé une méthode. Apparemment, j'ai besoin de recharger la table de destination du travail de requête asynchrone.

destination_table = query_job.destination 
destination_table.reload() 
schema = destination_table.schema # schema is reloaded correctly! 

Merci.