Google Bigquery SELECT count(*)在API上返回0,而在GBQ Console中查询Same



我正在Google Bigquery中检查NOAA的强风暴数据集,我想遍历这些表,以获得1960年至2022年间每年的风暴。有财产损失

from google.cloud import bigquery
client = bigquery.Client.from_service_account_json("secret.json")
for year in range(1960, 2023):
query = f"""
SELECT count(*) AS ct
FROM `bigquery-public-data.noaa_historic_severe_storms.storms_{year}`
WHERE damage_property > 0
"""
query_job = client.query(query).result()
for row in query_job:
print(row)

print语句输出如下结果:

Row((552,), {'ct': 0})
Row((620,), {'ct': 0})
Row((401,), {'ct': 0})

对于计数返回0,但是在GBQ控制台中执行相同的查询会得到正确的结果。如果我使用不同的查询:

query = f"""
SELECT *
FROM `bigquery-public-data.noaa_historic_severe_storms.storms_{year}`
WHERE damage_property > 0
"""

使用API,它工作得很好,并给我正确的结果,我在GBQ控制台中运行它得到相同的结果。为什么count(*)出乎意料地工作?我怎样才能得到正确的结果?

要访问查询结果,您必须在代码中使用row[0]row.ct:

query_job = client.query(query).result()
for row in query_job:
print(row[0])

相关内容

最新更新