BigQuery 是否支持 ANSI SQL 2011 标准中定义的 NUMERIC 和 DECIMAL 数据类型?

osi*_*pov 4 google-bigquery

许多应用程序,包括那些处理存储有关货币、货币和其他金融信息的数据的应用程序,都依赖于固定精度的十进制数据类型。在 SQL 中,它们存储在具有 NUMERIC 或 DECIMAL 类型的列中。

是否有支持固定精度小数的 BigQuery 数据类型?

Ell*_*ard 5

BigQuery 支持NUMERIC数据类型,在撰写本文时该数据类型处于测试阶段。它的总精度为 38 位,小数精度为 9 位。您可以在精度很重要的场景中使用它,例如求货币值的总和或平均值。例如:

WITH Transactions AS (
  SELECT DATE '2018-05-15' AS transaction_date, NUMERIC '12.34' AS transaction_amount UNION ALL
  SELECT DATE '2018-05-01', NUMERIC '100.11' UNION ALL
  SELECT DATE '2018-05-06', NUMERIC '54.00' UNION ALL
  SELECT DATE '2018-05-02', NUMERIC '999.99' UNION ALL
  SELECT DATE '2018-05-03', NUMERIC '1234.56' UNION ALL
  SELECT DATE '2018-05-04', NUMERIC '99.00'
)
SELECT
  SUM(transaction_amount) AS total_sales,
  ROUND(AVG(transaction_amount), 2) AS average_sale,
  ARRAY_AGG(
    STRUCT(transaction_date AS date, transaction_amount AS amount)
    ORDER BY transaction_amount DESC LIMIT 3
  ) AS top_sales
FROM Transactions;
Run Code Online (Sandbox Code Playgroud)