РАНЬШЕ

применяется:вычисляемый столбецвычисляемой таблицыизмерениевизуального вычисления

Возвращает текущее значение указанного столбца во внешнем проходе оценки указанного столбца.

РАНЕЕ полезно для вложенных вычислений, где необходимо использовать определенное значение в качестве входных данных и производить вычисления на основе этого входного значения. В Microsoft Excel такие вычисления можно выполнять только в контексте текущей строки; однако в DAX можно сохранить значение входных данных, а затем выполнить вычисление с помощью данных из всей таблицы.

РАНЕЕ в основном используется в контексте вычисляемых столбцов.

Синтаксис

DAX
EARLIER(<column>, <number>)  

Параметры

Срок Определение
column Столбец или выражение, разрешающееся столбцу.
num (Необязательно) Положительное число для прохождения внешней оценки.

Следующий уровень оценки представлен 1; два уровня представлены 2 и т. д.

Если опущено значение по умолчанию равно 1.

Возвращаемое значение

Текущее значение строки из columnпо number прохождения внешней оценки.

Исключения

Описание ошибок

Замечания

  • EARLIER успешно выполняется, если есть контекст строки до начала проверки таблицы. В противном случае возвращается ошибка.

  • Производительность EARLIER может быть медленной, так как теоретически может потребоваться выполнить ряд операций, близких к общему количеству строк (в столбце), то же число (в зависимости от синтаксиса выражения). Например, если в столбце есть 10 строк, может потребоваться примерно 100 операций; Если у вас есть 100 строк, может быть выполнено около 10 000 операций.

  • Эта функция не поддерживается для использования в режиме DirectQuery при использовании в вычисляемых столбцах или правилах безопасности на уровне строк (RLS).

Примечание

На практике подсистема аналитики VertiPaq в памяти выполняет оптимизацию для уменьшения фактического количества вычислений, но при создании формул, связанных с рекурсией, следует соблюдать осторожность.

Пример

Чтобы проиллюстрировать использование более ранних версий, необходимо создать сценарий, вычисляющий значение ранга, а затем использовать это значение ранжирования в других вычислениях.

Следующий пример основан на этой простой таблице, ProductSubcategory, которая показывает общее количество продаж для каждого ProductSubcategory.

Последняя таблица, включая столбец ранжирования, показана здесь.

ProductSubcategoryKey EnglishProductSubcategoryName TotalSubcategorySales ПодкатегорияRanking
18 Bib-Shorts $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 Cranksets $191,522.09 15
9 Derailleurs $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создается с помощью следующей формулы.

DAX
= COUNTROWS(FILTER(ProductSubcategory, EARLIER(ProductSubcategory[TotalSubcategorySales])<ProductSubcategory[TotalSubcategorySales]))+1  

Ниже описан метод вычисления более подробно.

  1. Функция EARLIER получает значение TotalSubcategorySales для текущей строки в таблице. В этом случае, так как процесс запускается, это первая строка в таблице

  2. EARLIER([TotalSubcategorySales]) оценивается как $156,167,88, текущая строка во внешнем цикле.

  3. Функция FILTER теперь возвращает таблицу, в которой все строки имеют значение TotalSubcategorySales больше $ 156,167,88 (которое является текущим значением для EARLIER).

  4. Функция COUNTROWS подсчитывает строки отфильтрованной таблицы и назначает это значение новому вычисляемого столбцу в текущей строке плюс 1. Добавление 1 необходимо, чтобы не допустить, чтобы значение верхнего ранжирования стало пустым.

  5. Формула вычисляемого столбца перемещается к следующей строке и повторяет шаги 1–4. Эти шаги повторяются до тех пор, пока не будет достигнут конец таблицы.

Функция EARLIER всегда получает значение столбца до текущей операции таблицы. Если перед этим необходимо получить значение из цикла, задайте второй аргумент 2.

ФУНКЦИИ С РАННИМ сроком
функции фильтрации