Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Ajuda com script / lógica

Boa tarde,

Uma dúvida. Observem a imagem abaixo:

pp.JPG

Observações:

1) É a mesma NF para todos registros (o campo que difere não está relacionado nessa imagem)

Problema

1) SE tiver apenas UM registro na ultima columa (PEDIDO ATENDIDO) de 'S-Atendido', todos os demais registros também devem ficar 'S-Atendido'.

Alguem ajuda?

Obrigado

1 Solution

Accepted Solutions
Clever_Anjos
Employee
Employee

1) Crie um mapa

Mapping_ocorren:

mapping LOAD

NOTA_FISCAL,

CONCAT(DISTINCT OCORREN,',') AS OCORRENCIAS_PEDIDO

FROM seuqvd(qvd)

GROUP BY NOTA_FISCAL ;

2) Use esse mapa para calcular seu campo

    IF(Index(ApplyMap('Mapping_ocorren',NOTA_FISCAL,''),'2021')>0,'S-Atendido',

    IF(Index(ApplyMap('Mapping_ocorren',NOTA_FISCAL,''),'2001')>0,'D-Devolução',

     IF(Index(ApplyMap('Mapping_ocorren',NOTA_FISCAL,''),'2003')>0,'P-Parcial','A-Aberto'))) AS PEDIDO_ATENDIDO,

View solution in original post

10 Replies
Clever_Anjos
Employee
Employee

Posta o pedaço do script que lê o QVD

TiagoCardoso
Creator II
Creator II

Boa tarde, já tentou:?

if([PEDIDO ATENDIDO] LIKE 'S-Atendido', 'S-Atendido')   

Not applicable
Author

     IF(ApplyMap('Mapping_MenorData', NOTA_FISCAL, Null()) <= DAT_ENTREGA_TRANS,'S','N')   AS PEDIDO_NO_PRAZO_OTD,

    

     IF(POSSUI_CORTE<>'S','S','N') AS PEDIDO_ATENDIDO_COMPLETO,

//     IF(Index(ApplyMap('Mapping_Data_motivos',NOTA_FISCAL,''),'2021')>0,'S-Atendido',

//     IF(Index(ApplyMap('Mapping_Data_motivos',NOTA_FISCAL,''),'2001')>0,'D-Devolução',

//     IF(Index(ApplyMap('Mapping_Data_motivos',NOTA_FISCAL,''),'2003')>0,'P-Parcial','A-Aberto'))) AS PEDIDO_ATENDIDO,

// ESSE TRECHO PRECISA TER ESSE MOTIVO_OCORREN E COLOCAR PARA TODOS OS OUTROS REGISTROS O MESMO STATUS

  IF(MOTIVO_OCORREN=2021,'S-Atendido',

  IF(MOTIVO_OCORREN=2001,'D-Devolução',

  IF(MOTIVO_OCORREN=2003,'P-Parcial','A-Aberto'))) AS PEDIDO_ATENDIDO,


// ESSE TRECHO PRECISA TER ESSE MOTIVO_OCORREN E COLOCAR PARA TODOS OS OUTROS REGISTROS O MESMO STATUS

   

    IF(Index(ApplyMap('Mapping_Motivos',NOTA_FISCAL,''),'2021')>0,'S',

    IF(Index(ApplyMap('Mapping_Motivos',NOTA_FISCAL,''),'2001')>0,'S',

    IF(Index(ApplyMap('Mapping_Motivos',NOTA_FISCAL,''),'2003')>0,'S','N'))) AS PEDIDO_NO_PRAZO

    

    

                    

FROM

$(vODS)\V_TIROLEZ_PEDIDO_PERFEITO.qvd

(qvd);

Clever_Anjos
Employee
Employee

// 1o crie um mapa

MapaStatus:

Mapping LOAD

NUMPEDIDO AS De

'S-Atendido'as Para

FROM

$(vODS)\V_TIROLEZ_PEDIDO_PERFEITO.qvd(qvd)

where MOTIVO_OCORREN=2021;

Dai no seu "load"

LOAD

// outros campos

Applymap('MapaStatus',NUMPEDIDO, // Se tiver pelo menos um atendido irá retornar o mapa

                   

IF(MOTIVO_OCORREN=2021,'S-Atendido', // se nao tiver, calcula

  IF(MOTIVO_OCORREN=2001,'D-Devolução',

  IF(MOTIVO_OCORREN=2003,'P-Parcial','A-Aberto')))  as PEDIDO_ATENDIDO

FROM

$(vODS)\V_TIROLEZ_PEDIDO_PERFEITO.qvd(qvd)

Not applicable
Author

cleveranjos,

Nesse seu exemplo, eu vou ter que fazer um Mapping Load para cada MOTIVO_OCORREN?

Aliás não entendi pq vc colocou o NUM PEDIDO no Mapa ao invés da NOTA FISCAL.

Tenho 3 status para o MOTIVO_OCORREN:

1. 2021 (no seu exemplo)

2. 2001

3. 2003

Clever_Anjos
Employee
Employee

Se entendi sua lógica não

O mapa será composto apenas dos pedidos que tem MOTIVO_OCORREN = 2021 // Atendido, correto?

Quando o mapa for aplicado, ele vai:

  • Se o pedido estava no mapa, fica marcado como S-Atendido
  • Se o pedido não estava no mapa, ele aplica a regra anterior
Not applicable
Author

Veja se compreende meu exemplo por favor.

Exemplo.JPG

Clever_Anjos
Employee
Employee

Tem como anexar uma amostra com vários cenários?

Pode ser Excel ou csv

Not applicable
Author

Boa noite,

Se eu tivesse apenas 1 status (S-Atendido) funcionaria.

Mas no caso tenho:

ever.png