EARLIER
применяется:вычисляемый столбецвычисляемой таблицыизмерениевизуального вычисления
Возвращает текущее значение указанного столбца во внешнем проходе оценки указанного столбца.
EARLIER полезно для вложенных вычислений, в которых требуется использовать определенное значение в качестве входных данных и производить вычисления на основе этого ввода. В Microsoft Excel такие вычисления можно выполнять только в контексте текущей строки; однако в DAX можно сохранить значение входных данных, а затем выполнить вычисление с помощью данных из всей таблицы.
EARLIER в основном используется в контексте вычисляемых столбцов.
Синтаксис
EARLIER(<column>, <number>)
Параметры
Срок | Определение |
---|---|
column |
Столбец или выражение, разрешающееся столбцу. |
num |
(Необязательно) Положительное число для прохождения внешней оценки. Следующий уровень оценки представлен 1; два уровня представлены 2 и т. д. Если опущено значение по умолчанию равно 1. |
Возвращаемое значение
Текущее значение строки из column
по number
прохождения внешней оценки.
Исключения
Описание ошибок
Замечания
EARLIER
успешно выполняется, если есть контекст строки до начала проверки таблицы. В противном случае возвращается ошибка.Производительность
EARLIER
может быть медленной, так как теоретически может потребоваться выполнить ряд операций, близких к общему количеству строк (в столбце), то же число (в зависимости от синтаксиса выражения). Например, если в столбце есть 10 строк, может потребоваться примерно 100 операций; Если у вас есть 100 строк, может быть выполнено около 10 000 операций.Эта функция не поддерживается для использования в режиме DirectQuery при использовании в вычисляемых столбцах или правилах безопасности на уровне строк (RLS).
Заметка
На практике подсистема аналитики VertiPaq в памяти выполняет оптимизацию для уменьшения фактического количества вычислений, но при создании формул, связанных с рекурсией, следует соблюдать осторожность.
Пример
Чтобы проиллюстрировать использование EARLIER, необходимо создать сценарий, вычисляющий значение ранжирования, а затем использовать это значение ранжирования в других вычислениях.
Следующий пример основан на этой простой таблице, 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создается с помощью следующей формулы.
= COUNTROWS(FILTER(ProductSubcategory, EARLIER(ProductSubcategory[TotalSubcategorySales])<ProductSubcategory[TotalSubcategorySales]))+1
Ниже описан метод вычисления более подробно.
Функция
EARLIER
получает значение TotalSubcategorySales для текущей строки в таблице. В этом случае, так как процесс запускается, это первая строка в таблицеEARLIER([TotalSubcategorySales])
оценивается как $156,167,88, текущая строка во внешнем цикле.Функция
FILTER
теперь возвращает таблицу, в которой все строки имеют значение TotalSubcategorySales больше $ 156,167,88 (которое является текущим значением дляEARLIER
).Функция
COUNTROWS
подсчитывает строки отфильтрованной таблицы и назначает это значение новому вычисляемого столбцу в текущей строке плюс 1. Добавление 1 необходимо, чтобы не допустить, чтобы значение верхнего ранжирования стало пустым.Формула вычисляемого столбца перемещается к следующей строке и повторяет шаги 1–4. Эти шаги повторяются до тех пор, пока не будет достигнут конец таблицы.
Функция EARLIER
всегда получает значение столбца до текущей операции таблицы. Если перед этим необходимо получить значение из цикла, задайте второй аргумент 2.
Связанное содержимое
функции