Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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
Oficina | Cliente | Saldo | Fecha de inicio | Dias Contratados |
1 | 1 | 96 | 01/09/2015 | 20 |
1 | 2 | 46 | 20/09/2015 | 15 |
1 | 3 | 2 | 13/09/2015 | 30 |
2 | 4 | 71 | 12/09/2015 | 20 |
2 | 5 | 54 | 02/09/2015 | 10 |
2 | 6 | 35 | 17/09/2015 | 20 |
3 | 7 | 100 | 01/09/2015 | 10 |
3 | 8 | 98 | 20/09/2015 | 15 |
4 | 9 | 60 | 13/09/2015 | 45 |
4 | 10 | 52 | 12/09/2015 | 30 |
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
Hola Maria:
NuevaTabla:
LOAD Oficina
Max(EstadoCliente) as EstadoOficina
Resident TuTabla
Group by Oficina;
Saludos
Joaquín
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
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))
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
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
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.
Hola Maria:
NuevaTabla:
LOAD Oficina
Max(EstadoCliente) as EstadoOficina
Resident TuTabla
Group by Oficina;
Saludos
Joaquín
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.
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
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.