gpt4 book ai didi

google-bigquery - 使用自动检测加载数据时出现 "Invalid schema update"错误

转载 作者:行者123 更新时间:2023-12-03 16:52:24 25 4
gpt4 key购买 nike

假设我有一个表,其中有一个名为“version”的字段,它是一个字符串。当我尝试使用自动检测将数据加载到表中时,值类似于 "1.1""1" ,自动检测功能将这些值分别推断为浮点型或整数型。

data1.json 例子:

{ "version": "1.11.0" }
bq load输出:
$ bq load --autodetect --schema_update_option=ALLOW_FIELD_ADDITION --source_format=NEWLINE_DELIMITED_JSON temp_test.temp_table ./data1.json
Upload complete.
Waiting on bqjob_ZZZ ... (1s) Current status: DONE

data2.json 例子:
{ "version": "1.11" }
bq load输出:
$ bq load --autodetect --schema_update_option=ALLOW_FIELD_ADDITION --source_format=NEWLINE_DELIMITED_JSON temp_test.temp_table ./data2.json
Upload complete.
Waiting on bqjob_ZZZ ... (0s) Current status: DONE

BigQuery error in load operation: Error processing job 'YYY:bqjob_ZZZ': Invalid schema update. Field version has changed type from STRING to FLOAT

data3.json 例子:
{ "version": "1" }
bq load输出:
$ bq load --autodetect --schema_update_option=ALLOW_FIELD_ADDITION --source_format=NEWLINE_DELIMITED_JSON temp_test.temp_table ./data3.json
Upload complete.
Waiting on bqjob_ZZZ ... (0s) Current status: DONE

BigQuery error in load operation: Error processing job 'YYY:bqjob_ZZZ': Invalid schema update. Field version has changed type from STRING to INTEGER

不会发生此问题的情况是,当您在同一个文件中有另一个 JSON 时,该 JSON 的值被正确推断为字符串(如 Bigquery autoconverting fields in data 问题中所示):
{ "version": "1.12" }
{ "version": "1.12.0" }

在上面列出的问题中,有一个答案表明已将修复程序推送到生产中,但看起来该错误又回来了。有没有办法/解决方法来防止这种情况?

最佳答案

看起来这里令人困惑的部分是“1.12”应该被检测为字符串还是浮点数。 BigQuery 选择检测为 float 。在 BigQuery 中引入自动检测之前,BigQuery 允许用户以字符串格式加载浮点值。这在 CSV/JSON 格式中很常见。因此,当引入自动检测时,它保持了这种行为。自动检测将最多扫描 100 行以检测类型。如果所有 100 行的数据都类似于“1.12”,那么这个字段很可能是一个浮点值。如果行之一的值为“1.12.0”,那么 BigQuery 将检测类型为字符串,正如您所观察到的。

关于google-bigquery - 使用自动检测加载数据时出现 "Invalid schema update"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49563734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com