首页 > 解决方案 > BigQuery 自定义函数(按位函数)问题

问题描述

我正在尝试创建一个执行一些科学对数数学的自定义函数,但我不理解错误。

在 postgreSQL 或大多数其他 SQL 和编程语言中,它就像这样简单:

acc = 10^(val/10)

在 BigQuery 中,当我创建 TEMP 函数和 SQL

   CREATE TEMP FUNCTION to_acc(x NUMERIC) AS (10^(x/10));
   SELECT val, to_acc(10) AS result

我收到以下错误:

> Bitwise operator ^ requires two integer/BYTES arguments of the same
> type, but saw DOUBLE and NUMERIC; failed to parse CREATE [TEMP]
> FUNCTION statement at [1:108]

所以按位运算符仅适用于整数/字节......?我们所有的数据都是浮点数...

这是 BigQuery 的限制还是有办法解决这个问题?

标签: google-bigquery

解决方案


据我所知,运算符 ^ 在 BigQuery 中的功能与在 PostgreSQL 中的功能不同。

虽然在 PostgreSQL 中它是幂运算符,但在 BigQuery 中它执行 XOR(实际上只适用于整数和字节)。根据您的用例描述,我相信您想要计算 10 的 (val/10) 次方。

作为一种解决方法,您可以尝试内置的标准 SQL数学函数


推荐阅读