РАНЬШЕ
Область применения: вычисление вычисляемого столбца вычисляемой таблицы Меры визуального элемента
Возвращает текущее значение указанного столбца во внешнем проходе оценки указанного столбца.
РАНЕЕ полезно для вложенных вычислений, где необходимо использовать определенное значение в качестве входных данных и производить вычисления на основе этого входного значения. В Microsoft Excel такие вычисления можно выполнять только в контексте текущей строки; однако в DAX можно сохранить значение входных данных, а затем выполнить вычисление с помощью данных из всей таблицы.
РАНЕЕ в основном используется в контексте вычисляемых столбцов.
Синтаксис
EARLIER(<column>, <number>)
Параметры
Термин | Определение |
---|---|
столбец | Столбец или выражение, разрешающееся столбцу. |
num | (Необязательно) Положительное число для прохождения внешней оценки. Следующий уровень оценки представлен 1; два уровня представлены 2 и т. д. Если опущено значение по умолчанию равно 1. |
Возвращаемое значение
Текущее значение строки из столбца во время прохождения внешней оценки.
Исключения
Описание ошибок
Замечания
РАНЕЕ выполняется успешно, если есть контекст строки до начала проверки таблицы. В противном случае возвращается ошибка.
Производительность EARLIER может быть низкой, так как теоретически эта функция может потребовать выполнения числа операций, близкого к общему количеству строк (в столбце), умноженного на то же самое число (в зависимости от синтаксиса выражения). Например, если в столбце есть 10 строк, может потребоваться примерно 100 операций; Если у вас есть 100 строк, может быть выполнено около 10 000 операций.
Эта функция не поддерживается для использования в режиме DirectQuery при использовании в вычисляемых столбцах или правилах безопасности на уровне строк (RLS).
Примечание.
На практике подсистема аналитики VertiPaq в памяти выполняет оптимизацию для уменьшения фактического количества вычислений, но при создании формул, связанных с рекурсией, следует соблюдать осторожность.
Пример
Чтобы проиллюстрировать использование более ранних версий, необходимо создать сценарий, вычисляющий значение ранга, а затем использовать это значение ранжирования в других вычислениях.
Следующий пример основан на этой простой таблице ProductSubcategory , которая показывает общее количество продаж для каждого ProductSubcategory.
Последняя таблица, включая столбец ранжирования, показана здесь.
КлючПодкатегорииПродукта | АнглийскийНазваниеПодкатегорииПродукта | TotalSubcategorySales | ПодкатегорияRanking |
---|---|---|---|
18 | Велошорты | $156,167,88 | 18 |
26 | Багажники для велосипедов | $220,720,70 | 14 |
27 | Велосипедные стойки | $35,628.69 | 30 |
28 | Бутылки и корзины | $59,342,43 | 24 |
5 | Каретки | $48,643,47 | 27 |
6 | Тормоза | $62,113.16 | 23 |
19 | Каски | $47,934,54 | 28 |
7 | Цепи | $ 8,847.08 | 35 |
29 | Очистители | $16,882.62 | 32 |
8 | Наборы шатунов | $191,522.09 | 15 |
9 | Переключатели передач | $64,965.33 | 22 |
30 | Крылья | $41,974.10 | 29 |
10 | Вилки | $74,727,66 | 21 |
20 | Перчатки | $228,353,58 | 12 |
4 | Рули | $163,257.06 | 17 |
11 | Рулевые колонки | $57,659,99 | 25 |
31 | Шлемы | $451,192.31 | 9 |
32 | Питьевые системы | $96,893,78 | 20 |
21 | Майки | $699,429,78 | 7 |
33 | Освещение | 36 | |
34 | Блокировки | $15,059,47 | 33 |
1 | Горные велосипеды | $34,305,864,29 | 2 |
12 | Рамы для горных велосипедов | $4511,170,68 | 4 |
35 | Кофры | 36 | |
13 | Педали | $140,422.20 | 19 |
36 | Насосы | $12,695.18 | 34 |
2 | Шоссейные велосипеды | $40,551,696,34 | 1 |
14 | Дорожные рамы | $3,636,398,71 | 5 |
15 | Седла | $52,526,47 | 26 |
22 | Шорты | $385,707,80 | 10 |
23 | Носки | $28,337,85 | 31 |
24 | Тайтсы | $189,179,37 | 16 |
37 | Шины и камеры | $224,832,81 | 13 |
3 | Туристические велосипеды | $ 13,334,864.18 | 3 |
16 | Туристические рамы | $1,545,344.02 | 6 |
25 | Жилеты | $240,990,04 | 11 |
17 | Колеса | $648,240,04 | 8 |
Создание значения ранжирования
Одним из способов получения значения ранжирования для заданного значения в строке является подсчет количества строк в той же таблице, которая имеет значение больше (или меньше), чем сравниваемое. Этот метод возвращает пустое или нулевое значение для наибольшего значения в таблице, в то время как равные значения будут иметь то же значение ранжирования и следующее значение (после равных значений) будет иметь непоследовательных ранговых значений. См. приведенный ниже пример.
Новый вычисляемый столбец SubCategorySalesRanking создается с помощью следующей формулы.
= COUNTROWS(FILTER(ProductSubcategory, EARLIER(ProductSubcategory[TotalSubcategorySales])<ProductSubcategory[TotalSubcategorySales]))+1
Ниже описан метод вычисления более подробно.
Функция РАНЕЕ получает значение TotalSubcategorySales для текущей строки в таблице. В этом случае, так как процесс запускается, это первая строка в таблице
РАНЕЕ([TotalSubcategorySales]) оценивается как $156,167,88, текущая строка во внешнем цикле.
Функция FILTER теперь возвращает таблицу, в которой все строки имеют значение TotalSubcategorySales больше $ 156,167,88 (которое является текущим значением для БОЛЕЕ РАННИХ версий).
Функция COUNTROWS подсчитывает строки отфильтрованной таблицы и назначает это значение новому вычисляемого столбцу в текущей строке плюс 1. Добавление 1 необходимо, чтобы не допустить, чтобы значение верхнего ранжирования стало пустым.
Формула вычисляемого столбца перемещается к следующей строке и повторяет шаги 1–4. Эти шаги повторяются до тех пор, пока не будет достигнут конец таблицы.
Функция РАНЕЕ всегда получает значение столбца до текущей операции таблицы. Если перед этим необходимо получить значение из цикла, задайте второй аргумент 2.