Google bigquery 用浮点数据点计算大查询中的余数

Google bigquery 用浮点数据点计算大查询中的余数,google-bigquery,hiveql,Google Bigquery,Hiveql,配置单元查询语言有一个PMOD函数,可用于计算余数。这个函数可以很好地处理整数和double。例如,当4.7除以2时,计算余数 选择PMOD(4.7,2) 在配置单元查询语言中,此查询的答案为0.7 Google big query具有MOD函数来计算余数。但是这个函数只适用于整数 选择MOD(4.7,2)在google大查询中不起作用 在大查询中可以将4.7转换为INT64。然后MOD功能将工作,但答案将为1,而不是0.7 在google big query中使用浮点数据点计算余数的任何帮助都

配置单元查询语言有一个PMOD函数,可用于计算余数。这个函数可以很好地处理整数和double。例如,当4.7除以2时,计算余数

选择PMOD(4.7,2)

在配置单元查询语言中,此查询的答案为0.7

Google big query具有MOD函数来计算余数。但是这个函数只适用于整数

选择MOD(4.7,2)在google大查询中不起作用

在大查询中可以将4.7转换为INT64。然后MOD功能将工作,但答案将为1,而不是0.7


在google big query中使用浮点数据点计算余数的任何帮助都将非常有用。

计算浮点值的余数是一个有趣的概念,就我个人而言,到目前为止我从未听说过。
根据您的描述,基本上都是查找整数部分的余数,然后将小数部分相加到结果中?
如果是这样的话,可以使用以下表达式(在您的示例中):
MOD(FLOOR(4.7),2)+4.7-FLOOR(4.7)
来模拟它,因为整数部分是
FLOOR(4.7)
,小数部分是
4.7-FLOOR(4.7)


UPD。这个假设是非负浮点值,如果是负值,小数部分显然是
value-CEIL(value)
。使用
value-TRUNC(value)
可以概括两种情况下的分数部分查找,但我不太确定
MOD()
对负值的结果,所以我将把它留给您

谢谢Mangusta。我对你的代码做了小小的修改,效果非常好。谢谢你指出逻辑。我现在没有底片。MOD(CAST(FLOOR(4.7)为INT64),2)+4.7-FLOOR(4.7)@user3601140很高兴这有帮助,我怀疑hive的
pmod
实际上也在做同样的事情