BigQuery:数字数据类型:不能存储超过 19 位数字

BigQuery: Numeric DataType: Cannot store more that 19 digits

为什么 BigQuery 中具有 NUMERIC 数据类型的列无法存储此数字:12345678901234567890 [20 位数字]。

官方文档说-它可以存储精度为38位十进制数和9位小数位小数位的十进制值。

我在具有 NUMERIC 数据类型的列中尝试了以下操作:

这是bigQuery端的bug吗?我是否必须为每个大于 19 位的数字不必要地应用“.0”。


Link转官方文档: https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types


当我在数据类型 NUMERIC 的列中插入长度为 20 的数字时出现错误的屏幕截图。

如果您只使用 12345678901234567890 BigQUery,请将其视为 INT64 数据类型,因此会出错

您需要以某种方式告诉 BQ 引擎这不是整数而是浮点数或数字
最简单的方法是使用 12345678901234567890.0 - 在这种情况下,BQ 会将其视为 FLOAT64。如果你需要确保它是 NUMERIC 你可以例如显式地转换它 CAST(12345678901234567890.0 as NUMERIC)

另请参见下面的示例

#standardSQL
SELECT 
  12345678901234567890.0 float_value_a, 
  CAST(12345678901234567890.0 AS NUMERIC) numeric_value_b,
  CAST('12345678901234567890' AS NUMERIC) numeric_value_c, 
  CAST('12345678901234567890' AS FlOAT64) float_value_d

结果

Row float_value_a           numeric_value_b         numeric_value_c         float_value_d    
1   1.2345678901234567E19   12345678901234567890    12345678901234567890    1.2345678901234567E19