google-bigquery - 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 的限制还是有办法解决这个问题?
解决方案
据我所知,运算符 ^ 在 BigQuery 中的功能与在 PostgreSQL 中的功能不同。
虽然在 PostgreSQL 中它是幂运算符,但在 BigQuery 中它执行 XOR(实际上只适用于整数和字节)。根据您的用例描述,我相信您想要计算 10 的 (val/10) 次方。
作为一种解决方法,您可以尝试内置的标准 SQL数学函数。
推荐阅读
- android - Flutter --launch 过去工作时现在挂起。如何删除设备并重新创建?
- java - Java Spring表单验证器检查输入字符串是否包含特殊字符
- symfony - 为什么第一次加载 symfony 后停止工作?
- python - 如何摆脱附加到超类实例列表的子类中的 eval?
- android - 使用带有输入字符串值的 webview
- jenkins - gitlab-plugin : Jenkins Pipeline 和 Gitlab 之间的 openConnection
- ios - 使用 UICollectionViewDelegateFlowLayout 后约束未更新
- windows - 在 Windows 服务器上使用 Windows 容器时,Azure IoTEdge 模块无法连接到 IoTHub
- css - Woocommerce 将特定的 add_action 放在特定的 div 中
- data-modeling - 维度表中的主键是否必须是事实表中主键的一部分?