Skip to main content
Announcements
Live today at 11 AM ET. Get your questions about Qlik Connect answered, or just listen in. 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