将Google表格加载到大查询中

时间:2016-11-16 18:46:53

标签: google-sheets google-bigquery

我已按照此处列出的说明将Google工作表加载到大查询中。

https://cloud.google.com/blog/big-data/2016/05/bigquery-integrates-with-google-drive

我唯一感到困惑的是我必须在架构中添加字段。 所以,假设我在Google表格中有100列,所有这些都需要加载到BQ中。这是否意味着我必须逐个手动输入100个模式名称并选择它们的字段类型?我已经完成了一个,但我认为可以自动将Google表格中的所有内容加载到BQ中。

有人能指出我正确的方向吗?

谢谢!

3 个答案:

答案 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()