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

Como localizar valores não selecionados de uma dimensão em outra (string)?

Bom dia!

Tenho a seguinte tabela:

CidadeFilialAssuntoOrientação
CuritibaAGILIDADEAgradecer elogio, e passar para superiores
CuritibaAGILIDADERio de Janeiro: Agradecer contato, e informar retorno.
São PauloAGILIDADESão Paulo: Agradecer elogio e informar aos superiores.
São PauloAGILIDADECuritiba: Agradecer elogio e repassar ligação.
Rio de JaneiroAGILIDADEAgradecer elogio, e passar para superiores
Rio de JaneiroAGILIDADERio de Janeiro: Agradecer contato, e informar retorno.
Rio de JaneiroAGILIDADESão Paulo: Agradecer elogio e informar aos superiores.

O filtro foi : Assunto -> Agilidade, como podem ver, infelizmente os dados estão misturados, isso foi possivelmente um erro na população do BD, porém, eu não tenho acesso ao BD e gostaria de consertar isso no QlikView.

Para cada assunto em cada cidade, existe apenas 1 orientação. E nessa orientação pode estar o nome da cidade ou não, ou a orientação de outra cidade.

Tentei fazer uma dimensão calculada 'Orientação':

=if(substringcount(upper(Orientacao),Trim({1-$}CidadeFilial))>0 ,null(), LTrim(PurgeChar(Orientacao,'&')))

Ver se no campo orientação tem o nome de outra filial, sem ser a filial em questão... Se tiver, não aparecerá.

Não deu certo, mas seria mais ou menos essa lógica, talvez. Como posso fazer? Vai em anexo essa tabela.

Desde já, obrigada.

ps: o ltrim, purgechar, trim foram usados pois esses campos precisavam ficar formatados.

Labels (3)
1 Solution

Accepted Solutions
Clever_Anjos
Employee
Employee

Veja se atende, mas sugiro pedir a quem fez essa query de extração que pusesse algum flag para ajudar

View solution in original post

12 Replies
Clever_Anjos
Employee
Employee

Qual deve ser a regra? igual abaixo?

1) Se não tive nome da cidade, vale essa

2) Se tiver um nome de cidade, só vale se for igual ao CidadeFilial

Ficaria assim o resultado final

CidadeFilial Assunto Orientação
CuritibaAGILIDADEAgradecer elogio, e passar para superiores
Rio de JaneiroAGILIDADEAgradecer elogio, e passar para superiores
São PauloAGILIDADEAgradecer elogio e informar aos superiores.

Se for assim, use o script abaixo:

Mapa:

mapping LOAD * INLINE [

    F1, F2

    Curitiba,_cidade_

    São Paulo,_cidade_

    Rio de Janeiro,_cidade_

];

LOAD CidadeFilial&'|'&CidadeFilial as FiltroDuplicados,

    CidadeFilial,

    Assunto,

    Orientação

FROM (ooxml, embedded labels, table is Plan1)

Where

  Index(MapSubString('Mapa',Orientação),'_cidade_')=0;

LOAD CidadeFilial&'|'&CidadeFilial as FiltroDuplicados,

    CidadeFilial,

    Assunto,

    Trim(Replace(MapSubString('Mapa',Orientação),'_cidade_:','')) as Orientação

FROM (ooxml, embedded labels, table is Plan1)

Where

  Index(MapSubString('Mapa',Orientação),'_cidade_')>0 and SubField(Orientação,':',1) = CidadeFilial

  and not Exists(FiltroDuplicados,CidadeFilial&'|'&CidadeFilial);

Not applicable
Author

Olá! Agradeço pela resposta!

Mas a tabela teria que ficar assim:

CidadeFilialAssuntoOrientação
CuritibaAGILIDADEAgradecer elogio, e passar para superiores
São PauloAGILIDADESão Paulo: Agradecer elogio e informar aos superiores.
Rio de JaneiroAGILIDADERio de Janeiro: Agradecer contato, e informar retorno.

No caso de SP e RJ, tinha orientação apontando o nome da filial, então usaria estas. Mas por exemplo, em Curitiba tinha uma orientação do Rio de Janeiro e outra sem nenhum nome de cidade, então usaria esta ultima opção...

Grata!

Clever_Anjos
Employee
Employee

Só inverter as cargas então

LOAD CidadeFilial&'|'&CidadeFilial as FiltroDuplicados,

     CidadeFilial,

     Assunto,

     Orientação

FROM (ooxml, embedded labels, table is Plan1)

Where

  Index(MapSubString('Mapa',Orientação),'_cidade_')>0 and SubField(Orientação,':',1) = CidadeFilial;

LOAD CidadeFilial&'|'&CidadeFilial as FiltroDuplicados,

     CidadeFilial,

     Assunto,

     Trim(Replace(MapSubString('Mapa',Orientação),'_cidade_:','')) as Orientação

FROM (ooxml, embedded labels, table is Plan1)

Where

  Index(MapSubString('Mapa',Orientação),'_cidade_')=0

  and not Exists(FiltroDuplicados,CidadeFilial&'|'&CidadeFilial);

Not applicable
Author

Bom dia, Clever!

Perdão, mas como assim inverter as cargas?

Fiz exatamente desse ultimo jeito que você me mandou, a pedido da empresa, tive que colocar mais campos. Isso também influenciou no resultado, mas ficou assim (sem ocultar valores nulos em Filtros Duplicados, para ver o que houve):

FILTROS:

*EMPRESA -> EMPRESA-RIO DE JANEIRO

*ASSUNTO -> AGILIDADE

        exemplo:

EmpresaCidadeFilialManifestaçãoGrupoAssuntoAssuntoOrientaçãoProcedimentoFiltrosDuplicados
EMPRESA-RIO DE JANEIRORIO DE JANEIROELOGIOATENDIMENTOAGILIDADEATENDIMENTO: AGRADECER ELOGIO, E INFORMAR QUE SERÁ REPASSADO AOS SUPERIORES DE SÃO PAULO.OUVIR RELATO E COMENTAR.RIO DE JANEIRO|RIO DE JANEIRO
EMPRESA-RIO DE JANEIRORIO DE JANEIROELOGIOATENDIMENTOAGILIDADEATENDIMENTO: AGRADECER CONTATO E FALAR SOBRE RETORNO. RIO DE JANEIRO: O MESMO QUE ATENDIMENTO       ATENDIMENTO: OUVIR RELATO E COMENTAR. RIO DE JANEIRO: O MESMO QUE ATENDIMENTO-
EMPRESA-RIO DE JANEIRORIO DE JANEIROELOGIOATENDIMENTOAGILIDADEREALIZAR SAUDAÇÃO E INFORMAR QUE LIGAÇÃO ESTA SENDO GRAVADA.OUVIR RELATO E COMENTAR. INFORMAR AOS SUPERIORES-
EMPRESA-RIO DE JANEIRORIO DE JANEIROELOGIOEQUIPEAGILIDADEATENDIMENTO: AGRADECER CONTATO E FALAR SOBRE RETORNO. RIO DE JANEIRO: O MESMO QUE ATENDIMENTO       ATENDIMENTO: OUVIR RELATO E COMENTAR. RIO DE JANEIRO: O MESMO QUE ATENDIMENTO-
EMPRESA-RIO DE JANEIRORIO DE JANEIROELOGIOEQUIPEAGILIDADEATENDIMENTO: AGRADECER ELOGIO, E INFORMAR QUE SERÁ REPASSADO AOS SUPERIORESOUVIR RELATO E COMENTAR.-
EMPRESA-RIO DE JANEIRORIO DE JANEIROELOGIOOPERACIONALAGILIDADECURITIBA: REALIZAR SAUDAÇÃO E INFORMAR QUE LIGAÇÃO ESTA SENDO GRAVADAOUVIR RELATO E COMENTAR.-
EMPRESA-RIO DE JANEIRORIO DE JANEIROELOGIOOPERACIONALAGILIDADEATENDIMENTO: AGRADECER CONTATO E FALAR SOBRE RETORNO. RIO DE JANEIRO: O MESMO QUE ATENDIMENTO       ATENDIMENTO: OUVIR RELATO E COMENTAR. RIO DE JANEIRO: O MESMO QUE ATENDIMENTO-

      

Teria que ficar assim (ocultado valores nulos em Filtros Duplicados):

        exemplo:

EmpresaCidadeFilialManifestaçãoGrupoAssuntoAssuntoOrientaçãoProcedimentoFiltrosDuplicados
EMPRESA-RIO DE JANEIRORIO DE JANEIROELOGIOATENDIMENTOAGILIDADEATENDIMENTO: AGRADECER CONTATO E FALAR SOBRE RETORNO. RIO DE JANEIRO: O MESMO QUE ATENDIMENTO       ATENDIMENTO: OUVIR RELATO E COMENTAR. RIO DE JANEIRO: O MESMO QUE ATENDIMENTORIO DE JANEIRO|RIO DE JANEIRO
EMPRESA-RIO DE JANEIRORIO DE JANEIROELOGIOEQUIPEAGILIDADEATENDIMENTO: AGRADECER CONTATO E FALAR SOBRE RETORNO. RIO DE JANEIRO: O MESMO QUE ATENDIMENTO       ATENDIMENTO: OUVIR RELATO E COMENTAR. RIO DE JANEIRO: O MESMO QUE ATENDIMENTORIO DE JANEIRO|RIO DE JANEIRO
EMPRESA-RIO DE JANEIRORIO DE JANEIROELOGIOOPERACIONALAGILIDADEATENDIMENTO: AGRADECER CONTATO E FALAR SOBRE RETORNO. RIO DE JANEIRO: O MESMO QUE ATENDIMENTO       ATENDIMENTO: OUVIR RELATO E COMENTAR. RIO DE JANEIRO: O MESMO QUE ATENDIMENTORIO DE JANEIRO|RIO DE JANEIRO

Ocorreu como no resultado da tabela que você me mandou... Ele não pegou a informação do Rio de Janeiro mesmo.

Já tentei arrumar isso, mas não consegui. Mas agradeço desde já!

obs: a tabela é fictícia, mas tem exatamente esses campos e apresenta resultados parecidos em esses... Infelizmente não posso postar o qvw, mas o problema é esse mesmo com o expliquei no post principal.

Clever_Anjos
Employee
Employee

>>Perdão, mas como assim inverter as cargas? - Já te mandei invertido.

Sinceramente não entendi qual o critério para escolher qual dos abaixo deve ser escolhido para 

EMPRESA-RIO DE JANEIRORIO DE JANEIROELOGIOATENDIMENTOAGILIDADE

 

ATENDIMENTO: AGRADECER ELOGIO, E INFORMAR QUE SERÁ REPASSADO AOS SUPERIORES DE SÃO PAULO.
ATENDIMENTO: AGRADECER CONTATO E FALAR SOBRE RETORNO. RIO DE JANEIRO: O MESMO QUE ATENDIMENTO     
REALIZAR SAUDAÇÃO E INFORMAR QUE LIGAÇÃO ESTA SENDO GRAVADA.
Not applicable
Author

Neste caso:

Das 3 opções acima, somente a segunda opção tem a palavra 'RIO DE JANEIRO', então a certa seria a segunda:

ATENDIMENTO: AGRADECER CONTATO E FALAR SOBRE RETORNO. RIO DE JANEIRO: O MESMO QUE ATENDIMENTO

-------------------------------------------------------------------------------------------------------------------------------------------------------

Outro exemplo, com a cidade de SP:

       

EmpresaCidadeFilialManifestaçãoGrupoAssuntoAssuntoOrientaçãoProcedimento
EMPRESA-SÃO PAULOSÃO PAULOELOGIOATENDIMENTOAGILIDADEATENDIMENTO: AGRADECER CONTATO E FALAR SOBRE RETORNO. RIO DE JANEIRO: O MESMO QUE ATENDIMENTO         ATENDIMENTO: OUVIR RELATO E COMENTAR. RIO DE JANEIRO: O MESMO QUE ATENDIMENTO
*Correta: EMPRESA-SÃO PAULOSÃO PAULOELOGIOATENDIMENTOAGILIDADEAGRADECER CONTATO E FALAR SOBRE RETORNO. OUVIR RELATO E COMENTAR.

Neste caso, a opção correta seria segunda, pois a primeira se refere ao RJ, e mesmo a segunda não ter mencionando São Paulo, seria a correta dentre as 2. A tabela já corrigida mostraria somente a segunda linha (*Correta)

Clever_Anjos
Employee
Employee

Veja se atende, mas sugiro pedir a quem fez essa query de extração que pusesse algum flag para ajudar

mario_sergio_ti
Partner - Specialist
Partner - Specialist

cleveranjos, como você adiciona esta área de código?

Você monta direto no modo HTML ou algum outro macete?

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti
Clever_Anjos
Employee
Employee

mario.gif