Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Compañeros les envio un cordial saludo
Necesito realizar un gráfico en donde se compare las ventas el mes actual con las ventas del mes anterior, teniendo en cuenta que se debe comparar cada dia por igual, es decir lunes con lunes y martes con martes etc. y Esto es por que se quiere comparar las ventas con días que tienen comportamientos iguales
Esta es la gráfica realizada en excel de como deberia ser:
En un comienzo se me ocurrio crear una dimensión con el nombre del día de la semana , pero me quede ahí.....
Alguien tiene alguna idea?
Quedo gratamente agredecido con ideas.
Att
Santiago Matiz
Muchas gracias a todos !
La propuesta de Joaquin es lógica , quede con la duda de enero y la presentación de la dimensión.
Finalmente lo resolví agregando en la recarga el mes anterior y el año anterior de acuerdo a una hoja de excel con las correspondencias de días (lunes con lunes....) :
equivalencias_f:
LOAD dia_mes,
fecha1,
fecha2,
fecha3
FROM
[ventas_doc\equivalencias_fecha.xlsx]
(ooxml, embedded labels, table is Hoja1);
Ejemplo del archivo de excel:
dia_mes | fecha1 | dia1 | dia_mes2 | fecha2 | dia2 | fecha3 | dia2 |
1 | 01/01/2014 | miercoles | 4 | 04/12/2013 | miércoles | 02/01/2013 | miércoles |
2 | 02/01/2014 | jueves | 5 | 05/12/2013 | jueves | 03/01/2013 | jueves |
3 | 03/01/2014 | viernes | 6 | 06/12/2013 | viernes | 04/01/2013 | viernes |
4 | 04/01/2014 | sábado | 7 | 07/12/2013 | sábado | 05/01/2013 | sábado |
5 | 05/01/2014 | domingo | 8 | 08/12/2013 | domingo | 06/01/2013 | domingo |
Utilice la función FieldValue para buscar de la tabla correspondencias de fechas:
let vfecha1=date(Date#(FieldValue('fecha1',1),'DD/MM/YYYY')); // fecha mes anterior
let vfecha3=date(Date#(FieldValue('fecha3',1),'DD/MM/YYYY')); // fecha año anterior
let vi = 1;
DO WHILE isnull(vfecha1)=0
hechos2:
LOAD
Cventas as Cventas_ano_ant
,'$(vfecha1)' as fecha
,codTienda
,tip_nombre
FROM 'qvds_ventas_diarias/hechos0.qvd' (qvd)
WHERE
fecha = '$(vfecha3)';
LET vi=vi + 1;
let vfecha1=date(Date#(FieldValue('fecha1',vi),'DD/MM/YYYY')); // Primer valor
let vfecha3=date(Date#(FieldValue('fecha3',vi),'DD/MM/YYYY')); // Primer valor
LOOP
Entiendo que aqui tu debes asignar un numero de dia creado por ti para poder comprar un mes contra el otro.
En este caso si queremos comparar los meses de marzo y abril de 2014, marzo inicio un sabado y abril un martes, segun lo que veo quieres que se compare entonces el 1/mar/2014 con 5/abr/2014... si es asi debes asignar un dia para iniciar la comparacion.
Juan efectivamente esa es la idea
Creé una tabla de excel con las fechas equivalentes (equivalencias) :
01/04/2014 | martes | 04/03/2014 | martes |
02/04/2014 | miércoles | 05/03/2014 | miércoles |
03/04/2014 | jueves | 06/03/2014 | jueves |
04/04/2014 | viernes | 07/03/2014 | viernes |
05/04/2014 | sábado | 08/03/2014 | sábado |
06/04/2014 | domingo | 09/03/2014 | domingo |
07/04/2014 | lunes | 10/03/2014 | lunes |
08/04/2014 | martes | 11/03/2014 | martes |
09/04/2014 | miércoles | 12/03/2014 | miércoles |
10/04/2014 | jueves | 13/03/2014 | jueves |
11/04/2014 | viernes | 14/03/2014 | viernes |
12/04/2014 | sábado | 15/03/2014 | sábado |
Ahora al hacer la expresión del més anterior :
=sum({$< fecha = P(fecha2) , tip_nombre={'1.HC'}, Año={2014} >} vd_valor_neto_C+vd_valor_neto_R)
No me dá
Ayuda please!!!!
Hola Santiago:
Analiza esta propuesta a ver que te parece:
Añade en tu calendario el campo Num(Fecha) as FechaOrdinal.
La fecha del mes anterior, Fecha2 = FechaOrdinal - 28 (4 semanas + 7 días) ... si tus meses son de 5 semanas - 35
Para el año anterior 7 x 52 o 53 ... tu decides cuantas semanas tiene tu año.
Te adjunto dos documentos de HIC sobre la gestión de semanas / fechas en QV
Espero que te sirva de ayuda.
Joaquín
Hola Santiago:
Mira estas funciones en la ayuda
Week
WeekDay
WeekYear
WeekEnd
WeekStart
Te ayudarán a enlazar las fechas por semanas completas.
Saludos
Joaquín
Hola!!
Puedes utilizar set analisys:
Ejemplos:
Año corriente
Sum({$<Año={$(=Max(Año))}>}Sales)
Año anterior
Sum({$<Año={$(=Max(Año)-1)}>}sales)
Selecionando un mes puedes calcular 12 meses para atras.
sum({$<Año = {$(=max(Año) - 1)}, Mes= {"<=$(=max({<Año={$(=max(Año))}>} Mes))>$(=max({<Año={$(=max(Año))}>} Mes)-1)"}>} Sales)
Puede hacer algo similar para meses
Revisa el link:
Tiene varios tips.
http://community.qlik.com/blogs/qlikviewdesignblog/2014/03/03/ytd
Espero te sea de ayuda.
Slds,
Ale
Juaquin muchas gracias,
Como podría crear el mes anterior dado caso creo la dimensión como la FechaOrdinal
Mes Anterior:
=sum({1< tip_nombre={'1.HC'}, Año={2014},FechaOrdinal={"=$(FechaOrdinal-28)"} >} vd_valor_neto_C+vd_valor_neto_R)
Como se podría hacer algo parecido?
Te contesto el lunes ... el camino a seguir es el que has empezado, pero cuidado con la mezcla de SET ANALYSIS que puede fallar en enero!!!
Hola Santiago:
No puedo probarlo, pero el -28 lo sacaría fuera del paréntesis y el tema del año se puede complicar cuando selecciones enero ... el -28 te llevará a diciembre del año anterior.
Usando la propuesta de Alejandra: Sum({$<Año={$(=Max(Año)-1)}>}sales)
Mes Anterior:
=sum({1< tip_nombre={'1.HC'}, Año={$(>=Max(Año)-1)}, FechaOrdinal={"=$(FechaOrdinal)-28"} >} vd_valor_neto_C+vd_valor_neto_R)
Espero que sea suficiente.
Saludos
Joaquín
Muchas gracias a todos !
La propuesta de Joaquin es lógica , quede con la duda de enero y la presentación de la dimensión.
Finalmente lo resolví agregando en la recarga el mes anterior y el año anterior de acuerdo a una hoja de excel con las correspondencias de días (lunes con lunes....) :
equivalencias_f:
LOAD dia_mes,
fecha1,
fecha2,
fecha3
FROM
[ventas_doc\equivalencias_fecha.xlsx]
(ooxml, embedded labels, table is Hoja1);
Ejemplo del archivo de excel:
dia_mes | fecha1 | dia1 | dia_mes2 | fecha2 | dia2 | fecha3 | dia2 |
1 | 01/01/2014 | miercoles | 4 | 04/12/2013 | miércoles | 02/01/2013 | miércoles |
2 | 02/01/2014 | jueves | 5 | 05/12/2013 | jueves | 03/01/2013 | jueves |
3 | 03/01/2014 | viernes | 6 | 06/12/2013 | viernes | 04/01/2013 | viernes |
4 | 04/01/2014 | sábado | 7 | 07/12/2013 | sábado | 05/01/2013 | sábado |
5 | 05/01/2014 | domingo | 8 | 08/12/2013 | domingo | 06/01/2013 | domingo |
Utilice la función FieldValue para buscar de la tabla correspondencias de fechas:
let vfecha1=date(Date#(FieldValue('fecha1',1),'DD/MM/YYYY')); // fecha mes anterior
let vfecha3=date(Date#(FieldValue('fecha3',1),'DD/MM/YYYY')); // fecha año anterior
let vi = 1;
DO WHILE isnull(vfecha1)=0
hechos2:
LOAD
Cventas as Cventas_ano_ant
,'$(vfecha1)' as fecha
,codTienda
,tip_nombre
FROM 'qvds_ventas_diarias/hechos0.qvd' (qvd)
WHERE
fecha = '$(vfecha3)';
LET vi=vi + 1;
let vfecha1=date(Date#(FieldValue('fecha1',vi),'DD/MM/YYYY')); // Primer valor
let vfecha3=date(Date#(FieldValue('fecha3',vi),'DD/MM/YYYY')); // Primer valor
LOOP