我已按照此处列出的说明将Google工作表加载到大查询中。
https://cloud.google.com/blog/big-data/2016/05/bigquery-integrates-with-google-drive
我唯一感到困惑的是我必须在架构中添加字段。 所以,假设我在Google表格中有100列,所有这些都需要加载到BQ中。这是否意味着我必须逐个手动输入100个模式名称并选择它们的字段类型?我已经完成了一个,但我认为可以自动将Google表格中的所有内容加载到BQ中。
有人能指出我正确的方向吗?
谢谢!
答案 0 :(得分:1)
你必须提供架构!
那么如何使用常规的电子表格功能,只需在Sheets中的数据中生成列标题的模式。您可以先使用最常用的数据类型,然后手动“修复”具有不同类型的字段。这可以作为一个适合您的脚本完成,然后使用它来提供架构
另一方面 - 您可以查看Table definitions based on Google Sheets source files。它可能会有所帮助
答案 1 :(得分:0)
您可以为table definition文件创建Google Sheets(但您必须使用命令行界面)。默认情况下,它会尽最大努力从文件中auto detect表格的架构。
答案 2 :(得分:0)
import pygsheets
from pandas_gbq import gbq
def load_data_from_google_sheet_to_BQ():
spread_sheet_name = "spread_sheet_name"
worksheet_name = "worksheet_name"
table_id = "{0}.{1}".format('Dataset_name', 'table_name')
gs = pygsheets.authorize(service_file=service_file_name)
sh = gs.open(spread_sheet_name)
wks = sh.worksheet_by_title(worksheet_name)
gs_data = wks.get_as_df()
gs_data.COLUMN1 = gs_data.COLUMN1.astype(str)
gs_data.COLUMN2 = gs_data.COLUMN2.astype(str).str.encode('utf-8', errors='strict')
gs_data.COLUMN3 = gs_data.COLUMN3.astype(str).str.encode('utf-8', errors='strict')
gs_data.COLUMN4 = gs_data.COLUMN4.astype(str)
gs_data.COLUMN5 = gs_data.COLUMN5.astype(str)
gs_data.COLUMN6 = gs_data.COLUMN6.astype(str)
gs_data = gs_data[['COLUMN1', 'COLUMN2', 'COLUMN3', 'COLUMN4', 'COLUMN5', 'COLUMN6']]
gbq.to_gbq(gs_data, table_id, project_id, if_exists='replace')
load_data_from_google_sheet_to_BQ()