agregue YTD y MTD a las cifras de ventas

Un usuario Pregunto ✅

chakrabmonoj

Estoy tratando de comparar las ventas de dos años separados según el año y el año. Pero el primer mes en mis datos es julio y no enero; por lo que para el año actual YTD debería agregar julio-diciembre y de manera similar para el año anterior. Para MTD, debería comparar el último mes del año en curso.

He intentado usar dateinperiod con firstdate y también dateytd, pero no funciona:

Error de BI.JPG

Mis datos se ven así:

captura de pantalla de datos.JPG

tringuyenminh92

En respuesta a chakrabmonoj

Oh amigo mío, eso se llamará contexto de evaluación ^ _ ^ mi recomendación es olvidarse de descomponer la fórmula y comenzar a aprender DAX, lo entenderá correctamente con algunos libros sobre DAX o algunos artículos completos.

tringuyenminh92

Hola @chakrabmonoj,

¿Podrías hacer clic en ver detalles para compartirme el mensaje de error y lo intentaste con la columna de fecha en lugar de la columna de mes dentro del método dateytd?

chakrabmonoj

En respuesta a tringuyenminh92

Oye,

La captura de pantalla del mensaje de error:

Bi error_1.JPGCuando estoy proporcionando el campo para la función firstdate, me pide que elija uno de los siguientes argumentos (pero la ayuda sobre la sintaxis no muestra estos argumentos):

BI screen.JPGEntonces, dado que estoy sumando los valores durante meses, pensé que elegiría «mes» de estos argumentos.

El problema adicional es que mi año no está en el calendario estándar ya que mi período no comienza en enero, sino que comienza en julio; por lo tanto, no estoy seguro de cómo defino el período que comienza en julio hasta el último mes en la columna.

tringuyenminh92

En respuesta a chakrabmonoj

Hola @chakrabmonoj,

Como sé, el segundo parámetro es opcional para la fecha de finalización, puede ignorarlo y usar: dateytd (table1[Date]). Y, según tengo entendido, ¿está intentando ajustar la fecha de inicio a julio en lugar de a enero como predeterminado? Entonces necesitamos encontrar otra fórmula. Lo intentaste con DATESINPERIOD o DATESBETWEEN y TOTALYTD (Expresión, Date_Column [, SetFilter] [,YE_Date]?
¿Podría darme su pequeño archivo de muestra? Así podría probar rápidamente algunas ideas y hacerle saber mi solución.

chakrabmonoj

En respuesta a tringuyenminh92

Su solución funciona después de que cambié «mes» a «fecha» en el sentido de que los datos se compilan sin errores. El problema es que no sé si dateytd, o dateinperiod en combinación con firstdate y lastdate, pueden funcionar ya que estoy trabajando con un calendario no estándar

tringuyenminh92

En respuesta a chakrabmonoj

Hola @chakrabmonoj,

¿Tu YTD es desde julio hasta finales de ese año? o de julio a julio del próximo año? ¿Este tema es el mismo que sus expectativas? https: //www.powerpivotpro.com/2010/07/use-time-intelligence-functions-to-do-a-running-sum-of-the-las … (últimos 6 meses del año)

chakrabmonoj

En respuesta a tringuyenminh92

nuestro año financiero es julio-junio; esto significa que la mitad del año caerá en un año calendario y la segunda mitad en el siguiente.

¿Cómo puedo enviarle el archivo de datos?

tringuyenminh92

En respuesta a chakrabmonoj

Hola @chakrabmonoj,

Puede probar con TOTALYTD para el año fiscal:

YTD = TOTALYTD(sum(table1[VALUE]),table1[DATE],"7/31")

Captura de pantalla 2017-02-04 15.53.22.png

chakrabmonoj

En respuesta a tringuyenminh92

por cierto, ¿es el «31/7», la fecha de inicio en su fórmula o la fecha de finalización? en cuyo caso, mi problema sigue sin resolverse. Mi problema es que necesito sumar los valores entre julio y diciembre para 2015 y 2016, pero preferiblemente, los períodos de inicio y finalización se suministran dinámicamente

chakrabmonoj

En respuesta a tringuyenminh92

Gracias, pero ¿es posible hacer la dinámica «7/31» en sí misma? para que este siempre se recoja un {firstdate} o {lastdate}?

¿Qué significa «31/7»? 31 de julio, ¿verdad?

por cierto, ¿existe una función para abordar solo la parte del mes o año de un campo de fecha?

tringuyenminh92

En respuesta a chakrabmonoj

Hola @chakrabmonoj,

son demasiadas preguntas, así que déjame ir una por una:

  • dinámico para «7/31»: se actualizará después de observar su archivo de muestra
  • «31/7» que significa: es la fecha de finalización de cada período
  • Con la columna de fecha, podría Fechas[Date].[Year] o fechas[Date].[MonthNo], si no se muestra en su expresión, puede usar el método year () y month ()
  • ¿Está previsto que el período de la suma sea de junio a diciembre o de julio a junio? ahora es confuso.

chakrabmonoj

En respuesta a tringuyenminh92

YTD será julio-diciembre de 2016 y PYTD será julio-diciembre de 2015. Pero el mes de inicio y finalización preferiblemente debe ser dinámico

por cierto, ¿recibiste mi archivo?

tringuyenminh92

En respuesta a chakrabmonoj

Hola @chakrabmonoj,

No soy bueno en algunas funciones integradas como TOTALYTD y filtros de fechas como fechas entre o métodos de fechas en período, así que permítanme mostrarles mi enfoque para su YTD dinámico de inicio-fin como tema de patrón de tiempo:

  • Crear tabla de fechas: Fechas = CALENDARIO (fecha (2014,1,1), fecha (2020,1,1)) (puede ajustar más)
  • Establecer una relación entre su tabla de hechos y las fechas

Captura de pantalla 2017-02-04 17.55.44.png

  • Crear medida calculada hasta la fecha:
YTD = CALCULATE(sum(table1[VALUE]), 
                 FILTER(ALL(Dates),
					SUM(table1[VALUE])>0 && Dates[Date]<=MAX(Dates[Date]) && Dates[Date].[Year]=year(max(Dates[Date]))   //this is for cummulative as time-pattern
					&& Dates[Date]   >= date(Dates[Date].[Year],FIRSTNONBLANK(Configuration[month],1),FIRSTNONBLANK(Configuration[day],1) )   // this is to limit start date
 && max(Dates[Date]) <= 	date(Dates[Date].[Year],LASTNONBLANK(Configuration[month],1),LASTNONBLANK(Configuration[day],1) ) //this is to limit end date
					 ) )

Captura de pantalla 2017-02-04 18.05.25.png

Esta es mi tabla de configuración (para fecha dinámica de inicio / finalización)

Captura de pantalla 2017-02-04 17.59.24.png

Le he enviado el archivo de muestra, por favor revise su bandeja de entrada y avíseme si hay alguna inquietud. Volveré en las próximas horas para cenar ^ _ ^

chakrabmonoj

En respuesta a tringuyenminh92

Esto parece estar funcionando. pero solo para que pueda entender la lógica correctamente:

1. ¿Qué hace la tabla llamada «configuración»? No se pudo entender el mes {7 y 9} y el día {1,31}; ¿Por qué?

2. ¿Cómo se llega a sumar entre julio y diciembre cuando la fórmula parece usar MAX en todas partes? ¿Eso no devolverá «diciembre» como mes, ya que ese es el valor máximo en las fechas?[date] ¿campo?

3. ¿Cómo es que la fórmula también obtiene el mismo período para 2015, ya que se busca MAX …. a partir de las fechas?[date].año, devolvería 2020, ya que ese es el valor máximo, ¿verdad?

pero gracias por la solución, realmente lo agradezco.

tringuyenminh92

En respuesta a chakrabmonoj

Hola @chakrabmonoj,

1. Esa es la tabla creada por Enter Data, para su caso, puede ingresar en Excel o en algún lugar y usarla como sus parámetros dinámicos. Ese es el propósito de la muestra

2 y 3. Esto es algo realmente complicado porque relaciona el contexto del filtro en DAX. Pero estás pensando en el contexto de fila (fila por fila). Entonces, ¿podría referirse a este tema como mi explicación?

chakrabmonoj

En respuesta a tringuyenminh92

Buen artículo: ¿hay alguna manera de consultar la tabla de datos, escribiendo rápidamente el máximo de fórmula, etc., y ver qué valor devuelve para la función / fórmula?

Por ejemplo, ¿es posible escribir max (fechas[date]), en algún lugar, para comprobar qué valor devuelve? de esa manera podría depurar su fórmula rápidamente y entender la lógica para poder usar una lógica similar en otros lugares.

un par de dudas más:

1. ¿Por qué table1[date] * -> 1 con las fechas[date] – ¿Por qué necesitamos una relación de muchos a uno? enviar entre estas dos fechas?

2. Cuando me refiero a la configuración, la fuente muestra dos valores para [month] – 7 y 12 (que es jul y dec), pero cuando veo la misma tabla en las relaciones o en la vista de tabla, veo valores de 7 y 9 para la misma (que es jul y sep), ¿verdad? ¿Por qué reemplaza los valores?

3. Todavía no tengo claro cómo extraen las fechas de 2015 y 2016[date], ya que ninguno de ellos es el valor MAX en esta columna

gracias por la ayuda – realmente lo agradezco. Perdón por molestarme ya que soy bastante nuevo en BI

tringuyenminh92

En respuesta a chakrabmonoj

Hola @chakrabmonoj,

1. No estoy seguro, lo mejor es comprender el contexto del filtro y el contexto de la fila de ese artículo. Entonces podrías imaginar el valor en ese contexto.

Su tabla1 es una tabla de hechos o una tabla de transacciones, por lo que hay varios valores de columna de fecha. La tabla de fechas es la tabla de dimensiones / tabla maestra: es un valor único con la columna de fecha, por lo que tenemos una relación de muchos a uno

2. Lo hice para mostrarle que cuando el valor de la tabla de configuración cambia, la medida se reflejará (porque necesita una variable dinámica de fecha de inicio / finalización).

3. Es contexto, en ese contexto de filtro, tendrá 2015 o 2016 u otros años. Contexto de filtro: https://www.sqlbi.com/articles/row-context-and-filter-context-in-dax/

Me parece bien con tus inquietudes, eso me gusta, me ayuda a ganar más lesiones.

chakrabmonoj

En respuesta a tringuyenminh92

Oye,

Estoy entendiendo su fórmula, pero todavía estoy perdido en cuanto a cómo esta fórmula (qué parte de ella está diseñada) para devolver los valores para el año 2015 y 2016 … qué parte de la fórmula está diseñada para filtrar / extraer eso de las fechas[data]?

¿Es posible mantener YTD (para 2016) y PYTD (para 2015) durante los meses {jul-dic} como dos medidas separadas para poder trazarlas por categoría una al lado de la otra y con un gráfico de líneas que muestre el cambio? [ref. the page called «L3L6»]

Gracias

tringuyenminh92

En respuesta a chakrabmonoj

Hola @chakrabmonoj,

Por favor intente con:

Prev YTD = CALCULATE(sum(table1[VALUE]), 
                 FILTER(ALL(Dates), SUM(table1[VALUE])>0 &&
					 Dates[Date] <= MAX(Dates[PY Date]) && Dates[Year]=MAX(Dates[Year])-1
 			&& Dates[Date].[MonthNo] >= FIRSTNONBLANK(Configuration[Month],1)
 
					 ) )

YTD = CALCULATE(sum(table1[VALUE]), 
                 FILTER(ALL(Dates),
					SUM(table1[VALUE])>0 && Dates[Date]<=MAX(Dates[Date])
					&& Dates[Date].[Year]=YEAR(MAX(Dates[Date]))
&& [Prev YTD]>0					
 
					 ) )

Captura de pantalla 2017-02-04 22.02.39.png

Te he enviado un archivo actualizado como referencia.

diegorumo

En respuesta a tringuyenminh92

Hola, ¿podrías enviarme el archivo como referencia? ¡muchas gracias!

diegorumo

En respuesta a tringuyenminh92

Hola, ¿podrías enviarme el archivo como referencia? ¡muchas gracias!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *