从Python列表到BigQuery重复字符串

时间:2019-04-11 09:14:15

标签: python google-bigquery

我正在使用Python应用程序处理Google BigQuery。

我有一个数据框,其中的字段包含列表,我们称其为“关键字”。我还有一个BigQuery表,其关键字字段为STRING和mode = REPEATED。

这是我的BigQuery表的架构:

My BigQuery table schema

SCHEMA = [
    bq.SchemaField("id", "STRING", mode="NULLABLE"),
    bq.SchemaField("fecha", "DATE", mode="NULLABLE"),
    bq.SchemaField("keywords", "STRING", mode="REPEATED")
]

这是我的代码:

import pandas as pd
from datetime import date
from google.cloud import bigquery as bq

df_dict = {
    "id": ["asdf173","qwer783","vcda619"],
    "fecha": [date(2019,1,15), date(2019,1,28), date(2019,2,12)],
    "keywords": [['a','b'], ['c','d','e'],['f']]
}

df = pd.DataFrame(df_dict)

client = bq.Client()
dataset = client.dataset(dataset_name)
table_ref = dataset.table(table_name)

client.load_table_from_dataframe(df, table_ref).result()

当我尝试将数据框上传到BigQuery表时,出现以下错误:

  

400提供的架构与表project-id:dataset-name.table-name不匹配。字段关键字的类型已从“ STRING”更改为“ RECORD”。

我该如何解决?

1 个答案:

答案 0 :(得分:1)

给出此错误消息:

  

400提供的架构与表project-id:dataset-name.table-name不匹配。字段关键字的类型已从“ STRING”更改为“ RECORD”。

以及您提供的表的结构

enter image description here

您会看到您正在尝试将ARRAY aka RECORD插入字符串字段。

您需要将字段关键字的类型从String更改为RECORD才能解决问题

enter image description here