首页 > 解决方案 > Python 列表到 BigQuery 重复字符串

问题描述

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

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

这是我的 BigQuery 表的架构:

我的 BigQuery 表架构

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 提供的 Schema 与表 project-id:dataset-name.table-name 不匹配。字段关键字的类型已从 STRING 更改为 RECORD。

我该如何解决?

标签: pythongoogle-bigquery

解决方案


鉴于此错误消息:

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

以及您提供的表格的结构

在此处输入图像描述

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

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

在此处输入图像描述


推荐阅读