Skip to main content

Brasil

Announcements
QlikWorld 2023, a live, in-person thrill ride. Save $300 before February 6: REGISTER NOW!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Expressão if com mais de 100 If's

Pessoal, preciso de ajuda. Tenho a seguinte situação, tenho os ifs abaixo para setar o nome do funcionario ao setor dele, porém como coloquei mais de 100 ifs o qlik sense me retorna o seguinte erro:

The following error occurred:

Error in expression: Too complex, more than 100 levels nesting

O meu if começa assim:

//Coluna relacionando cada area com seu devido usuario

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Ana Brito','Compras',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Marta Carvalho','Compras',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nelson Mathias','Compras',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Luiz Trindade','Compras',

....

tenho mais de 100 desses agora....

Por favor alguem me ajuda a se for o caso mudar a forma de relacionar estes usuários a sua área?

Atenciosamente,

Rafael Lima.

Labels (3)
21 Replies
arthur_dom
Creator III
Creator III

Maycon,

o comando Inline cria uma tabela. a ideia é semelhante a um excel ou csv.

Load * /*carrega tabela criada no script*/ inline  [ Campo1, Campo2, Campo3

                    Valor1, Valor2, Valor3 (...)

];

Campos são separados por virgulas(Colunas), linhas são novos registros. Então é como se fosse livre você coloca quase tudo o que quiser de caracteres (existem alguns reservados entretanto).

arthur_dom
Creator III
Creator III

Olá Rafael.

Se esta no Sense (desktop Principalmente), pode ser bem mais fácil.

Faça Assim, crie um excel com o nome dos funcionarios e setores:

criar excel.PNG

Salve o excel na sua pasta de preferencia (no meu caso salvei na area de trabalho)

SalvarExcel.PNG

No qlik sense, abra o gerenciador de dados (no app)

Gerenciador De Dados.PNG

Dentro dele escolha arquivo excel, e selecione o arquivo criado, Clique em preparar dados

Preparar dados.PNG

O Qlik Sense tem uma funcionalidade chama SmartLoad, se perceber que dois campos em tabelas diferentes tem o mesmo CONTEUDO, ele sugere uma associação (na parte de baixo da imagem)

aSSOCIAÇÕES.PNG

Clique em associação, verifique a recomendação do Smart load, escolha um dos campos para ser o nome que o QlikSense irá chamar a relação, e clique em concluído no fim.

SMARTLOAD.PNG

Recarregue o aplicativo, e utilize o campo Setor como dimensão.

JacksonAlfonso
Creator
Creator

Acho boa a solução do Arthur Molino, mas se ainda sim quiser fazer o comando via script da para reduzir bem as linhas usando ainda assim o IF, mas em conjunto com a função WildMacth, como segue o exemplo abaixo, da uma olhada.

Teste:

Load If(WildMatch(nome, 'jackson','fabio'),'Setor-A',If(WildMatch(nome, 'elaine'),'Setor-C','Setor-D')) as Setor, *;

LOAD * INLINE [

    id, nome, tipo, valor

    1, jackson, a, 23

    2, fabio, a, 24

    3, eduardo, c, 31

    4, elaine,d, 78

    5, jurema, e,56

];

Not applicable
Author

Pessoal eu agradeço muito a ajuda de vocês, porém ainda estou com dúvida, vou postar aqui o codigo inteiro pra melhor entender a forma que vocês estão dispondo as informações e a forma que eu tenho as informações, segue abaixo:

[BMCServiceDesk__Incident__c]:

LIB CONNECT TO 'Salesforce_SOAP';

[BMCServiceDesk__Incident__c]:

LOAD 

//Coluna relacionando cada area com seu devido usuario

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Compras',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Compras',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Compras',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Compras',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Compras',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Compras',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Controladoria',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Controladoria',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Controladoria',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Controladoria',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Controladoria',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Controladoria',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Controladoria',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Controladoria',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Controladoria',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Faturamento',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Faturamento',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Faturamento',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Faturamento',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Faturamento',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Financeiro',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Financeiro',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Fiscal',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Fiscal',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Fiscal',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','PCP',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','PCP',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','PCP',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','PCP',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','PCP',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','PCP',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','PCP',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','PCP',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','PCP',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','PCP',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','PCP',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','PCP',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','PCP',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','PCP',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','PCP',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','PCP',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','PCP',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','PCP',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','PCP',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','RH',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','RH',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','RH',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','RH',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','T.I',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','T.I',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','T.I',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','T.I',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Estoque',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Estoque',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Estoque',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Diretoria',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Outras',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Portaria',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Outras',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Engenharia',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Faturamento',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Engenharia',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Engenharia',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Engenharia',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Engenharia',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Qualidade',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Estoque',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Engenharia',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Qualidade',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Qualidade',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Estoque',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Estoque',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Qualidade',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','PCP',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Engenharia',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Engenharia',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Engenharia',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Portaria',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Manutenção',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','PCP',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Qualidade',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Portaria',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Engenharia',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Engenharia',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Engenharia',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Qualidade',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Engenharia',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Engenharia',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Engenharia',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Engenharia',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Engenharia',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Engenharia',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Engenharia',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','PCP',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','PCP',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Engenharia',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','P&D',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Engenharia',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Engenharia',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Manutenção',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Vendas',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','RH',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Engenharia',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Estoque',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Engenharia',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Portaria',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Segurança do Trabalho',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Qualidade',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','PCP',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Engenharia',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Estoque',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','PCP',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Engenharia',

    if(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c = 'Nome Funcionario','Engenharia'

))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) as AREA,

SELECT


    BMCServiceDesk__Client_Name__c


FROM


    BMCServiceDesk__Incident__c


WHERE

    (BMCServiceDesk__Queue__c = 'Brazil')

AND 

    (BMCServiceDesk__openDateTime__c >= 2015-01-01T00:00:00Z);

Oque acontece ai é que o qlik se conecta com o banco de dados da nossa aplicação web de chamados e le essa tabela ai, então le tambem o campo que já contem o nome do funcionario, mas não tem a area. A area dele eu seto manualmente atraves dos IF's. Como ficaria essa mesma situação com o codigo que vocês estão escrevendo ai? Ainda não consegui compreender, me desculpem. Eu sou "obrigado" a pegar o nome do funcionario direto do banco de dados.

* Troquei o nome do funcionario nos IF's por "Nome Funcionario" para poder manter a confidencialidade da empresa.

Atenciosamente,

Rafael Lima.

lucianosv
Specialist
Specialist

Bom dia.

Na leitura do salesforce coloca só o campo do nome e na parte Qlik usa um If(Match('Lista de Funcionarios'), 'Compras',

Encadeia esses Ifs.

Dessa forma terá um If por setor.

JacksonAlfonso
Creator
Creator

Do jeito que eu passei, ficaria como esta abaixo.

Para isso criei um apelido no select para  o seu campo "BMCServiceDesk__Client_Name__c " para ficar mais amigável/Fácil de entender e usei ele no pré load dentro da função WildMatch.


Load

         If(WildMatch(NomeCliente, 'Nome Funcionario 1'.'Compras', 'Nome Funcionario 2'.'Compras'),'Setor de Compras',

              If(WildMatch(NomeCliente, 'Nome Funcionario 1'.'Controladoria'),'Setor de Controladoria',

                    'Outros - Setores')) as [Setor Cliente],

          *;

SELECT


    BMCServiceDesk__Client_Name__c as NomeCliente


FROM


    BMCServiceDesk__Incident__c


WHERE

    (BMCServiceDesk__Queue__c = 'Brazil')

AND

    (BMCServiceDesk__openDateTime__c >= 2015-01-01T00:00:00Z);

Not applicable
Author

Bom dia Luciano,

Por gentileza poderia fazer um exemplo com os meus dados apresentados?

Como disse eu ainda não sou um programador experiente, por isso preciso de exemplos para entender.

Atenciosamente,

Rafael Lima.

arthur_dom
Creator III
Creator III

tente algo assim

LIB CONNECT TO 'Salesforce_SOAP';

BMCServiceDesk__Incident__c:

LOAD

BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c ;

  SELECT

     BMCServiceDesk__Client_Name__c

  FROM

     BMCServiceDesk__Incident__c

  WHERE

     (BMCServiceDesk__Queue__c = 'Brazil')

  AND

    (BMCServiceDesk__openDateTime__c >= 2015-01-01T00:00:00Z);

Left Join(BMCServiceDesk__Incident__c)

load Usuario as BMCServiceDesk__Incident__c, Setor inline * [Usuario, Setor

  Funcionario1, Compras

  Funcionario2, Financeiro

];

Not applicable
Author

Arthur boa tarde,

Veja o retorno:

Started loading data

BMCServiceDesk__Incident__c << BMCServiceDesk__Incident__c

Lines fetched: 2.656

The following error occurred:

Field not found - <Usuario>

The error occurred here:

Left Join(BMCServiceDesk__Incident__c) load Usuario as BMCServiceDesk__Incident__c, Setor inline * [Usuario, Setor Funcionario1, Compras Funcionario2, Financeiro ]

Data has not been loaded. Please correct the error and try loading again.

Atenciosamente,

Rafael Lima.

Not applicable
Author

Pessoal, muito obrigado a todos pelas dicas, lendo e relendo as dicas de vocês acabei conseguindo entender a lógica do If com Wildmatch e usei da seguinte forma:

//T.I

    if(WildMatch(BMCServiceDesk__Incident__c.BMCServiceDesk__Client_Name__c, 'Marcio X',

    'Marcos X','Heberson X','Rafael Lima'),

    'T.I',

Com isso diminui de mais de 100 IF's para apenas 18 IF's.

Assim fui fazendo para as demais áreas da empresa. Funcionou perfeitamente!!!

Muito obrigado pelo empenho de todos!!!

Atenciosamente,


Rafael Lima.