我正在尝试使用 python 下载 BQ 表,如下所示: 从 google.cloud 导入 bigquery
client = bigquery.Client()
SQL_QUERY = """
SELECT *
FROM TABLE
"""
df = client.query(SQL_QUERY).to_dataframe()
我在回溯中收到以下错误。看起来,google-cloud-sdk 首先将表转换为 JSON 格式,然后转储为 CSV。
converter = _CELLDATA_FROM_JSON[field.field_type]
KeyError: 'NUMERIC'
我有两个问题:
如果您明确提及列名称,您的查询会变得更具可读性。
假设您的表格有 3 列(
a
、b
和 c
)。如果您想将它们转换为浮点数,您只需将查询修改为:
SQL_QUERY = """
SELECT
cast(a as float64) as a,
cast(b as float64) as b,
cast(c as float64) as c
FROM TABLE
"""
我知道这是一个旧线程,但无论如何还是想回答。 您可以立即执行。
EXECUTE IMMEDIATE(
SELECT
'''SELECT '''||STRING_AGG('cast(' || column_name|| ' as string) as '|| column_name, ", ") ||''' from Dataset.Table_Name'''
FROM (
SELECT
column_name
FROM
`Project_Name.Dataset.INFORMATION_SCHEMA.COLUMNS`
WHERE
table_name = 'Table_Name') )