Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola!
Necesito comparar las ventas acumuladas de dos años al día de la fecha. Por ejemplo, comparar este año (del 01/ene a fecha de ayer) con el mismo tramo del año anterior (01/ene/13 al 17/ene/13). ¿Cómo podría hacerlo? Actualmente cuento con esto un escenario como el que adjunto en la imagen. Eso me resuelve el problema si comparo meses sueltos (al poder seleccionar los días del mes a comparar) pero deja de tener utilidad si lo que pretendo es comparar el acumulado anual al dia de la fecha, para ello tengo que tirar de un calendario detallado por dias.
¿Alguna idea?
Muchas gracias !!
Hola,
ahora si he podido probarlo. Para el calculo de YTDFlag haz lo siguiente (el truco está en el desplazamiento, que depende del año)
InYearToDate(Fecha_arq,today(),year(Fecha_arq)-year(today())) as YTDFlag
Y para la expresión (parece ser que verdadero es '-1' y falso '0', entrecomillado, me equivoqué en esto):
sum ( {$ <[Año_caja]={$(=Max(Año_caja))}, YTDFlag = {'-1'} > } NETO_arq)
Revisalo y ya me dirás.
Un saludo.
Ese tipo de comparación lo puedes hacer de varias formas, pero yo te aconsejo la siguiente:
En tu script de carga, cuando cargas las fechas, crea un campo adicional denominado "YTDFlag" (Year To Date, por ejemplo). A este campos, que es un flag, le pones el valor 1 si el dia/mes es menos que el dia/mes actual (sin tener en cuenta el año). Y le pones un 0 en caso contrario. Qlikview tiene una función que hace precisamente esto:
InYearToDate (fecha, fechabase, desplazamiento [, primer_mes_del_año = 1])
devuelve verdadero si fecha cae dentro de la parte del año que contiene a fechabase hasta el último e incluido milisegundo de fechabase. El año puede desplazarse mediante desplazamiento. Desplazamiento es un entero, en el que el valor 0 indica el año que contiene a fechabase. Los valores negativos de desplazamiento indican años precedentes y los valores positivos indican años futuros. Si desea trabajar con años (fiscales) que no comiencen en enero, especifique un valor entre 2 y 12 en primer_mes_del_año.
Ejemplos:
inyeartodate ( '2006-01-25', '2006-02-01', 0 ) devuelve verdadero
inyeartodate ( '2006-01-25', '2006-01-01', 0 ) devuelve falso
inyeartodate ( '25/01/2005', '2006-02-01', -1 ) devuelve verdadero
Después, en el set analysis de tus expresiones del cuadro, le pones la condición de que YTDFlag = {1} y listo.
Si tienes alguna duda peganos aquí las expresiones que tienes en el cuadro y te podremos ayudar mejor.
Un saludo.
Luis.
Muchas gracias Luis!
He modificado el script añadiendo el flag como me has indicado. Lo cierto es que ando un poco verde con la sintaxis del Set Analisys. Intento introducir el modificador YTDFlag = {1} en las expresiones que tengo pero me da error.
sum ( {$ <[Año_caja]={$(=Max(Año_caja))} > } NETO_arq)
Adjunto el QVW por si sirve de ayuda.
Gracias mil !!
El fichero que adjuntas no está recargado, y no puedo hacer la prueba a añadir el YTDFlag para enseñarte la sintaxis, pero algo así tiene que funcionar (tras recargar el documento, claro):
sum ( {$ <[Año_caja]={$(=Max(Año_caja))}, YTDFlag = {1} > } NETO_arq)
Esto a parte de que, por lo que veo en el script, el YTDFlag no lo estás calculando bien, debes usar la función InYearToDate() que te indiqué arriba.
un saludo.
Por cierto, si YTDFlag = {1} no te funciona, prueba YTDFlag = {'1'}
Deberían valer el primer caso, pero por probar que no quede.
Buenas de nuevo Luis!
Me he estado peleando un rato con la función de marras y nada, doy palos de ciego. Algo (o todo) debo hacer mal.
En la carga de datos, pongo:
Inyeartodate( Fecha_arq , Today(), 1) as YTDFlag, // he probado con 1, 0, -1..) lol.
Y en la expresión de la tabla pivotante pongo lo que me indicaste
sum ( {$ <[Año_caja]={$(=Max(Año_caja))}, YTDFlag = {1} > } NETO_arq)
Pero el resultado es 0 para todas las celdas.
Esta vez, adjunto el QVW recargado, por si te sirve de ayuda.
Mil gracias!
Hola,
ahora si he podido probarlo. Para el calculo de YTDFlag haz lo siguiente (el truco está en el desplazamiento, que depende del año)
InYearToDate(Fecha_arq,today(),year(Fecha_arq)-year(today())) as YTDFlag
Y para la expresión (parece ser que verdadero es '-1' y falso '0', entrecomillado, me equivoqué en esto):
sum ( {$ <[Año_caja]={$(=Max(Año_caja))}, YTDFlag = {'-1'} > } NETO_arq)
Revisalo y ya me dirás.
Un saludo.
Mil gracias Luis!
Funciona a la perfección! tan sólo tuve que modificar el script restando 1 a la fecha actual ya que sólo dispongo en todo momento de los cierres de caja del día anterior
InYearToDate(Fecha_arq,(today()-1),year(Fecha_arq)-year((today()-1))) as YTDFlag,
Un saludo y gracias de nuevo!