我正在使用Python Client Library V0.28开发BigQuery。我想将表查询结果插入流表(每天一个分区)。
我有2张桌子: - Table_A包含我的源数据 - 经过一些处理后,table_B将从table_A中丰富(table_B_20101001,table_B_20101002,...)。
我浏览了文档,但没有找到示例。有人可以帮助我吗?
非常感谢!
答案 0 :(得分:1)
根据您的描述,似乎您的table B
实际上并未进行分区,而是按后缀日期汇总。
您可以做的一件事是运行查询并将其设置为将结果保存到您想要的表中,如下所示:
import os
from google.cloud.bigquery import Client, job
os.environ['GOOGLE_APPLICATION_CREDENTIALS']='path/to/your/credentials.json'
config = job.QueryJobConfig()
config.write_disposition = 'WRITE_APPEND'
dataset = bc.dataset('name of dataset where table_B is located')
table = dataset.table('table_B_20101001')
config.destination = table
query = """select (make the data transformations you want) FROM table_A"""
query_job = bc.query(query, config)
此脚本查询源table_A
,进行所需的数据转换,并将结果保存到table_B_20101001
(相应更改)。
该操作会在那里附加结果,如果您要替换其内容,可以设置config.write_disposition = 'WRITE_TRUNCATE'
。
你说了一些关于流式传输到table_B
的事情,我认为你应该只使用这个选项,如果我提出的那个对你不够,因为这种方法会更昂贵,而且操作会花费更长的时间。
基本上,您必须使用docs中所述的bc.create_rows
方法,并将rows
设置为作业查询的查询结果。