Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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.
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).
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:
Salve o excel na sua pasta de preferencia (no meu caso salvei na area de trabalho)
No qlik sense, abra o gerenciador de dados (no app)
Dentro dele escolha arquivo excel, e selecione o arquivo criado, Clique em preparar dados
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)
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.
Recarregue o aplicativo, e utilize o campo Setor como dimensão.
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
];
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.
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.
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);
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.
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
];
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.
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.