簡體   English   中英

您如何以編程方式創建Google BigQuery架構以創建表?

[英]How do you programmatically create a Google BigQuery schema to create a table?

我們正在嘗試在BigQuery中創建一個表。 我們從創建架構的Google示例中獲取代碼,但是指定架構的代碼在一個元組中。

代碼如下:

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

我們面臨的問題是,列表中有我們需要的標頭字段(即[“名稱”,“年齡”,“重量”])-但是據我們了解,元組是不可變的。

結果,我們無法執行這樣的代碼,因為它引發了一個不變的對象錯誤:

 for field in field_list:
   table.schema.append(field, ‘STRING’)

當元組結構不可變時,我們如何從標題列表中創建表模式? 我們如何在對象中創建所有字段?

我認為您只需要這樣:

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)

新的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)  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM