Estamos no processo de engenharia de uma solução de BI.
Um problema que temos é que, infelizmente, muitas informações de RH (data de início, departamento, data de mudança de departamento, horário de trabalho, etc etc) - me parecem mantidas manualmente em uma planilha do Excel. Desnecessário dizer que carece de padronização, validação, está sujeito a erros, falta de completude, etc. Não é bom.
Não tenho certeza da maneira mais direta de melhorar isso. Atualmente, usamos um software de RH que não possui uma API. E nem tenho certeza de que contém todos os campos de dados necessários ou validação de entrada.
Em um mundo ideal, eu poderia apenas exigir que encontrássemos um novo software que tivesse uma API e validação de dados. Mas não vejo isso acontecendo. Mas talvez seja a única solução.
Caso contrário, estou tentando pensar em uma solução simples onde os usuários possam visualizar o banco de dados atual (id, nome do funcionário, data de início, departamento, etc) ... e possivelmente fazer alterações diretas ou, pelo menos, propor alterações para serem aprovadas . Algum tipo de entrada que tenha pelo menos verificações e validações básicas, alterações de timestamps e quem as fez, etc.
Eu sei que esta é uma questão bastante aberta, mas o que é uma solução direta possível?
Idealmente, eu gostaria de não ter que montar algum aplicativo do zero, pelo menos não muito.
Não pode ser a primeira empresa aqui tentando rastrear o número de funcionários e os custos do departamento mês a mês.
No final das contas, muitas dessas coisas precisam ser inseridas por um humano em algum momento. Se alguém muda de departamento, isso é basicamente uma abstração. Um sistema de computador pode não saber se alguém passou do trabalho para marketing e agora está trabalhando com vendas. Um ser humano terá que inserir essa mudança em algum lugar (idealmente um aplicativo dedicado, mas não necessariamente) - a pessoa, a mudança, a data efetiva. O que é realmente necessário são melhores controles de validação e regras de negócios que um aplicativo, eu mesmo ou outro desenvolvedor, possa impor.
Por exemplo --- não duplicação de IDs de funcionários. (ambos não dando a Mark e John o mesmo ID, nem dando a Mark dois IDs diferentes). Um funcionário trabalhando apenas associado/em 1 departamento em um determinado momento. Fácil visualização e gerenciamento de alterações (ou seja, a data de saída estava incorreta, o histórico de alterações e o carimbo de data/hora das atualizações seriam úteis). Talvez algum software de folha de pagamento/contabilidade decente possa ser aproveitado. Quer dizer, isso não é reinventar a roda, eu me pergunto como as empresas maduras/da Fortune 500 administram isso. Provavelmente software dedicado, mas eh.
O problema é que o banco de dados precisa dessas informações. Atualmente ele recebe de uma planilha Excel lixo. Estou tentando encontrar maneiras de garantir que as informações não sejam lixo. Isso precisa ser feito na forma de uma restrição, ou alerta, ao usuário final antes que o lixo seja enviado para a cadeia. No mínimo, talvez eu possa enviar a eles uma planilha do Excel que tenha sua própria validação nas células, mas isso é comicamente inadequado a longo prazo.
Se você executar o SQL Server Enterprise Edition, ele vem com o Master Data Services, o que parece fazer o que você deseja. Ele foi originalmente planejado para mesclar vários conjuntos de dados e sair com um mestre de ouro, mas se você pensar sobre isso, esse processo pode ser aplicado a quase qualquer trabalho de dados.
É não-nuvem tão seguro para uso interno. Ele tem um aplicativo web usado para definir e editar o esquema e as relações, e também para os usuários visualizarem/inserir/editar os dados existentes (eles também podem fazer isso através de um add-on do Excel que é bem legal).
Usando o mesmo aplicativo da web, você também pode definir regras de negócios rudimentares sobre verificação de dados, configurar opções de exportação de dados (visualizações) e há outras opções para carregar dados inicialmente usando T-SQL.
As alterações de dados têm informações de linhagem e podem ser retidas até serem aprovadas por alguém autorizado. Portanto, há um pequeno componente de fluxo de trabalho possível, embora eu não o tenha visto muito em uso.
Para alterações de esquema, ele possui alguns recursos de versão/linhagem, mas não tenho 100% de certeza se você pode ver quem fez a alteração e/ou se pode separar a alteração do modelo da autorização de uma implantação dele. Ele tem segurança granular e um modelo de metadados para reter essas informações, mas a Microsoft tem questionado se está depreciando esse futuro ou não.