Skip to main content
Announcements
Qlik Announces Qlik Talend Cloud and Qlik Answers: LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Valor original es el valor acumulado

Hola estimados, hoy el desafío en el que estoy es que el valor original del campo que recibo es un valor ACUMULADO por cada año, en el siguiente ejemplo doy a entender los campos que recibo y el campo calcluado IDEAL es el que quiero generar yo.   

PeriodoDato OriginalIDEAL
201501-34.594.507-34.594.507
201502-53.784.194-19.189.687
201503-78.332.608-24.548.414
201504-109.963.403-31.630.795
201505-131.742.385-21.778.982
201506-152.008.414-20.266.029
201507-172.386.482-20.378.069
201508-182.851.580-10.465.098
201509-199.185.015-16.333.435
201510-216.424.495-17.239.480
201511-225.155.382-8.730.887
201512-229.997.989-4.842.607
201601-12.516.057-12.516.057
201602-27.826.192-15.310.135
201603-43.346.208-15.520.015

Si se dan cuenta durante el año 2015, el mes 01 es el inicio del acumulado y en el caso del 2016 nuevamente se comienza por el mes 01,

la formula que requiero es un tipo de "desacumulación" por año para obtener el dato real periodo x periodo

ojalá me puedan ayudar

1 Solution

Accepted Solutions
rulohx87
Contributor III
Contributor III

Hola antonio,

Puedes resolverlo de esta forma desde el script.


DATOS:

LOAD *, IF( Right(Periodo,2) =  '01', [Dato Original], ([Dato Original]) - Previous(([Dato Original])))           AS           IDEAL;

LOAD * INLINE [

    Periodo, Dato Original

    201501, -34594.507

    201502, -53784.194

    201503, -78332.608

    201504, -109963.403

    201505, -131742.385

    201506, -152008.414

    201507, -172386.482

    201508, -182851.580

    201509, -199185.015

    201510, -216424.495

    201511, -225155.382

    201512, -229997.989

    201601, -12516.057

    201602, -27826.192

    201603, -43346.208

];

View solution in original post

3 Replies
jolivares
Specialist
Specialist

Revisa si esto te sirve:

Cargue tus datos:

Load Num(PurgeChar(F1,'.')) as DatoOriginal, MonthName(MakeDate(Left(F2,4),Right(F2,2))) as Periodo;

LOAD * INLINE [

    F1, F2

    -34.594.507, 201501

    -53.784.194, 201502

    -78.332.608, 201503

    -109.963.403, 201504

    -131.742.385, 201505

    -152.008.414, 201506

    -172.386.482, 201507

    -182.851.580, 201508

    -199.185.015, 201509

    -216.424.495, 201510

    -225.155.382, 201511

    -229.997.989, 201512

    -12.516.057, 201601

    -27.826.192, 201602

    -43.346.208, 201603

];

Luego hice una tabla:

Periodo,

Datos Original = Sum(DatoOriginal)

Ideal = If(Month(Periodo)=1,Sum(DatoOriginal), Sum(DatoOriginal)-Above(Sum(DatoOriginal),1,RowNo()))

rulohx87
Contributor III
Contributor III

Hola antonio,

Puedes resolverlo de esta forma desde el script.


DATOS:

LOAD *, IF( Right(Periodo,2) =  '01', [Dato Original], ([Dato Original]) - Previous(([Dato Original])))           AS           IDEAL;

LOAD * INLINE [

    Periodo, Dato Original

    201501, -34594.507

    201502, -53784.194

    201503, -78332.608

    201504, -109963.403

    201505, -131742.385

    201506, -152008.414

    201507, -172386.482

    201508, -182851.580

    201509, -199185.015

    201510, -216424.495

    201511, -225155.382

    201512, -229997.989

    201601, -12516.057

    201602, -27826.192

    201603, -43346.208

];

Not applicable
Author

Estimados, muchas gracias por las respuestas, efectivamente pude encontrar ejemplos utiles y que me ayudaron a resolver el problema