BigQuery中的EXP()返回浮点错误

时间:2016-10-04 22:03:42

标签: sql google-bigquery

我有以下查询:

SELECT EXP(col) FROM `project.dataset.tablename`;

colFLOAT的位置。但是,我收到此错误:Error: Floating point error in function: EXP

我已尝试使用虚拟数据EXP(),它可以正常工作。例如:

SELECT EXP(col) FROM (
    SELECT 1. as col UNION ALL
    SELECT 2. as col);

为什么我会收到实际数据的浮点错误,我该如何解决?我尝试了EXP(CAST(col as FLOAT64))EXP(ROUND(col, n))之类的内容,但我仍然遇到同样的错误。

2 个答案:

答案 0 :(得分:5)

您可能正在使用大于709.7827的数字。

奇怪的数字,但即使在Fortran文档中:

  

EXP(X)

     

指数。

     

X必须小于或等于709.7827。

     

http://sc.tamu.edu/IBM.Tutorial/docs/Compilers/xlf_8.1/html/lr277.HTM

这是因为在^ 709.7827之后数字变得太大了。

答案 1 :(得分:1)

运行查询:

SELECT MAX(col)
FROM project.dataset.tablename;

可能很明显为什么会出现溢出错误。您可以使用case

解决此问题
SELECT (CASE WHEN col < ?? THEN EXP(col) END)
FROM project.dataset.tablename;

我可以建议一个值,但从您的应用程序中可能很明显 - 比如大于10或100的东西可能只是不合理。