使用浮动数据点计算大查询中的余数

Calculating remainder in big query with floating data points

Hive 查询语言有一个 PMOD 函数可以用来计算余数。此函数对整数和双精度工作得很好。比如计算4.7除以2的余数

SELECT PMOD(4.7,2);

这个查询的 hive 查询语言的答案是 0.7

Google 大查询有 MOD 函数来计算余数。但是这个函数只适用于整数。

SELECT MOD(4.7,2); 在 google 大查询中不起作用。

可以在大查询中将 4.7 转换为 INT64。然后 MOD 函数将起作用,但答案将是 1 而不是 0.7

在 google 大查询中使用浮动数据点计算余数的任何帮助都将非常有用。

计算浮点值的余数是一个有趣的概念,我个人到目前为止从未听说过。
根据您的描述,基本上都是关于求整数部分的余数并将结果的小数部分相加?
如果是这样,可能可以通过使用以下表达式(在您的示例中)来模仿它: MOD(FLOOR(4.7),2) + 4.7 - FLOOR(4.7) 考虑到整数部分是 FLOOR(4.7) 并且小数部分因此是 4.7 - FLOOR(4.7)

更新。这个假设非负浮点值,在负值的情况下,小数部分显然是 value - CEIL(value)。使用 value - TRUNC(value) 会概括为这两种情况找到小数部分,但我不太确定 MOD() 对负值的结果,所以我会留给你