Я запустил запрос на сайте BigQuery, и он возвратил 201 строку. Я выполняю тот же запрос в скрипте Python, и он возвращает пустой набор данных. Но имена столбцов возвращаются правильно.
from google.cloud import bigquery
from google.oauth2 import service_account
from pandas import*
credentials = service_account.Credentials.from_service_account_file(
'service-acc-creds.json')
project_id = 'coral-silicon-237417'
client = bigquery.Client(credentials= credentials,project=project_id)
query = """
SELECT
*
FROM
'fh-bigquery.reddit.top25million'
WHERE REGEXP_CONTAINS(title, r'(?i)\bVonnegut\b') OR REGEXP_CONTAINS(title, r'(?i)\bKurt Vonnegut\b')
ORDER BY score DESC;"""
query_job = client.query(query)
results = query_job.result().to_dataframe()
print(results.to_string())
Экранирование в Python актуально здесь:
client.query("""SELECT COUNT(*) c FROM 'fh-bigquery.reddit.top25million'""")
2267097
client.query(
"""SELECT COUNT(*) c FROM 'fh-bigquery.reddit.top25million'
WHERE REGEXP_CONTAINS(title, r'(?i)\bVonnegut\b')"""
)
0
client.query(
r"""SELECT COUNT(*) c FROM 'fh-bigquery.reddit.top25million'
WHERE REGEXP_CONTAINS(title, r'(?i)\bVonnegut\b')"""
)
201
client.query(
"""SELECT COUNT(*) c FROM 'fh-bigquery.reddit.top25million'
WHERE REGEXP_CONTAINS(title, r'(?i)\\bVonnegut\\b')"""
)
201
У меня та же проблема. В запросе просто нечего убежать.
query_job = client.query(r"""
SELECT * FROM 'fulfillment-dwh-production.curated_data_shared.vendors' LIMIT 100""")
results = query_job.result()
df = results.to_dataframe()
print(df.to_string())
результат: пустой DataFrame
Понятия не имею, что я не прав.
results = query_job.result()
,errors
свойства будут заполнены в случае, если что-то пошло не так. Вы можете попробовать напечататьprint(results.errors)
чтобы проверить, правильно ли выполняется запрос.