Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Calculos agregados

Buenas tardes a todos,

Estoy intentando hacer unos cálculos agregados en el Script y me surgen algunos problemas. Os cuento:

Tengo la siguiente tabla

   

OficinaClienteSaldoFecha de inicioDias Contratados
119601/09/201520
124620/09/201515
13213/09/201530
247112/09/201520
255402/09/201510
263517/09/201520
3710001/09/201510
389820/09/201515
496013/09/201545
4105212/09/201530

Necesito crear dos datos, uno a nivel de cliente y otro a nivel de oficina.

El campo a nivel de cliente será EstadoCliente:

     Si la diferencia entre la fecha actual y la de inicio es superior a los dias contratados --> 2

     Si es igual o inferior a los días contratados y el saldo es menor de 50 --> 1

    Si es igual o inferior a los días contratados y el saldo es mayor de 50 -->0

El campo a nivel de oficina será EstadoOficina:

     Si algun cliente de la oficina tiene EstadoCliente=2 -->2

     Si no, si algun cliente de la oficina tiene EstadoCliente= 1 -->

     Sino, -->0

El campo EstadoCliente lo calculo directamente en el Script de carga.

     LOAD

          Oficina,

          Cliente,

          Saldo,

          Fecha de inicio,

          Dias Contratados,

          if(Today()-FechaInicio>DiasContratados, 2, if(Today()-FechaInicio<=DiasContratados and Saldo<50,1,0)) ;

El caso es que no se como calcular el estado oficina en el Script.

¿Alguien me puede ayudar?

Gracias

Maria

1 Solution

Accepted Solutions
Joaquin_Lazaro
Partner - Specialist II
Partner - Specialist II

Hola Maria:

NuevaTabla:

LOAD Oficina

          Max(EstadoCliente) as EstadoOficina

Resident TuTabla

Group by Oficina;

Saludos

Joaquín

View solution in original post

15 Replies
Joaquin_Lazaro
Partner - Specialist II
Partner - Specialist II

Hola María:

En los gráficos tienes estas funciones: above(), below(), first(), last(), top(), bottom()

En el script tienes la función previous()

Saludos

Joaquín

jolivares
Specialist
Specialist

Revisa si estas expresiones te pueden servir:

Para los clientes

If(Today() - [Fecha de inicio] > [Dias Contratados],2,

  If(Today() - [Fecha de inicio] > [Dias Contratados] And Saldo < 50,1,0))

Para las oficinas:

If(Max(Aggr(

If(Today() - [Fecha de inicio] > [Dias Contratados],2,

  If(Today() - [Fecha de inicio] > [Dias Contratados] And Saldo < 50,1,0)),Oficina,Cliente))=2,2,

If(Max(Aggr(

If(Today() - [Fecha de inicio] > [Dias Contratados],2,

  If(Today() - [Fecha de inicio] > [Dias Contratados] And Saldo < 50,1,0)),Oficina,Cliente),1)=1,1,

  0))

Anonymous
Not applicable
Author

Hola Juan,

gracias por el comentario...era algo asi lo que buscaba, pero la funcion Aggr() no me la reconoce en el script de carga de datos. ¿Conoces alguna funcion que pueda usar en su lugar?

Gracias

Anonymous
Not applicable
Author

Hola Joaquin,

Lo que quiero son mas funciones para el Script de carga de datos.

Intentaba probar con Aggr pero no puedo usarla y no se que poner similar.

Gracias

jolivares
Specialist
Specialist

No... esto hace el calculo directamente en una tabla no en el script.

De ser asi te sugiero que lo hagas en dos pasos,  Primero haces el de clientes y luego vulves y lees la tabla y haces el de la oficina.

Joaquin_Lazaro
Partner - Specialist II
Partner - Specialist II

Hola Maria:

NuevaTabla:

LOAD Oficina

          Max(EstadoCliente) as EstadoOficina

Resident TuTabla

Group by Oficina;

Saludos

Joaquín

sorrakis01
Specialist
Specialist

Hola María,

Te paso una posible solución para el script:

LOAD Oficina,

     Cliente,

     Saldo,

     [Fecha de inicio],

     [Dias Contratados],

     Estado_Cliente,

     If(Estado_Cliente = 2,1,If(Estado_Cliente = 1,0)) as Estado_Oficina;

LOAD Oficina,

     Cliente,

     Saldo,

     [Fecha de inicio],

     [Dias Contratados],

     if(Today()-[Fecha de inicio]>[Dias Contratados], 2, if(Today()-[Fecha de inicio]<=[Dias Contratados] and Saldo<50,1,0)) as Estado_Cliente

FROM

(ooxml, embedded labels, table is Hoja1);

Repasa si los ifs (los datos son correctos) pero creo que te puede servir.

Un abrazo.

Joaquin_Lazaro
Partner - Specialist II
Partner - Specialist II

Hola Jordi,

Tal como lo has escrito el estado oficina no será correcto porque es un MAX() de los estados de clientes

Saludos

Joaquín

sorrakis01
Specialist
Specialist

Hola Joaquín,

Sinceramente yo creo que funciona. Me estoy basando en lo que pide ella.


Miralo tu mismo, si ves que hay alguna cosa que no cuadra hazmelo saber.