簡體   English   中英

如何在 Python 中設置架構以在 BigQuery 上使用 json 文件?

[英]How to set schema in Python to use a json file on BigQuery?

我正在尋找一種方式,如何使用 Python 中的 json 文件在 Big Query 上設置模式。 下面的文檔說我可以用Schema字段一一設置,但我想找出更有效的方法。 https://cloud.google.com/bigquery/docs/schemas

在這種情況下,Autodetect 會持懷疑態度。 如果你能幫助我,我將不勝感激。

您可以使用列/數據類型創建 JSON 文件,並使用以下代碼構建 BigQuery Schema。

JSON 文件(schema.json):

[
    {
        "name": "emp_id",
        "type": "INTEGER"
    },
    {
        "name": "emp_name",
        "type": "STRING"
    }
]

Python 代碼:

import json
from google.cloud import bigquery

bigquerySchema = []
with open('schema.json') as f:
    bigqueryColumns = json.load(f)
    for col in bigqueryColumns:
        bigquerySchema.append(bigquery.SchemaField(col['name'], col['type']))

print(bigquerySchema)

Soumendra Mishra 已經很有幫助,但這里有一個更通用的版本,可以選擇接受附加字段,例如modedescription

JSON 文件 (schema.json):

[
    {
        "name": "emp_id",
        "type": "INTEGER",
        "mode": "REQUIRED"
    },
    {
        "name": "emp_name",
        "type": "STRING",
        "description": "Description of this field"
    }
]

Python 代碼:

import json
from google.cloud import bigquery

table_schema = []
# open JSON file read only
with open('schema.json', 'r') as f:
    table_schema = json.load(f)
    for entry in table_schema:
        # rename key; bigquery.SchemaField expects `field` to be called `field_type`
        entry["field_type"] = entry.pop("type")
        # ** effectively provides data as argument:value pairs (e.g. name="emp_id")
        table_schema.append(bigquery.SchemaField(**entry))

暫無
暫無

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

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