Je fais un micro-cours sur Kaggle sur lequel deux blocs apparemment identiques (à l'exception de l'indentation) produisent des résultats différents.
1.
answers_query = """ SELECT a.id, a.body, a.owner_user_id FROM `bigquery-public-data.stackoverflow.posts_questions` AS q INNER JOIN `bigquery-public-data.stackoverflow.posts_answers` AS a ON q.id = a.parent_id WHERE q.tags LIKE '%bigquery%' """
En exécutant ce code, j'obtiens l'erreur suivante:
400 GET https://dp.kaggle.net/bigquery/v2/projects/kaggle-161607/queries/fdc91d96-2162-4e88-895e-7b0e2ffc377e?maxResults=0&location=US : limite de requête dépassée pour les octets facturés: 10000000000. 25131220992 ou supérieur requis.
Cependant, lorsque je remplace simplement ma answers_query
comme suit, il n'y a pas d'erreur:
answers_query = """ SELECT a.id, a.body, a.owner_user_id FROM `bigquery-public-data.stackoverflow.posts_questions` AS q INNER JOIN `bigquery-public-data.stackoverflow.posts_answers` AS a ON q.id = a.parent_id WHERE q.tags LIKE '%bigquery%' """ # Set up the query safe_config = bigquery.QueryJobConfig(maximum_bytes_billed=10**10) answers_query_job = client.query(answers_query, job_config = safe_config) # Your code goes here # API request - run the query, and return a pandas DataFrame answers_results = answers_query_job.to_dataframe() # Your code goes here # Preview results print(answers_results.head()) # Check your answer q_4.check()
Il semble qu'une indentation différente se produise résultats différents. Je suis extrêmement nouveau dans SQL donc je ne sais pas si l'indentation devrait avoir de l'importance. D'après googler et autres réponses au débordement de pile, il semble que l'indentation est une question de lisibilité et qu'elle ne devrait pas changer les choses.
3 Réponses :
L'indentation n'a certainement pas d'importance. Comme d'autres l'ont laissé entendre, la première requête sera probablement la plus lente car les données sont lues à partir du disque et mises en cache. Les requêtes ultérieures sur les mêmes données devraient être plus rapides et seront alors dans la limite qui a causé l'erreur initiale.
J'ai également eu un problème similaire sur Kaggle.com. L'éditeur en ligne de Kaggle.com interprète la syntaxe à sa manière. Parfois, l'interpréteur de kaggle est mal interprété. essentiellement kaggle ide principalement ciblé pour prendre en charge python. c'est pourquoi l'indentation temporelle est importante dans l'IDE en ligne de kaggle
L'indentation n'a pas d'importance car le système la lit quel que soit l'espace.
L'indentation ne devrait pas avoir d'importance. Que se passe-t-il si vous revenez à l'original maintenant? Je soupçonne que BigQuery effectue peut-être une mise en cache ou quelque chose suite à l'échec de la tentative? Très étrange.
Salut @Frank, merci d'avoir commenté. J'ai redémarré le noyau et essayé à nouveau, et j'ai obtenu les mêmes résultats: le premier déclenche une erreur, le deuxième passe.
D'accord, mais que se passe-t-il si vous exécutez le premier, puis le second, puis à nouveau le premier? Ou redémarrer, ensuite, puis d'abord?
Même résultat. 1ère déclenche une erreur, 2ème passe, 1ère déclenche une erreur.
J'ai copié et collé le code à partir d'ici pour m'assurer qu'il n'y avait pas de fautes de frappe. Même résultat. Je ne sais pas pourquoi cela se produit.
Ceci est bizarre. Vous pouvez le signaler auprès de Google . Ce ne serait pas la première fois que leurs affaires ont des problèmes.
kaggle.com/learn-forum/100405 ? PS S'il vous plaît avant d'envisager de publier, lisez votre manuel et / ou manuel et google tout message d'erreur ou de nombreuses phrases claires, concises et précises de votre question / problème / objectif, avec et sans vos chaînes / noms et site particuliers: stackoverflow.com & tags; lire de nombreuses réponses. Si vous postez une question, utilisez un seul libellé comme titre. Reflétez vos recherches. Voir Comment demander et les textes de la flèche de vote.