R Studio导入BigQuery BIGNUMERIC类型数据报错如何修复
问题现象
从BigQuery向R环境导入含BIGNUMERIC类型字段的数据时,抛出如下错误:
Error in bq_parse(fields, data) : Unknown type BIGNUMERIC
修复方法
按优先级从高到低可选择以下方案解决:
升级
bigrquery依赖包到最新版本
该报错本质是旧版本bigrquery包未内置BIGNUMERIC类型的解析规则,升级到1.4.0及以上官方版本即可原生支持该类型读取,执行命令:install.packages("bigrquery")安装完成后重启R会话,重新运行数据导入代码即可正常读取。
查询阶段提前做类型转换
若受生产环境版本限制无法升级包,可以在拉取数据的BigQuery SQL语句中,提前把BIGNUMERIC字段转为已支持解析的类型:
对精度要求不高的场景可以直接转浮点数:SELECT *, CAST(target_bignumeric_field AS FLOAT64) AS target_bignumeric_field FROM `your_project.your_dataset.your_table`对精度要求极高、不希望出现浮点数精度损失的场景,可以先转为字符串,导入R后再用高精密数值处理包(比如
gmp、Rmpfr)做后续转换计算:SELECT *, CAST(target_bignumeric_field AS STRING) AS target_bignumeric_field FROM `your_project.your_dataset.your_table`临时补全类型解析映射
应急场景下不想改SQL、也没法升级包时,可以手动给bigrquery的命名空间补充BIGNUMERIC的类型映射规则,在导入数据前运行如下代码即可:# 注册BIGNUMERIC类型到bigrquery解析映射表 utils::assignInNamespace( "bq_types", c( utils::getFromNamespace("bq_types", "bigrquery"), c(BIGNUMERIC = "numeric") ), ns = "bigrquery" )该方法仅适合临时调试使用,长期使用建议升级官方包获得稳定兼容。
内容的提问来源于stack exchange,提问作者Dorian Darryl
相关产品推荐
相关产品推荐

