如何使用gsutil写一个查询到表?

问题描述 投票:0回答:1

我目前正在使用python和pandas构建查询,将结果转换为pandas dataframe,然后将dataframe写回表。要跳过下载和上传步骤,我想我应该使用gsutil执行查询并指示它将结果写入表。

我正在使用的查询是:

SELECT id, weight, net_weight
FROM `body_table-1345.bodies.weights
WHERE birthdate >= '2017-01-01 00:00:00'

我想把结果写到名为body_table-1345.bodies.eligible的表格中。

我当前的代码使用pandas.DataFrame.read_gbqpandas.DataFrame.to_gbq,但它需要太长时间,我认为这样做是错误的。一旦我在命令行中执行了正确的操作(使用gsutil),我将把它包装在python代码中并使用os.system执行它。

如何告诉gsutil自动检测SCHEMA并将结果发送到表格?

python pandas google-bigquery gsutil
1个回答
2
投票

而不是使用Python作为os命令的包装,我建议使用官方Google Cloud Python API。您可以非常轻松地执行所有这些步骤,例如:

import google.cloud.bigquery as bq
client = bq.Client.from_service_account_json('path/to/credentials.json')

table = client.dataset("bodies").table("eligible")

query_config = bq.QueryJobConfig()
query_config.destination = table
query = """
    SELECT id, weight, net_weight
    FROM `body_table-1345.bodies.weights
    WHERE birthdate >= '2017-01-01 00:00:00'
    """
job = client.query(query, job_config=query_config)

您可以在official docs中找到有关如何使用API​​执行这些操作的其他几个示例。

© www.soinside.com 2019 - 2024. All rights reserved.