Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
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.

1 Solution

Accepted Solutions
Employee
Employee

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

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

12 Replies
Employee
Employee

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

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

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

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!

Employee
Employee

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

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

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

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.

Employee
Employee

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

>>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

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

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)

Employee
Employee

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

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

mario_sergio_ti
Valued Contributor

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

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

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

Employee
Employee

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

mario.gif