预期类型“_SpecialForm[str]”,得到的是 'str'

Expected type '_SpecialForm[str]', got 'str' instead

我正在尝试创建一个 BQ table 架构,如 page

所示

但是我得到所有 mode="REQUIRED"

的编译错误

除了 bq 模块,我没有看到任何特别需要导入的东西。

Expected type '_SpecialForm[str]', got 'str' instead 

代码:

    bqServiceWrapper.create_table(_ADS_TO_REMOVE_TABLE_NAME,
                                  [
                                      bigquery.SchemaField("add_id", "STRING", mode="REQUIRED"),
                                      bigquery.SchemaField("timestamp_str", "TIMESTAMP", mode="REQUIRED"),
                                      bigquery.SchemaField("timestamp", "TIMESTAMP", mode="REQUIRED")
                                  ])

顺便说一句,python BQ 库是否允许 creating a table without a schema(就像 Java 一样?)。如果是这样 - 如何将类型隐含为 "TIMESTAMP" 而不是 "STRING"

您的代码中似乎有一个额外的 mode=”REQUIRED”。此外,您的代码没有创建文档 table = bigquery.Table(table_id, schema=schema) 中提到的 table 。按如下方式重写您的代码:

from google.cloud import bigquery

# Construct a BigQuery client object.
client = bigquery.Client()


client.create_table(bigquery.Table("ProjectID.Dataset.Table", schema= [
                                   bigquery.SchemaField("add_id", "STRING", mode="REQUIRED"),
                                   bigquery.SchemaField("timestamp_str", "TIMESTAMP", mode="REQUIRED"),
                                    bigquery.SchemaField("timestamp", "TIMESTAMP", mode="REQUIRED")
                                ]))

这会在 BigQuery 中创建具有所需架构的 table:

要使用 Python 客户端库创建无模式 table,您可以简单地 运行 上面没有模式的代码:client.create_table(bigquery.Table("ProjectID.Dataset.Table")) 或直接 client.create_table("ProjectID.Dataset.Table") . 但是如果我们正在创建一个无模式 table 我们需要通过自动检测或手动定义模式,然后我们才能向它添加数据。假设您正在尝试将 CSV 文件中的数据加载到具有自动检测架构的空 table 中,您需要按照此 doc.[=17= 中指定的支持格式获取时间戳数据]