Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Pessoal boa tarde!
Estou precisando demonstrar em Uma Lista Funcionários Que Não bateram o Ponto sem Relógio Ponto da Empresa.
Fonte de Dados:
Tenho uma Lista de Funcionários e also a Lista das marcações.
Fiz uma Importação há Qlik Sentido e interliguei como Chaves (código o Funcionário), porem aparecem APENAS OS Funcionários that bateram o Ponto, gostaria de selecionar Por Exemplo dia tal, EO Relatório tivesse Algum tipo de caso, verificando a Lista de Funcionários na tela e Retornado em uma Coluna a hora da Marcação do Ponto e se Caso nao Marcou aparecer uma Mensagem, falta Marcação.
Problema Que o Qlik Não reconhece OS nulos da forma Que fiz, Alguém Tem alguma Solução OU dica pra me Ajudar Nesse SENTIDO.
Obrigado Por Enquanto.
Pedro, tem como postar o script usado?
De qualquer forma, talvez seja interessante algo do tipo:
Load
SEUS_CAMPOS,
If (IsNull (DATA_PONTO), 'Não Marcou','Marcou') as Flag_Ponto
From SUA_BASE;
E na UI dá pra contar os funcionários que não bateram ponto num dado dia por exemplo;
Count ({<Flag_Ponto={'Não Marcou'}>} Distinct FUNCIONARIO)
Mandei o codigo do LOAD, consegue dar uma olhada e incrementar a ideia nele para eu testar amanha?
Desculpa, mas parece que o script não veio.
Funcionarios:
LOAD
A as funcionario_codigo,
B as funcionario_nome,
C as funcionario_cpf,
D as funcionario_data_admissao,
E as funcionario_cargo,
F as funcionario_local,
G as funcionario_status_matricula,
H as funcionario_data_demissao
FROM
****
Marcacoes:
LOAD
@2 AS funcionario_codigo,
@3 AS data_batida,
@4 AS hora_batida
FROM
*****
Concatenate(Marcacoes)
LOAD
@2 AS funcionario_codigo,
@3 AS data_batida,
@4 AS hora_batida
FROM
*****
Talvez, após seu script principal possa colocar o seguinte:
Right Join (Marcacoes)
Load
funcionario_codigo
Resident Funcionarios Where funcionario_data_demissao is Null;
Marcacoes_Final:
Load
*,
If (isNull (data_batida),'Não Marcou','Marcou') as Flag_Ponto
Resident Marcacoes;
Drop Table Marcacoes;
Não testei pois estou no celular, mas receio que isso será o suficiente.
Abs e Sucesso!
Fiz a tentativa ele inseriu nos registros a opção "não marcou" para os registros nulos, porém, agora cai em outra situação que pensei de várias formas mas não cheguei a uma conclusão. Vou dar um exemplo para ver se fica mais fácil:
Tenho um funcionário que registra ponto nos seguintes horários: 08:00 12:00 13:00 18:00 (todos os dias)
A minha aplicação precisa validar se o funcionário marcou ponto e quais os horários fazendo inclusive a conta das horas extras e faltas. Alguma dica de como eu posso começar a fazer? Acredito ser algo bem complexo. Pois meu maior problema é cruzar marcação do ponto x qual deveria ser o horário da marcação, isso por dia e por horário.
Consegue me dar uma luz?
Pedro,
Consegue me enviar uma amostra de dados (ainda que fictícios) para que com base no seu modelo possa desenvolver algo útil pra você?
Marcações.txt
sequencia / codigo funcionario / data_marcacao / hora_marcacao
000078 01744 26/03/2018 11:58
000079 02158 26/03/2018 11:58
000080 02211 26/03/2018 11:58
000081 00692 26/03/2018 11:59
000082 02284 26/03/2018 11:59
000083 00140 26/03/2018 11:59
000084 02104 26/03/2018 12:00
000085 02179 26/03/2018 12:00
000086 02265 26/03/2018 12:00
000087 00944 26/03/2018 12:00
000088 00771 26/03/2018 12:00
000089 01998 26/03/2018 12:01
000090 02175 26/03/2018 12:01
000091 02200 26/03/2018 12:02
000092 02046 26/03/2018 12:03
000093 02213 26/03/2018 12:04
000094 02155 26/03/2018 12:04
000095 02298 26/03/2018 12:05
000096 02266 26/03/2018 12:07
000097 00178 26/03/2018 12:07
000098 02143 26/03/2018 12:09
000099 02159 26/03/2018 13:00
000100 02310 26/03/2018 13:00
000101 01227 26/03/2018 13:01
000102 02211 26/03/2018 13:04
000103 00140 26/03/2018 13:08
000104 02104 26/03/2018 13:09
000105 02158 26/03/2018 13:12
000106 01744 26/03/2018 13:12
000107 01998 26/03/2018 13:12
000108 00178 26/03/2018 13:13
000109 02200 26/03/2018 13:13
000110 02321 26/03/2018 13:13
000111 02213 26/03/2018 13:14
000112 00692 26/03/2018 13:15
000113 02284 26/03/2018 13:15
000114 02155 26/03/2018 13:18
000115 12238 26/03/2018 13:25
000116 12241 26/03/2018 13:25
000263 02221 27/03/2018 07:58
000264 01731 27/03/2018 07:59
000265 02201 27/03/2018 07:59
000266 02104 27/03/2018 08:00
000267 02284 27/03/2018 08:01
Funcionários TXT:
Contem os dados dos funcionários, difícil te enviar.
segue abaixo fictício
2159 JOAO
2310 JOSE
1997 MARIA
2104 PAULO
etc..
Depois tenho outra tabela onde tenho os horarios que os funcionarios devem cumprir,
Nesse caso ainda não tenho o layout dela, pois não sei como ficaria melhor pro qlik entender.
2159 JOAO 08:00 12:00 13:00 18:00 segunda,terca,quarta,quinta,sexta
2159 JOAO 08:00 12:00 sabado
2310 JOSE 08:00 11:00 13:00 17:00 segunda,terca,quarta,quinta,sexta
2310 JOSE 08:00 11:00 12:00 15:00 sabado
1997 MARIA 08:00 12:00 13:00 18:00 segunda,terca,quarta,quinta,sexta
2104 PAULO 08:00 12:00 13:00 18:00 segunda,terca,quarta,quinta,sexta
etc.. lembrando ainda que vai ter horários em que é sábado e teria que cruzar também
Entendeu mais ou menos?
A ideia é cruzar tudo isso e retornar lista de quem não marcou ponto x horário x dia da semana
Em Excel eu imaginei algo assim, o que for OK eu desconsidero, pois vou tratar apenas o que gerou anomalia.
Ficou mais claro ?
Data | Cargo | ||||||
CODIGO | NOME | CARGO | DATA | HORA MARCADA | HORARIO | TEMPO | ANOMALIA |
2160 | JOSE | MOTORISTA | 27/03/2018 | 07:59 | 08:00 | 00:01 | HORA EXTRA |
2160 | JOSE | MOTORISTA | 27/03/2018 | 12:00 | 12:00 | 00:00 | OK |
2160 | JOSE | MOTORISTA | 27/03/2018 | Não marcou | 13:00 | 04:00 | ATRASO |
2160 | JOSE | MOTORISTA | 27/03/2018 | 18:30 | 18:00 | 00:30 | HORA EXTRA |