[英]How to get table schema from json file: parse_table_schema_from_json?
I am trying to get the table schema using parse_table_schema_from_json
from apache_beam.io.gcp.bigquery import parse_table_schema_from_json
from here 我正在尝试
from apache_beam.io.gcp.bigquery import parse_table_schema_from_json
使用parse_table_schema_from_json
获取表架构,从此处 from apache_beam.io.gcp.bigquery import parse_table_schema_from_json
Here is my code: 这是我的代码:
def getSchema(pathToJSON):
with open(pathToJSON) as data_file:
schema_data = json.dumps(json.load(data_file))
table_schema = parse_table_schema_from_json(schema_data)
# print(table_schema)
return table_schema
Here is the error I get: 这是我得到的错误:
Traceback (most recent call last):
File "test_get_schema.py", line 16, in <module>
getSchema("vauto_table_schema.json")
File "test_get_schema.py", line 13, in getSchema
table_schema = parse_table_schema_from_json(schema_data)
File "/home/usr/.local/lib/python2.7/site-packages/apache_beam/io/gcp/bigquery.py", line 269, in parse_table_schema_from_json
fields = [_parse_schema_field(f) for f in json_schema['fields']]
TypeError: list indices must be integers, not str
my json file looks like this: 我的json文件如下所示:
[
{
"name": "StockNumber",
"type": "INTEGER",
"mode": "NULLABLE"
},
{
"name": "Product",
"type": "STRING",
"mode": "NULLABLE"
}
]
What am I missing? 我想念什么?
You need dict instead of list. 您需要字典而不是列表。 Modify your function and schema file like below mentioned and try again
修改您的函数和架构文件,如下所述,然后重试
def getSchema(pathToJSON):
schema_data = json.dumps(json.load(open("mapping.json")))
table_schema = parse_table_schema_from_json(schema_data)
# print(table_schema)
return table_schema
your schema file should be 您的架构文件应为
{
"fields": [
{
"type": "INTEGER",
"name": "StockNumber",
"mode": "NULLABLE"
},
{
"type": "STRING",
"name": "Product",
"mode": "NULLABLE"
}
]
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.