python - BigQuery 加载作业在 JSON 中的布尔数据类型字段上失败
问题描述
当我包含布尔数据类型列时,我在将 NDJSON 文件加载到 Google BigQuery 时收到“无效数据文件”错误。如果我从架构和源文件中删除这些列,则作业会成功运行。我正在通过 python 脚本使用 load_table_from_uri 进程,但我也在 gui 中尝试过它,它也是同样的问题。布尔字段的 json 文件看起来正确(附加)。我还尝试了遗留和当前的布尔数据类型(BOOL vrs BOOLEAN)我错过了什么。
dataset_id = 'dev'
table_id = 'DIM_EMP'
table_ref = bqClient.dataset(dataset_id).table(table_id)
job_config = bigquery.LoadJobConfig()
job_config.schema = [
bigquery.SchemaField('personId', 'INT64'),
bigquery.SchemaField('personNumber', 'STRING'),
bigquery.SchemaField('firstName', 'STRING'),
bigquery.SchemaField('middleName', 'STRING'),
bigquery.SchemaField('lastName', 'STRING'),
bigquery.SchemaField('userName', 'STRING'),
bigquery.SchemaField('accessProfile', 'STRING'),
bigquery.SchemaField('notificationProfile', 'STRING'),
bigquery.SchemaField('preferenceProfile', 'STRING'),
bigquery.SchemaField('supervisorPersonId', 'INT64'),
bigquery.SchemaField('hireDate', 'DATE'),
bigquery.SchemaField('processEmployeeProfile', 'STRING'),
bigquery.SchemaField('logonProfile', 'STRING'),
bigquery.SchemaField('birthDate', 'DATE'),
bigquery.SchemaField('delegateProfile', 'STRING'),
**bigquery.SchemaField('isManager','BOOLEAN')
bigquery.SchemaField('isEmployee','BOOL'),**
bigquery.SchemaField('localeProfile', 'STRING')
]
job_config.write_disposition = bigquery.WriteDisposition.WRITE_TRUNCATE
job_config.source_format = bigquery.SourceFormat.NEWLINE_DELIMITED_JSON
uri = 'gs://'+project+'-stage/getPeopleDetails/DIMEMP*.ndjson'
load_job = bqClient.load_table_from_uri(
uri,
table_ref,
job_config=job_config) # API request
load_job.result()
解决方案
要将 NDJSON 文件加载到 BigQuery 中,布尔值 true 和 false 应放在引号之间。如果列仅包含“true”或“false”,BigQuery 会自动将其类型设置为布尔值。
推荐阅读
- reactjs - 如何使用 React Hooks 和 Context API 正确地将来自 useEffect 内部调用的多个端点的数据添加到状态对象?
- javascript - 延迟加载资源的缓存未命中(使用动态导入)
- go - 如何使用 Golang 将多 JSON API 响应保存到 MongoDB
- django - 为部署在 DigitalOcean 上的 Django 应用程序使用域名
- javascript - 根据多个下拉选择显示 Div
- reactjs - Spring Boot:端点被 OPTIONS 请求触发
- java - java中的std::wstring sFile
- hive - 如何在最后一天之前的所有日子里标记用户
- unity3d - 未捕获的异常:jsStackTrace 中的 abort(80) - Airconsole Unity
- php - 如何在 HTML 代码中分配 php 变量?