Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
rbarbosa
Contributor III
Contributor III

Relacionar Campo com parte do campo de outra tabela

Olá pessoal tudo bem? Tenho duas tabelas, movimentação e fornecedores até aí tudo bem

Porém na tabela de movimentação o valor do campo movimentação trás o nome do fornecedor concatenados com um monte de outras coisas.

Gostaria de limpar o nome na tabela movimentação, baseado no arquivo de fornecedores, gerando uma nova coluna.


Segue em anexo os arquivos

Movs = Movimentação

Fornecedores = São Os Fornecedores que quero "pesquisar" na movimentação

Resultado = Que é o que quero obter a partir dos dois arquivos acima, gerei manualmente por serem poucas linhas, apenas para exemplificar.

Rodolfo Barbosa
Labels (7)
1 Solution

Accepted Solutions
Clever_Anjos
Employee
Employee

Tente assim:

Mapa:

Mapping LOAD

  FORNECEDOR,

  '{' & FORNECEDOR & '}'

FROM (ooxml, embedded labels, table is Planilha1);

LOAD

  TextBetween(MapSubString('Mapa',MOVIMENTAÇÃO),'{','}') as FORNECEDOR,

  MOVIMENTAÇÃO,

    DEBITO,

    CREDITO

FROM (ooxml, embedded labels, table is Planilha1);

View solution in original post

8 Replies
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Rodolfo,

fiz usando o join

Como os campos nao tem os mesmos nomes, cria um produto cartesiano que resolvemos com um where e substringcount.....

Sendo franco resolve, mas nao é uma forma boa se tiver muito registro (imagino em alguns milhões....)

2017-01-04 20_57_51-QlikView x64 - [C__tmp_Fornecedores.qvw_].png

furtado@farolbi.com.br
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Tmp:

LOAD

     MOVIMENTAÇÃO,

     DEBITO,

     CREDITO

FROM [movs.xlsx] (ooxml, embedded labels, table is Planilha1);

join

LOAD

     FORNECEDOR

FROM [Fornecedores - Copia.xlsx] (ooxml, embedded labels, table is Planilha1);

Tabela:

NoConcatenate

LOAD

     *

Resident Tmp Where SubStringCount(MOVIMENTAÇÃO,FORNECEDOR)>0;

//

DROP Table Tmp;

furtado@farolbi.com.br
Clever_Anjos
Employee
Employee

Tente assim:

Mapa:

Mapping LOAD

  FORNECEDOR,

  '{' & FORNECEDOR & '}'

FROM (ooxml, embedded labels, table is Planilha1);

LOAD

  TextBetween(MapSubString('Mapa',MOVIMENTAÇÃO),'{','}') as FORNECEDOR,

  MOVIMENTAÇÃO,

    DEBITO,

    CREDITO

FROM (ooxml, embedded labels, table is Planilha1);

rbarbosa
Contributor III
Contributor III
Author

Testei dessa forma, ficou muito bom, trouxe quase todos os resultado, os que não retornou foi por conta de digitação.

Porém alguns dados como cofins, ficaram como um fornecedor, será que tenho esse fornecedor cadastrado ou foi algo no produto cartesiano.

Segue o print cofins.png

Rodolfo Barbosa
rbarbosa
Contributor III
Contributor III
Author

Excelente resposta Clever, funcionou muito bem também, porém quando preciso tratar o nomes separados e os erros de digitação, temos alguns problemas.

Rodolfo Barbosa
rbarbosa
Contributor III
Contributor III
Author

Fiz a conferência. realmente tenho os impostos cadastrados como empresa.

Rodolfo Barbosa
Clever_Anjos
Employee
Employee

Quando os impostos são também fornecedores eles estão sempre na mesma ordem? Tipo

PAGTO COFINS 12/2016 - COFINS - BLAH BLAH

rbarbosa
Contributor III
Contributor III
Author

Não é uma linha de cadastro de imposto, somente com o nome do fornecedor preenchido, vou conversar melhor com o pessoal do contábil pra saber qual motivo deste cadastro, pelo que entendi, é pra facilitar algum processo, porém gera inconsistência nos dados.

Rodolfo Barbosa