Eu tenho uma tabela de origem que se parece essencialmente com isso:
- Código de empregado
- Data de início da semana
- Horas Trabalhadas Dia1
- Horas Trabalhadas Dia2
- Horas Trabalhadas Dia3
- Horas Trabalhadas Dia 4
- Horas Trabalhadas Dia5
- Horas TrabalhadasDia6
- Horas TrabalhadasDia7
A tabela real tem algo como 500 colunas numeradas (na verdade não as contei - existem vários e numerosos campos numerados de 1 a 7 e, em seguida, outro punhado numerado de 1 a 25, vezes 7) por dia da semana (não, esse não é o meu projeto) , e atualmente há algo como 38.600 linhas (crescendo a cada semana).
Eu tenho um pacote SSIS que está tentando normalizar esses dados... que atualmente se parece com isso:
Cada "origem" está selecionando um conjunto de colunas numeradas da mesma tabela de origem, e o componente UNION ALL combina as 7 origens em uma, resultando em cerca de 258.900 linhas.
O restante do fluxo de trabalho adiciona algumas colunas calculadas, procura chaves substitutas (por exemplo EmployeeCode
, é usado para pesquisar um EmployeeId
, e então a data é calculada e usada para procurar um TimeId
) e, em seguida, as linhas "modificadas" são atualizadas e as "novas" uns são inseridos em uma tabela normalizada; linhas inalteradas não terminam em lugar nenhum.
Existe alguma maneira melhor (por exemplo, um pouco menos pesado na pressão da memória) para normalizar os dados de origem?