Qlik Community

Brasil

Announcements
QlikWorld 2022, LIVE in Denver CO., May 16-19, 2022. REGISTER NOW TO RECEIVE EARLY BIRD PRICING
cancel
Showing results for 
Search instead for 
Did you mean: 
thiago_alessand
Contributor III
Contributor III

Como ignorar registros conforme dados da próxima linha?

Boa tarde,

Tentei de várias maneiras e não consegui, então recorro aos mestres da comunidade. No Qlik Sense, como posso fazer para desconsiderar os dados quando seguem o critério abaixo:

Se nas linhas exibidas, for o mesmo valor nas colunas "Cod Produto" e "OP", e que a diferença entre a coluna "Qtde Empenho" e "Estrutura(com Perda)" seja o mesmo valor, não deve aparecer (eles se anulam).

Por exemplo, na imagem abaixo, ambas as linhas não poderia aparecer.

Cod Produto = "TDCAT0070B"

OP = '20830801001"

Diferenças entre as 2 medidas citadas = 1507,50

Capturar.PNG

 

Agradeço desde já.

 

3 Replies
fernando_tonial
Partner
Partner

Olá, uma possibilidade é fazer via script.

Veja um exemplo.

TodosDados:
Load * Inline [
CodProdudo, OP, Qtde Empenho, Estrutura(com Perda)
12345, OS-1234, 1500,0
12345, OS-1234, 0, 1500
23456, OS-2345, 1000,0
34567, OS-3456, 0,500
];

TMPDadosFlag:
NoConcatenate
Load 
	CodProdudo, 
    OP, 
    [Qtde Empenho], 
    [Estrutura(com Perda)],
	If(CodProdudo=Previous(CodProdudo) and 
       OP = Previous(OP) and  
       [Qtde Empenho]=Previous([Estrutura(com Perda)]),1,0) AS Flg_Anular
Resident TodosDados
Order by 
	CodProdudo, 
    OP;
Drop Table TodosDados;

DadosFlag:
NoConcatenate
Load 
	CodProdudo, 
    OP, 
    [Qtde Empenho], 
    [Estrutura(com Perda)],
	If(CodProdudo=Previous(CodProdudo) and 
       OP = Previous(OP) and  
       [Qtde Empenho]=Previous([Estrutura(com Perda)]) and
       Peek(Flg_Anular)=1,Peek(Flg_Anular),Flg_Anular) AS Flg_Anular
Resident TMPDadosFlag
Order by 
	CodProdudo, 
    OP,
    Flg_Anular desc;

Drop Table TMPDadosFlag;

Dados:
NoConcatenate
Load 
	CodProdudo, 
    OP, 
    [Qtde Empenho], 
    [Estrutura(com Perda)],
    Flg_Anular
Resident DadosFlag
Where Flg_Anular=0;

Drop Table DadosFlag;

Don't worry, be Qlik.
Tonial

thiago_alessand
Contributor III
Contributor III
Author

Bom dia Fernando,

Obrigado pelo suporte. Tentei adaptar ao meu script, porém ao dar carga aparece o erro de que a coluna não foi encontrada. Não percebi problema no código. Como não trabalhei ainda com "noconcatenate" e "resident table", pode ser que eu esteja fazendo algo errado mesmo...Segue script:

Spoiler

RealStandardEmpenhos:

Load
//DATE(EMISSAO)&'|'&null()&'|'&RTRIM(FILIAL)&'|'&null()
// AS ChaveGeral,
FILIAL AS FilialRealStandard,
OP AS OPCompletaRealStandard,
EMISSAO AS EmissaoRealStandard,
FIM AS DataFimRealStandard ,
QT AS QuantidadeRealStandard,
QUJE AS QuantidadeProduzidaRealStandard,
PRODUTO AS CodProdutoRealStandard,
DESC_PRO AS DescProdutoRealStandard,
UM_PRO AS UMProdutoRealStandard,
COMP AS CodComponenteRealStandard,
DESC_COMP AS DescComponenteRealStandard,
UM_COMP AS UMComponenteRealStandard,
VALIDA AS ValidaRealStandard,
QT_SG1 AS QuantidadeEstruturaRealStandard,
QT_SD4 AS QuantidadeEmpenhoRealStandard,
DIF_SD4 AS DiferencaEmpenhoEstruturaRealStandard,
QUJE_SG1 AS QuantidadeProduzidaEstruturaRealStandard,
QUJE_SD4 AS QuantidadeProduzidaEmpenhoRealStandard,
DIF_SD4JE AS DiferencaEmpenhoProduzidoRealStandard,
ATENCAO AS Status,
EstruturaComPerda AS EstruturaComPerdaRealStandard,
ATENCAO2 AS Status2,
EstruturaComPerda - QT_SD4 AS Diferenca


FROM [lib://RealStandardEmpenhosTeste_??2021.qvd] (qvd);


TMPDadosFlag:
NoConcatenate
Load
FilialRealStandard,
OPCompletaRealStandard,
EmissaoRealStandard,
DataFimRealStandard ,
QuantidadeRealStandard,
QuantidadeProduzidaRealStandard,
CodProdutoRealStandard,
DescProdutoRealStandard,
UMProdutoRealStandard,
CodComponenteRealStandard,
DescComponenteRealStandard,
UMComponenteRealStandard,
ValidaRealStandard,
QuantidadeEstruturaRealStandard,
QuantidadeEmpenhoRealStandard,
DiferencaEmpenhoEstruturaRealStandard,
QuantidadeProduzidaEstruturaRealStandard,
QuantidadeProduzidaEmpenhoRealStandard,
DiferencaEmpenhoProduzidoRealStandard,
Status,
EstruturaComPerdaRealStandard,
Status2,
Diferenca,
IF(PRODUTO=Previous(PRODUTO) and
OP = Previous(OP) and
QT_SD4=Previous(EstruturaComPerda),1,0) AS Flg_Anular
Resident RealStandardEmpenhos
Order by
PRODUTO,
OP;
Drop Table RealStandardEmpenhos;

fernando_tonial
Partner
Partner

Olá, o problema é que quando vc utiliza o resident, vc deve utilizar o nome das colunas da tabela anterior, nesse caso a tabela RealStandardEmpenhos, nesse seu exemplo, os campos PRODUTO, OP, QT_SD4 e EstruturaComPerda foram todos renomeados, onde devemos alterar para os novos nomes.

Com base no script que você disponibilizou, deveria ficar assim:

RealStandardEmpenhos:
Load
//DATE(EMISSAO)&'|'&null()&'|'&RTRIM(FILIAL)&'|'&null()
// AS ChaveGeral,
FILIAL AS FilialRealStandard,
OP AS OPCompletaRealStandard,
EMISSAO AS EmissaoRealStandard,
FIM AS DataFimRealStandard ,
QT AS QuantidadeRealStandard,
QUJE AS QuantidadeProduzidaRealStandard,
PRODUTO AS CodProdutoRealStandard,
DESC_PRO AS DescProdutoRealStandard,
UM_PRO AS UMProdutoRealStandard,
COMP AS CodComponenteRealStandard,
DESC_COMP AS DescComponenteRealStandard,
UM_COMP AS UMComponenteRealStandard,
VALIDA AS ValidaRealStandard,
QT_SG1 AS QuantidadeEstruturaRealStandard,
QT_SD4 AS QuantidadeEmpenhoRealStandard,
DIF_SD4 AS DiferencaEmpenhoEstruturaRealStandard,
QUJE_SG1 AS QuantidadeProduzidaEstruturaRealStandard,
QUJE_SD4 AS QuantidadeProduzidaEmpenhoRealStandard,
DIF_SD4JE AS DiferencaEmpenhoProduzidoRealStandard,
ATENCAO AS Status,
EstruturaComPerda AS EstruturaComPerdaRealStandard,
ATENCAO2 AS Status2,
EstruturaComPerda - QT_SD4 AS Diferenca


FROM [lib://RealStandardEmpenhosTeste_??2021.qvd] (qvd);


TMPDadosFlag:
NoConcatenate
Load
FilialRealStandard,
OPCompletaRealStandard,
EmissaoRealStandard,
DataFimRealStandard ,
QuantidadeRealStandard,
QuantidadeProduzidaRealStandard,
CodProdutoRealStandard,
DescProdutoRealStandard,
UMProdutoRealStandard,
CodComponenteRealStandard,
DescComponenteRealStandard,
UMComponenteRealStandard,
ValidaRealStandard,
QuantidadeEstruturaRealStandard,
QuantidadeEmpenhoRealStandard,
DiferencaEmpenhoEstruturaRealStandard,
QuantidadeProduzidaEstruturaRealStandard,
QuantidadeProduzidaEmpenhoRealStandard,
DiferencaEmpenhoProduzidoRealStandard,
Status,
EstruturaComPerdaRealStandard,
Status2,
Diferenca,
IF(CodProdutoRealStandard=Previous(CodProdutoRealStandard) and
OPCompletaRealStandard = Previous(OPCompletaRealStandard) and
QuantidadeEmpenhoRealStandard=Previous(EstruturaComPerdaRealStandard),1,0) AS Flg_Anular
Resident RealStandardEmpenhos
Order by
CodProdutoRealStandard,
OPCompletaRealStandard;

Drop Table RealStandardEmpenhos;

 

 Don't worry, be Qlik.
Tonial.