当前位置: 首页 > 知识库问答 >
问题:

使用python将BigQuery表数据导出到具有where子句的Google云存储

殳毅
2023-03-14

我想把表数据从BigQuery导出到Google云存储。问题是,我需要从date1到date2的数据,而不是整个表的数据。

extract_job = client.extract_table(
    table_ref,
    destination_uri,
    # Location must match that of the source table.
    location='US')  # API request
extract_job.result()  

这是我在谷歌云帮助上发现的。没有使用where子句添加查询或限制数据的空间。

共有1个答案

徐高懿
2023-03-14

不幸的是,这将是两个步骤的过程。首先需要构建结果表,然后导出结果。从成本角度来看,影响应该是最小的--您将为temp表使用的存储支付费用,但成本是每月每GB 0.02美元--因此,如果您设法在1小时内完成任务--成本将是每GB 0.000027美元

job_config = bigquery.QueryJobConfig()
gcs_filename = 'file_*.gzip'

table_ref = client.dataset(dataset_id).table('my_temp_table')
job_config.destination = table_ref

job_config.write_disposition = bigquery.WriteDisposition.WRITE_TRUNCATE

# Start the query, passing in the extra configuration.
query_job = client.query(
    """#standardSql
    select * from `project.dataset.table` where <your_condition> ;""",
    location='US',
    job_config=job_config)

while not query_job.done():
    time.sleep(1)

#check if table successfully written
print("query completed")
job_config = bigquery.ExtractJobConfig()
job_config.compression = bigquery.Compression.GZIP
job_config.destination_format = (
    bigquery.DestinationFormat.CSV)
job_config.print_header = False

destination_uri = 'gs://{}/{}'.format(bucket_name, gcs_filename)

extract_job = client.extract_table(
    table_ref,
    destination_uri,
    job_config=job_config,
    location='US')  # API request
extract_job.result()
print("extract completed")
 类似资料:
  • 我正试图从控制台/命令行将一个表从big query导出到google cloud storage。控制台作业运行了几分钟,并在没有任何错误代码的情况下出错,命令行作业在运行一段时间后也会出现以下错误: 提取操作中的BigQuery错误:错误处理作业“数据流-实验:BQJOB_R308FF0F73D1820A6_00000157F77E8AB9_1”:后端错误。作业中止。 上面给出了命令行的作业i

  • 问题内容: 我正在尝试通过API将bigquery数据导出到Google云存储桶。我从这里https://cloud.google.com/bigquery/docs/exporting- data 修改了代码段 由于数据是嵌套的,因此无法与“ JSON”交换格式,因此无法将其与“ gs://mybucket/export_*.json”导出为CSV和gcsUrl。但是错误消息告诉我以下问题: 有

  • 我需要从Google Cloud Storage(GCS->Temp Table->Main table)中加载100个表到BigQuery。我创建了一个python进程,将数据加载到BigQuery中,并在AppEngine中进行调度。因为AppEngine最多有10min的超时时间。我已经在异步模式下提交了作业,并在稍后的时间点检查了作业状态。由于我有100个表,需要创建一个监控系统来检查作业

  • 通过itertuples,我需要将位于excel列(“G7”、“G8”)两行中的两个数据导出到google工作表的两列中。我该怎么做? 最后一行不会更新google表单的第3列

  • 当将表导出到云存储时,在2017-07-08得到以下错误。 拒绝访问:BigQuery BigQuery:写数据时权限被拒绝 JOBID:Alert-Basis-89415:BQUIJOB_6ADFD86E_15D2DE5CE1B

  • 问题内容: 案件: 如何从相等的地方更新数据? 问题: 当我运行以下更新语句时,它将更新中的所有记录(即使中的字段不存在)。 我如何使用的多个更新表的语法,在仅更新记录只有在存在于和平等的吗? 提前致谢。 问题答案: 这是with join in 的正确语法 SQLFiddle演示