Skip to main content
Announcements
See why Qlik is a Leader in the 2024 Gartner® Magic Quadrant™ for Analytics & BI Platforms. Download Now
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Set analysis no funciona

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?





11 Replies
JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

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

Anonymous
Not applicable
Author

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

jer_2011
Creator II
Creator II

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.

JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

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

sorrakis01
Specialist
Specialist

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

JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

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

Anonymous
Not applicable
Author

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

calendario.png

sorrakis01
Specialist
Specialist

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,

JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

El calendario maestro se trabaja con el ejemplo que te puse de Jordi