Синтаксис DAX Visiology 3 продолжает расширяться. В версии 3.11 был представлен ряд новых функций, которые позволяют проводить округление значений по различным критериям.
Семейство ROUND
Функции этого семейства производят простые операции округления и работают с двумя параметрами — (<number>, <num_digits>)
ROUND округляет число до заданного количества десятичных знаков. Если десятичные знаки не указаны, число округляется до ближайшего целого.
ROUND(123.456, 2) // Результат: 123.46
ROUND(123.456, 0) // Результат: 123
ROUND(123.456, -2 // Результат: 100
ROUNDUP всегда округляет число к большему значению (в направлении от нуля) до заданного количества десятичных знаков.
ROUNDUP(123.456, 2) // Результат: 123.46
ROUNDUP(123.456, 0) // Результат: 124
ROUNDDOWN всегда округляет число в направлении к нулю до заданного количества десятичных знаков.
ROUNDDOWN(123.456, 2) // Результат: 123.45
ROUNDDOWN(123.456, 0) // Результат: 123
Кратное округление с MROUND
MROUND работает с двумя операторами — (<number> , <multiple>), где <number> – число, которое нужно округлить, а <multiple> – число, задающее значение, кратно которому будет округляться исходное число.
MROUND округляет число вверх (от нуля), если остаток от деления <number> на указанное <multiple> больше или равен половине значения <multiple>.
MROUND(3.7, 1) // Результат: 4 (округление до ближайшего целого).
MROUND(9.99, 1) // Результат: 10 (округление до ближайшего целого).
MROUND(9.99, 0.5) // Результат: 10 (округление до ближайшего кратного 0.5).
MROUND(7.2, 2) // Результат: 8 (округление до ближайшего кратного 2).
MROUND(3.2, 1) // Результат: 3 (округление до ближайшего целого).
Округление до целого
INT возвращает целую часть числа, отбрасывая дробную часть. Это аналог функции округления вниз до ближайшего целого числа.
INT(5.67) // Результат: 5
FLOOR округляет число в меньшую сторону до ближайшего кратного значения.
FLOOR(7.5, 2) // Результат: 6
CEILING выполняет округление числа в большую сторону до ближайшего целого, кратно значению из второго параметра.
CEILING(7.5, 2) // Результат: 8
ISO.CEILING Выполняет округление числа в большую сторону до ближайшего целого, кратно значению из второго параметра, с учетом ISO стандарта для округления.
ISO.CEILING(23, 5) // Результат: 25
*В этом примере значение 23 будет округлено до 25, так как 25 является ближайшим большим кратным 5.
Отсечение дробной части
TRUNC работает с двумя параметрами (<number>, <num_digits>), где <number> – число, которое нужно округлить, а <num_digits> – количество десятичных знаков, до которого нужно округлить число. Функция используется для усечения числа до целого числа, удаляя дробную часть. В отличие от функции ROUND, которая округляет число, TRUNC просто отбрасывает все цифры после запятой.
TRUNC(3.14159) //Результат: 3 - Усечение до целого числа
TRUNC(3.14159, 1) //Результат: 3.1 - Усечение до одного знака после запятой:
TRUNC(-3.14159) //Результат: -3 - Усечение отрицательного числа
Подробнее узнать о поддерживаемых операторах DAX можно в документации по платформе.