BigQuery:数字数据类型:不能存储超过 19 位数字
BigQuery: Numeric DataType: Cannot store more that 19 digits
为什么 BigQuery 中具有 NUMERIC 数据类型的列无法存储此数字:12345678901234567890 [20 位数字]。
官方文档说-它可以存储精度为38位十进制数和9位小数位小数位的十进制值。
我在具有 NUMERIC 数据类型的列中尝试了以下操作:
- 1234567890123456789 - 这有效。
- 12345678901234567890 - 这失败了。
- 12345678901234567890.0 - 这有效。
这是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
为什么 BigQuery 中具有 NUMERIC 数据类型的列无法存储此数字:12345678901234567890 [20 位数字]。
官方文档说-它可以存储精度为38位十进制数和9位小数位小数位的十进制值。
我在具有 NUMERIC 数据类型的列中尝试了以下操作:
- 1234567890123456789 - 这有效。
- 12345678901234567890 - 这失败了。
- 12345678901234567890.0 - 这有效。
这是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