【问题标题】:How do I upload a pandas dataframe containing lists to Google BigQuery array and structs format?如何将包含列表的 pandas 数据框上传到 Google BigQuery 数组和结构格式?
【发布时间】:2020-03-03 05:26:08
【问题描述】:

我想使用 pandas 将数据框推送到具有数组和结构的 BigQuery 表中

Bigquery 表如下所示: col_a (int), col_b (string), col_c.A (struct with Array Subtype0), col_c.B (struct with int subtype)

我有一个如下所示的数据框:

col_a(int 类型)、col_b(字符串)、col_c(对象列表)、col_d(int)。

有没有办法将 pandas 数据帧上传到带有结构和数组的 bigquery 表?

【问题讨论】:

    标签: python sql pandas google-cloud-platform google-bigquery


    【解决方案1】:

    是的,你可以这样做

    import google.cloud
    from google.cloud import bigquery
    
    
    def save_df_to_bq(args,dataframe,csv_name):
    
    
    
    print("Length of the incoming dataframe :-->" , len(dataframe))
    
    print(dataframe.iloc[[0]])
    
    client = bigquery.Client()
    
    dataset_ref = client.dataset(dataset_id,project_id)
    
     schema = [
         bigquery.SchemaField('col_a ', 'dttype'),
         bigquery.SchemaField('col_b ', 'dttype'),
         bigquery.SchemaField('col_c ', 'dttype'),
    
     ]      
    
    acc_table_id = str(random.randint(100000,100000*1000000))
    # table_ref = dataset_ref.table(acc_table_id)
    # table = bigquery.Table(table_ref, schema=schema)
    # table = client.create_table(table)  # API request
    # print("Table created..")
    
    # acc_table_id = str(random.randint(100000,100000*1000000))
    acc_table_ref = client.dataset(dataset_id,project_id).table(acc_table_id)
    job = client.load_table_from_dataframe(dataframe, acc_table_ref, location="US")
    job.result()
    

    【讨论】:

    • 不起作用。显然不允许在结构表中使用 pandas 数据框
    猜你喜欢
    • 2021-02-16
    • 2014-12-17
    • 1970-01-01
    • 2021-05-09
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    相关资源
    最近更新 更多