Skip to main content
Announcements
Accelerate Your Success: Fuel your data and AI journey with the right services, delivered by our experts. Learn More
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Año menos 1 en analisis de conjunto

Hola otra vez

Tengo bastantes graficos con Analisis de conjunto, gracias a esta comunidad, la gran mayoria son para tratar el AÑO. ejemplo

Sum({< Año = {2011} >} etc

al cambiar el año, me veo en la obligacion de ir UNO A UNO, cambiendo este dato

Me gustaria saber como puedo hacer un analisis de conjunto, donde aplique una comparativa, suma, resta o formula, del año de seleccion menos 1

es decir si yo estoy analizando la evolucion de 2012 frente a 2011, selecconado 2012 ya lo veria, ejemplo

(Sum({< Año = {2011} >} VENTA)- Sum({< Año = {2010} >} VENTA))/Sum({< Año = {2010} >} VENTA)

Al cambiar el año, tendria que cambiar la formula, duplicando el grafico para no perder la otra estadistica.

(Sum({< Año = {2012} >} VENTA)- Sum({< Año = {2011} >} VENTA))/Sum({< Año = {2011} >} VENTA)

Si pudiera hacer :

(Sum({< Año = {SELECCION} >} VENTA)- Sum({< Año = {-1} >} VENTA))/Sum({< Año = {-1} >} VENTA)

Quedaria resuelto

¿es posible?

Gracias

1 Solution

Accepted Solutions
Miguel_Angel_Baeyens

Hola Luis,

Es posible. Yo utilizo en algunos casos variables en las que tengo el valor del año actual, por ejemplo, y en otra el año anterior, bien calculado automáticamente, bien porque el usuario lo selecciona por ejemplo de un objeto deslizador. Echa un vistazo a este fichero.

Espero que te sirva.

Miguel

View solution in original post

11 Replies
Miguel_Angel_Baeyens

Hola Luis,

Es posible. Yo utilizo en algunos casos variables en las que tengo el valor del año actual, por ejemplo, y en otra el año anterior, bien calculado automáticamente, bien porque el usuario lo selecciona por ejemplo de un objeto deslizador. Echa un vistazo a este fichero.

Espero que te sirva.

Miguel

Not applicable
Author

Mil gracias, descargado, voy a estudiarmelo y te contesto

Insisto mil gracias

Not applicable
Author

Buenas tardes

Estudiada durante unos días, antes de lanzar una pregunta, que seguro al final sera una tonteria, pero yo solito, por mi falta de conocimiento, no encuentro

Creo que TODO el ejemplo, puede ser utilizado para lo que necesito y MEJORARIA con muchos mis aplicaciones artesanas, pero, para terminar de comprenderlo...

¿de donde sale la variable vStartDate?

¿Porque no consigo que funcione =$(vYear 1) o =$(vYear 2)?

¿Pueden estar ligadas estas preguntas?

He copiado TEXTUALMENTE el Script del ejemplo (estoy muy pez) y unido a mis datos por fecha

He estudido los resultados y son coeerentes, pero no consigo hacer los informes necesarios

Gracias por la ayuda

Un saludo

soniacoprosa
Creator
Creator

Hola Luist,

Lo que preguntas es algo que  yo uso con frecuencia. Intentaré explicarte lo que yo hago.

Suelo tener un selector con años y otro con meses, de forma que el usuario selecciona siempre una fecha.

Por lo que dices, supongo que lo que quieres es poder comparar datos para ésta fecha seleccionada, con los datos que tenías a otra fecha.

En mis tablas yo suelo tener un campo AÑOMESCIERRE (del tipo 201202), que suele ser la fecha de la carga o el añomes de los datos que sean (por ej. Imagina que son importes de facturas).

Con Set Analysis, puedes sacar la información del añomes que te interese:

//Para sacar datos del añomes seleccionado  (el “$” indica que tomamos datos de lo seleccionado)

sum({$< nombredetutabla.AÑOMESCIERRE = {$(#=((Max(Total nombredetutabla.AÑOMESCIERRE))))}>} nombredetutabla.ImporteFactura)

//Para sacar datos del añomes con el que quieras comparar  (si lo tienes en una variable “VAñoMesparacomparar”)

// (el “1” indica que tomamos datos del resto, de lo no seleccionado)

= Sum({1<nombredetutabla.AÑOMESCIERRE =  {$(#VAñoMesparacomparar)} >} nombredetutabla.ImporteFactura)

// Para sacar datos del añomes =  año anterior al seleccionado

= Sum({1<nombredetutabla.AÑOMESCIERRE = {$(#=((Max(Total nombredetutabla.AÑOMESCIERRE)))- 100) } >} nombredetutabla.ImporteFactura)

// Para sacar datos del añomes =  año anterior al seleccionado, pero teniendo éste en una vble. VAñoMesanterior

// Nota: Crearías una vble.

VAñoMesanterior = If( Max(Total Mes) = 12

, RangeSum(Max(Total Año), -1) & Right('00' & Max(Total Mes), 2)

, Max(Total Año) & Right('00' &RangeSum(Max(Total Mes), -1), 2)

)

= Sum({1<nombredetutabla.AÑOMESCIERRE =  {$(#VAñoMesanterior)} >} nombredetutabla.ImporteFactura)

Espero que te sirva.

Un saludo,

Not applicable
Author

Gracias Sonia

Voy a ponerme con tus ejemplos, soy un poco PEZ, y tengo que recostruir mucho para probar

Ya te cuento los resultados

Insisto GRACIAS

Miguel_Angel_Baeyens

Hola Luis,

La variable vStartDate la he creado en el menu Configuraciones, Panel de Variables. Podrías crearla también en el script, si te refieres a eso.

Respecto de la segunda parte, fíjate que al menos en el ejemplo que pones, las variables llevan un espacio intermedio que en el ejemplo no tienen (una variable no puede tener un espacio en su nombre, a diferencia de un campo). Si no lleva espacio, podría ser porque esas variables dependen de vYearMax y vYearMin, que se calculan en el script y dependen a su vez de vMaxDate y vMinDate, y podría haber algún problema ahí con los formatos.

Espero que te ayude.

Miguel

Not applicable
Author

Hola Miguel Angel, gracias por la respuesta

La verdad es que estoy ilusionado con los resultados, gracias al ejemplo que me mandaste, estoy cambiando el concepto de comparacion de resultados entre fechas, si lo consigo, cambiare MUCHAS aplicaciones

vStarDate y vEndDate, las eestoy creando en el Script

Let vStartDate=Date# ('1/1/2009') entendiendo que esta variable es la primera fecha a tener en cuenta

Let vEndDate=Date# ('31/12/2012') final 2012, no se hacerlo de otra forma, supongo que se podria poner la ultima fecha encontrada en el campo FECHA, pero no se hacerlo, ME CONFORMO ASI que ya es un gran paso.

El Script lo he copiado LITERALMENTE del ejemplo que me mandaste, el error de escritura, es decir los espacios no existen.

Realmente en el ejemplo no existen vYear1 ni vYear2 como variables que carge el Script, por lo que deduzco que como me comentas, son variables que "nacen" de otras variables o campos. Al no encontrarlas y desconocer la razon, pero entenderlas como necesarias, lo que hago es crearlas de la siguiente forma:

Let vYear1 = Year ($ (vMinDate)+1)  el resultado es un valor 2009

Let vYear2 = Year ($ (vMaxDate))     el resultado es un valor 2012

Esto ha permitido que algos graficos me funcionen, pero otros no

He comprobado que los campos CalendarDate o YTDDate tienen un formato fecha +hora,

es decir 01/01/2012 0:00:00  Unica diferencia encontrada y que no se si sera la culpable, pero que tampoco se solucionarla.

Supongo que esto nace del campo FECHA origen y que utilizo de union ...

PostingDate as CalendarDate

Despues de este lio ¿Me puedes dar luz?

Mil gracias

Not applicable
Author

Buenos tardes

Al final TODO funciona a la perfeccion, el problema era que mis datos llegaban como FECHA + HORA

Gracias por el ejemplo que podre poner en marcha en MUCHAS aplicaciones

Una sola pregunta mas

Nunca habia creado una expresion, formulando con la etiqueta de otra expresion (sabia que se podia, pero no habia probado), ahora con este ejemplo, he empezado a hacerlo, en el ejemplo, esta claro que:

[$(vYear2)] - [$(vYear1)] / [$(vYear1)] dara como resultado un dato % X

Pero ¿como se formula cuando a la etiqueta le añades TEXTO?

a mis etiquetas CALULADAS, les he añadido € o Cantidad. De esta forma, veo  € AÑO (Calculado 1) o Cantidad AÑO, pera esto la etiqyeta es:

= '€' & ' ' & $(vYear1)

o

= 'Cantidad' & ' ' & $(vYear1)

Al intentar formular otra expresion con estas etiquetas, el valor en NULO, creo que a la formula le falta algo, pero he probado de todo, hago algo asi:

'€' & ' ' & $(vYear2) - '€' & ' ' & $(vYear1) / '€' & ' ' & $(vYear1)

he probado tambien con parentesis, corchetes...

('€' & ' ' & $(vYear2) - '€' & ' ' & $(vYear1)) / ('€' & ' ' & $(vYear1))

¿Que hago mal?

Gracias

Miguel_Angel_Baeyens

Hola Luis,

Dos alternativas. La fácil es utilizar Column(1) en lugar de la etiqueta de la primera columna correspondiente a expresiones, Column(2), etc. Así te olvidas del nombre que tenga, variables dinámicas, etc.

De todas formas, si el gráfico es una tabla pivotante, donde no está tan claro cuál es en cada momento la columna 1, y es más efectivo referenciar por etiqueta, cuando hay texto y código debería quedar como lo siguiente:

// Etiqueta:

='Ventas ' & Year(vDateFrom)

// Expresión:

[Ventas $(=Year(vDateFrom))] / 100

o siguiendo tus ejemplos (puede que no haya tenido el suficiente cuidado respetando espacios):

[€ $(vYear2)] - [€ $(vYear1)] / [€ $(vYear1)]

El editor de expresiones te indicará que la expresión no es correcta, subrayándolo en rojo. Sí que es correcto, es un fallo del editor.

Espero que te ayude.

Miguel