MSC
¡Hola a todos!
Me gustaría crear un columna calculada que devuelve la tasa de crecimiento de las ventas de mis productos. Ya me las arreglé para hacerlo mediante medidas pero fallé con una columna calculada. Para mí, la dificultad también está en la condición de que la función debe prestar atención al primer año de cada producto en la tabla y, por lo tanto, debe volver en blanco en estos años.
En general, mis datos se ven así.
Producto | Fecha | Ventas |
A | 31.12.19 | 4.242 |
A | 31.12.18 | 2.455 |
A | 31.12.17 | 1.543 |
A | 31.12.16 | 416 |
A | 31.12.15 | 264 |
B | 31.12.19 | 6.363 |
B | 31.12.18 | 4.683 |
B | 31.12.17 | 2.315 |
B | 31.12.16 | 1.624 |
B | 31.12.15 | 396 |
C | 31.12.19 | 9.954 |
C | 31.12.18 | 6.524 |
C | 31.12.17 | 3.425 |
C | 31.12.16 | 2.641 |
C | 31.12.15 | 1.256 |
Puede encontrar el archivo de Excel aquí.
https://github.com/MSC791/Growth_Table.git
¡Muchas gracias de antemano por su apoyo y sugerencias!
camargos88
@MSC,
Pruebe este código para una nueva columna calculada:
Growth =
VAR _lastDate = MAXX(FILTER('Table', 'Table'[Product] = EARLIER('Table'[Product]) && [Date] < EARLIER('Table'[Date])), 'Table'[Date])
VAR _lastValue = CALCULATE(SUM('Table'[Sales]), FILTER('Table', 'Table'[Product] = EARLIER('Table'[Product]) && [Date] = _lastDate))
RETURN IF(_lastValue <> BLANK(), ('Table'[Sales] - _lastValue) / _lastValue)
camargos88
@MSC,
_Average = CALCULATE(AVERAGE('Table'[Growth]), ALL('Table'[Product]), ALL(TABLE[Date]))
Por lo tanto, ignorará la fecha seleccionada y obtendrá todos los valores de fecha para calcular el promedio.
MSC
En respuesta a camargos88
@ camargos88He usado esta función:
Medida promedio =
VAR CustomerGroup_ =
DISTINCT (Data_Table[Customer])
REGRESO
CALCULAR (PROMEDIO (Data_Table2[Growth]), Tabla de datos[Category] EN CustomerGroup_, ALL (Data_Table[Customer]))
¡Muchas gracias por sus aportes y su ayuda!
camargos88
@MSC,
¿Está filtrando los valores por esta tabla? Entonces, ¿es por eso que el promedio está mal?
MSC
En respuesta a camargos88
@ camargos88Estoy filtrando los valores por la tabla de datos donde tengo los productos, las categorías y las ventas.
MSC
@ camargos88 @ Ashish_Mathur Creo que encontré la fuente del problema: en el pbix con el que estoy trabajando, la columna de la fecha no tiene el símbolo del calendario al frente … aunque la configuración parece ser correcta . El tipo de fecha es fecha y el formato es dd.mm.aaa
¿Cómo puedo cambiar esto?
Por lo tanto, creo que esto causa la función y especialmente el término «.. && [Date]… «para que no funcione según lo previsto.
MSC
En respuesta a MSC
Me acabo de dar cuenta de que el problema podría ser que existe una relación entre la tabla con los datos y la tabla de fechas. @ camargos88 ¿Cómo puedo integrar la tabla de fechas en su función DAX?
MSC
@ Ashish_Mathur He subido un pequeño panel de demostración con las funciones de DAX proporcionadas por @ camargos88 que muestra los resultados que me gustaría obtener. Si tienes una solución de medida, eres bienvenido.
Sin embargo, las funciones no funcionan con mi conjunto de datos real a pesar de que los datos subyacentes tienen la misma estructura que los datos de demostración. Por el momento, estoy tratando de averiguar por qué sucede esto.
Ashish_Mathur
¿Por qué quiere una solución de columna calculada? ¿Por qué no una medida?
MSC
En respuesta a Ashish_Mathur
¡Hola @Ashish_Mathur!
Inicialmente, preferí una solución de columna porque había encontrado una solución para un problema similar que se basaba en columnas calculadas.
Sin embargo, si hay una solución de medida que devuelve el promedio categoría tasa de crecimiento del producto que seleccioné, esto también estaría bien.
camargos88
@MSC,
Prueba esta medida:
_Average = CALCULATE(AVERAGE('Table'[Growth]), ALL('Table'[Product]))
Verifique el archivo adjunto.
MSC
En respuesta a camargos88
@ camargos88 ¡Muchas gracias por tu ayuda hasta ahora! ¡Realmente lo aprecio!
Curiosamente, la medida que sugirió funciona perfectamente en mi panel de demostración, pero parece haber un pequeño problema en mi conjunto de datos real. Allí, la medida promedio devuelve las tasas de crecimiento normales del elemento seleccionado, pero no la tasa de crecimiento promedio de la categoría de elementos.
Tengo que averiguarlo y volveré contigo mañana.
MSC
@ camargos88 Acabo de subir una versión ampliada del archivo.
camargos88
@MSC,
¿Puede proporcionar los datos de entrada y la salida deseada? Puedo trabajar en eso.
MSC
En respuesta a camargos88
@ camargos88Sí, por supuesto. Gracias. Le notificaré tan pronto como los datos preparados se carguen en github.
camargos88
@MSC,
Pruebe este código para una nueva columna calculada:
Growth =
VAR _lastDate = MAXX(FILTER('Table', 'Table'[Product] = EARLIER('Table'[Product]) && [Date] < EARLIER('Table'[Date])), 'Table'[Date])
VAR _lastValue = CALCULATE(SUM('Table'[Sales]), FILTER('Table', 'Table'[Product] = EARLIER('Table'[Product]) && [Date] = _lastDate))
RETURN IF(_lastValue <> BLANK(), ('Table'[Sales] - _lastValue) / _lastValue)
MSC
En respuesta a camargos88
@ camargos88¡Cool! ¡Muchas gracias por tu rápida respuesta! Lo marcaré como la solución. Sin embargo, tengo una pregunta de seguimiento con la que podrías ayudarme. Imagine que los productos A y B pertenecen a la categoría de productos Alpha y C pertenece a Beta.
Ahora, me gustaría que una función devuelva la tasa de crecimiento promedio de Alpha, cuando filtro el producto A en mi tablero. ¿Sabes cómo se puede hacer esto?