你如何以程序方式创建一个Google BigQuery架构来创建表格?

2024-04-25 08:33:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我们正在尝试在BigQuery中创建一个表。我们有一个创建模式的Google示例中的代码,但是指定模式的代码在元组中。在

代码如下:

table.schema = (
    bigquery.SchemaField('Name', 'STRING'),
    bigquery.SchemaField('Age', 'INTEGER'),
    bigquery.SchemaField('Weight', 'FLOAT'),
)

我们面临的问题是,我们在列表中有我们需要的头字段(即[名称]、[年龄]、[权重])-但据我们所知,元组是不可变的。在

因此,我们无法执行这样的代码,因为它会抛出一个不可变的对象错误:

^{pr2}$

当元组结构是不可变的时,我们如何从头列表创建表模式?如何创建对象中的所有字段?在


Tags: 代码name示例列表agestringschemagoogle
2条回答

新的Python BigQuery API从元组更改为列表,这意味着您现在可以使用以下代码以编程方式执行所要求的操作:

from google.cloud import bigquery
from google.cloud.bigquery.client import Client
service_account_file_path = "/auth/key.json" # your service account auth file file
client = bigquery.Client.from_service_account_json(service_account_file_path)

schema = []
for field_name in field_name_list:
    schema.append(bigquery.SchemaField(field_name, "STRING", mode="REQUIRED"))

table_id = "your_project_id.your_dataset_name.your_table_name"
table = bigquery.Table(table_id, schema=schema)
table = client.create_table(table)  

我想你只需要这个:

from google.cloud import bigquery
headers = [
   ('Name', 'STRING'), 
   ('Age', 'INTEGER'), 
   ('Weight', 'STRING'),
   ('any_thing_else', 'STRING'), ...
]
schema = map(lambda n: bigquery.SchemaField(*n), headers)
table.schema = tuple(schema)

相关问题 更多 >