EARLIER
Se aplica a:Columna calculadaTabla calculadaMedidaCálculo visual
Devuelve el valor actual de la columna especificada en un paso de evaluación externo de la columna mencionada.
EARLIER es útil para los cálculos anidados en los que se quiere usar un determinado valor como entrada y generar cálculos basados en esa entrada. En Microsoft Excel, estos cálculos solo se pueden realizar dentro del contexto de la fila actual. Sin embargo, en DAX puede almacenar el valor de la entrada y luego hacer cálculos con los datos de toda la tabla.
EARLIER se usa principalmente en el contexto de columnas calculadas.
Sintaxis
EARLIER(<column>, <number>)
Parámetros
Término | Definición |
---|---|
columna | Columna o expresión que se resuelve en una columna. |
num | (Opcional) Número positivo para el paso de evaluación externo. El siguiente nivel de evaluación externo se representa mediante 1; dos niveles externos se representan mediante 2, y así sucesivamente. Si se omite, el valor predeterminado es 1. |
Valor devuelto
Valor actual de fila, desde column, en number de pasos de evaluación externos.
Excepciones
Descripción de errores
Notas
EARLIER se ejecuta correctamente si hay un contexto de fila antes del inicio del recorrido de tabla. De lo contrario, devuelve un error.
El rendimiento de EARLIER puede ser lento porque, en teoría, puede tener que realizar una serie de operaciones cercana al número total de filas (en la columna) por el mismo número (en función de la sintaxis de la expresión). Por ejemplo, si tiene 10 filas en la columna, se podrían necesitar aproximadamente 100 operaciones; si tiene 100 filas, podrían realizarse casi 10 000 operaciones.
Esta función no se admite para su uso en el modo DirectQuery cuando se utiliza en columnas calculadas o en reglas de seguridad de nivel de fila (RLS).
Nota:
En la práctica, el motor de análisis en memoria VertiPaq realiza optimizaciones para reducir el número real de cálculos, pero debe tener cuidado al crear fórmulas que impliquen recursividad.
Ejemplo
Para mostrar el uso de EARLIER, es necesario crear un escenario que calcule un valor de clasificación y luego use ese valor en otros cálculos.
El ejemplo siguiente se basa en esta tabla simple, ProductSubcategory, que muestra las ventas totales de cada ProductSubcategory.
La tabla final, incluida la columna de clasificación, se muestra aquí.
ProductSubcategoryKey | EnglishProductSubcategoryName | TotalSubcategorySales | SubcategoryRanking |
---|---|---|---|
18 | Pantalones de ciclismo | 156 167,88 $ | 18 |
26 | Bastidores de bicicletas | 220 720,70 $ | 14 |
27 | Soportes de bicicletas | 35 628,69 $ | 30 |
28 | Bidones y soportes | 59 342,43 $ | 24 |
5 | Ejes pedalier | 48 643,47 $ | 27 |
6 | Frenos | 62 113,16 $ | 23 |
19 | Gorras | 47 934,54 $ | 28 |
7 | Cadenas | 8 847,08 $ | 35 |
29 | Limpiadores | 16 882,62 $ | 32 |
8 | Bielas | 191 522,09 $ | 15 |
9 | Desviadores | 64 965,33 $ | 22 |
30 | Guardabarros | 41 974,10 $ | 29 |
10 | Horquillas | 74 727,66 $ | 21 |
20 | Guantes | 228 353,58 $ | 12 |
4 | Manillares | 163 257,06 $ | 17 |
11 | Tubos de dirección | 57 659,99 $ | 25 |
31 | Cascos | 451 192,31 $ | 9 |
32 | Paquetes de hidratación | 96 893,78 $ | 20 |
21 | Maillots | 699 429,78 $ | 7 |
33 | Luces | 36 | |
34 | Bloqueos | 15 059,47 $ | 33 |
1 | Bicicletas de montaña | 34 305 864,29 $ | 2 |
12 | Cuadros de bicicletas de montaña | 4 511 170,68 $ | 4 |
35 | Alforjas | 36 | |
13 | Pedales | 140 422,20 $ | 19 |
36 | Bombas | 12 695,18 $ | 34 |
2 | Bicicletas de carretera | 40 551 696,34 $ | 1 |
14 | Cuadros de bicicletas de carretera | 3 636 398,71 $ | 5 |
15 | Sillines | 52 526,47 $ | 26 |
22 | Shorts | 385 707,80 $ | 10 |
23 | Calcetines | 28 337,85 $ | 31 |
24 | Medias | 189 179,37 $ | 16 |
37 | Cubiertas y tubulares | 224 832,81 $ | 13 |
3 | Bicicletas de paseo | 13 334 864,18 $ | 3 |
16 | Cuadros de bicicletas de paseo | 1 545 344,02 $ | 6 |
25 | Chalecos | 240 990,04 $ | 11 |
17 | Ruedas | 648 240,04 $ | 8 |
Creación de un valor de clasificación
Una manera de obtener un valor de clasificación de un valor determinado de una fila es contar el número de filas de la misma tabla que tienen un valor mayor (o menor) que el que se está comparando. Esta técnica devuelve un espacio en blanco o un valor cero para el valor más alto de la tabla, mientras que los valores iguales tienen el mismo valor de clasificación y el siguiente valor (después de los valores iguales) tiene un valor de clasificación no consecutivo. Vea el ejemplo siguiente.
Se crea una nueva columna calculada, SubCategorySalesRanking, con la fórmula siguiente.
= COUNTROWS(FILTER(ProductSubcategory, EARLIER(ProductSubcategory[TotalSubcategorySales])<ProductSubcategory[TotalSubcategorySales]))+1
En los pasos siguientes se describe el método de cálculo más detalladamente.
La función EARLIER obtiene el valor de TotalSubcategorySales de la fila actual de la tabla. En este caso, dado que el proceso se está iniciando, es la primera fila de la tabla.
EARLIER([TotalSubcategorySales]) se evalúa en 156 167,88 $, la fila actual del bucle externo.
La función FILTER devuelve ahora una tabla en la que todas las filas tienen un valor de TotalSubcategorySales mayor que 156 167,88 $ (que es el valor actual de EARLIER).
La función COUNTROWS cuenta las filas de la tabla filtrada y asigna ese valor a la nueva columna calculada de la fila actual más 1. Es necesario agregar 1 para evitar que el valor de clasificación superior se convierta en un espacio en blanco.
La fórmula de la columna calculada se desplaza a la siguiente fila y repite los pasos del 1 al 4. Estos pasos se repiten hasta que se alcanza el final de la tabla.
La función EARLIER siempre obtiene el valor de la columna antes de la operación de tabla actual. Si necesita obtener un valor del bucle antes de eso, establezca el segundo argumento en 2.