Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Estimados, estoy tratando de hacer comparativos con fechas anteriores y tengo mis formulas que siempre me han funcionado
el problema es que ahora el resultado es siempre 0
Tengo la variable vMesAnterior --> =Max(Mes)-1 <-- Devuelve el numero del mes, ejemplo ene =1, feb= 2...
y la expresión --> Sum({<Mes={'$(vMesAnterior)'}>}[Monto Venta])
qué estoy haciendo mal?
Hola Joaquín:
Tienes que mejorar un poco, cuando selecciones ENE esto =Max(Mes)-1 vale 0
Normalmente usamos una tabla de calendario maestro para trabajar con fechas
Aquí Campos Calendario tienes un ejemplo del compañero sorrakis01
Saludos
Joaquín
Hola Joaquín, gracias por tu respuesta.
Sólo estoy haciendo unas pequeñas pruebas, para este efecto no creo que se necesario un calendario maestro
sólo me interesa comparar por año y mes
Hola
Si aun quieres continuar con tus pruebas, puedes modificar tu variable para que cuando encuentre "0" te ponga el mes 12, ejemplo
vMesAnterior --> =if( Max(Mes)-1 = 0, 12, Max(Mes)-1 )
ahora si lo que quieres es comparar la venta de un mes anterior contemplando el año-mes,
Tienes que tener dentro de tu bases de datos el campo Fecha, Año, Mes (Numérico)
ejemplo, si quieres ver el monto de la venta conforme a la fecha máxima seleccionada con un mes anterior, vamos a tomar la fecha máxima como 06/09/2016, vamos a ver 2 partes, monto con mes máximo seleccionado y monto con mes anterior.
variables:
vFechaMaxima -> =Max(Fecha) esto seria 06/09/2016 considerando que es la fecha maxima
vFechaIniMes -> =MonthStart('$(vFechaMaxima )' ) esto nos dará 01/09/2016
vAnioActual -> =Year('$(vFechaIniMes)') como resultado 2016
vMesActual -> Num(Month('$(vFechaIniMes)')) esto nos dará 9, se pone Num porque la función Month lo pone en texto
sustituyendo para obtener el monto en el mes máximo seleccionado
Sum({<Año={'$(vAnioActual)'}, Mes={'$(vMesActual)'} >} [Monto Venta])
continuando con las variables para un mes anterior
vFechaIniMesAnt -> =MonthStart('$(vFechaMaxima )',-1 ) esto nos dará 01/08/2016
vAnioAnterior -> =Year('$(vFechaIniMesAnt)') como resultado 2016
vMesAnterior -> Num(Month('$(vFechaIniMesAnt)')) esto nos dará 8
sustituyendo las variables para obtener el monto del mes anterior
Sum({<Año={'$(vAnioAnterior)'}, Mes={'$(vMesAnterior)'} >} [Monto Venta])
Nota: si la fecha máxima fuera 01/01/2016, los datos de las variables cambiarian a vFechaIniMesAnt: 01/12/2015, vAnioAnterior: 2015, vMesAnterior: 12, y con esto estarías comparando un mes anterior tomando en cuenta su año.
espero que este pequeño ejercicio te ayude, para cualquier duda estoy para servirte.
Hola Joaquín:
Puede que para un caso básico sobrevivas con unas cuantas variables; siguiendo las instrucciones de jer_2011 lo lograrás.
Pero cuando intentes integrar tu esfuerzo en una aplicación más compleja no te servirá de nada porque necesitarás un calendario maestro. Gestionalo como consideres apropiado, el calendario maestro es un Best Practice del fabricante.
Saludos
Joaquín
Hola,
Otra manera en la que puedes practicar sería por periodos, siendo periodo Año * 100 + Mes (numérico) y asociar ese periodo a un id numérico (create un autonumber en el script). Creo que con eso te puedes apañar
Lo que dice Joaquín del calendario maestro está en lo cierto, para unas prácticas no hace falta pero para cuando te plantees trabajar con más cantidad de datos y fechas es muy recomendable
Saludos
Hola,
En efecto Año * 100 + Mes es una forma de convertirlo a ordinal para sobrevivir, pero calcular el mes anterior en caso de enero seguiría fallando
La solución más optima es Año * 12 + Mes así al restar 1 para obtener el mes anterior nunca falla ... pero esto es la lógica para crear un calendario maestro.
Saludos
Muchas gracias Gerardo, me sirve de mucho tu explicación.
Como se trabaja con el calendario maestro? por ejemplo si tengo 3 campos con fechas, debo crear una nueva tabla nueva que junte estos 3 campos? los días hábiles e inhábiles, numero de semana, numero de mes, día, etc. Se deben calcular en el script de carga a partir de estos campos?
lo otro, como puedo hacer para comparar con el mes del año anterior pero tomando en cuenta el siguiente ejemplo:
estoy trabajando para una empresa de comida rápida y a ellos no les sirve comparar el 1 de julio 2016(viernes) con el 1 de julio de 2015 (miércoles), ya que en términos de venta son muy distintos
Hola Joaquín,
Míralo bien: asociar ese periodo a un id numérico (create un autonumber en el script).
Lo hará por id no por periodo
Saludos,
El calendario maestro se trabaja con el ejemplo que te puse de Jordi