![](/img/trans.png)
[英]How to query json with python UDF or json_extract in BigQuery?
[英]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 已經很有幫助,但這里有一個更通用的版本,可以選擇接受附加字段,例如mode
或description
:
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.