Вычисление остатка в большом запросе с плавающими точками данных - PullRequest
0 голосов
/ 11 февраля 2020

Язык запросов Hive имеет функцию PMOD, которую можно использовать для вычисления остатка. Эта функция прекрасно работает с целыми числами и двойными. Например, вычислить остаток от деления 4.7 на 2.

SELECT PMOD (4.7,2);

Ответ на этот запрос на языке запросов улья составляет 0,7

Большой запрос Google имеет функцию MOD для вычисления остатка. Но эта функция работает только с целыми числами.

SELECT MOD (4.7,2); не работает в большом запросе Google.

Можно привести 4.7 к INT64 в большом запросе. Тогда функция MOD будет работать, но ответ будет 1, а не 0,7

Любая помощь для вычисления остатка с плавающими точками данных в большом запросе Google будет очень полезна.

1 Ответ

1 голос
/ 11 февраля 2020

Вычисление остатка от значения с плавающей запятой является интересной концепцией, лично я до сих пор не слышал об этом.
Согласно вашему описанию, это в основном все о поиске остатка целой части и сложении дробной части в результат?
Если это так, его, вероятно, можно имитировать, используя следующее выражение (в вашем примере): 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() для отрицательных значений, поэтому я бы оставил это вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...