Prezados, boa tarde.
Contexto:
Estou com um projeto de telemarketing dos quais tenho uma lista de números para serem discados e uma lista de discadores. Preciso dividir igualmente (ou proporcionalmente) os registros a serem discados, pela quantidade de discadores (anexo).
Entrada:
32.339 Números
138 Discadores
Resultado Esperado:
(32.339/138) = 234+- números distintos por Discador.
Ou seja, 32.339 com uma nova coluna de código do discador dividido igualitariamente.
Alguém sabe a melhor maneira de fazer isto?
PS¹: Tentei pela ferramenta de Generate Rows, mas está estourando a memória (pela quantidade de registros).
PS²: Todos dos valores são dinâmicos, ou seja, hoje é 32.000/138, amanha pode ser 50.000/200....
Desde já agradeço!
Solucionado! Ir para Solução.
tem uma forma fácil de fazer isso mas que ainda vai exigir uma intervenção humanao minima.
Você pode usar a ferramenta TILE para criar os grupos e depois associa-los com o join.
Segue um exemplo:
Segue o flow em anexo, no caso você precisaria incluir a quantidade de Tiles iguais para cada uma das ferramentas TILE assim você gera uma chave entre os dois.
Continuo pensando aqui em uma solução automatica, se eu achar alguma saída te envio aqui.
Abraços
Obrigado pela presteza Carlos!
Atualmente já está sendo feito de forma manual, pelo SQL usando UPDATE TOP. Porém, queria tirar toda a intervenção humana. Porque isto vai rodar no Automation de madrugada, se eu colocar o input manual, teria que acordar toda madrugada pra olhar isso haha.
Por isso estava pensando uma lógica usando Sample ou algo do tipo. Mas ainda não tive sucesso...
Ultimo teste que tentei:
Eu estou sugerindo 234, mas o fluxo distribui de forma desordenada, alguns com mais de 500 outros com menos de 50, completamente desbalanceado 😕
Sigo pensando aqui também! Obrigado!
At.te,
Update:
Usei o Running Total pra criar um rank baseado no ID do número e no total de discadores.
Agora eu tenho o seguinte:
Cada um dos 32.000 registros repetem 138 vezes cada um, porém cada um tem um número de 1 a 138 (Rank). Tava pensando agora em usar esses 138 para ser um id do discador e fazer um join com os 138 discadores.
Porém ainda estou travado na parte de distribuir.
At.te,
@CaioCesar vc precisa mesmo ter esse cartesiano gigante saindo no join?
Tudo bem?
Segue em anexo um workflow onde eu simulei a sua necessidade com INPUT TEXT, troca essas 2 entradas pelos seus arquivos e veja se funciona.
No final, após o join, inclui um unique para caso existam numeros de telefone duplicados na sua base ele seja discado apenas por um discador ok?
Abraços.
PS - um amigo me ajudou na lógica.
Olá @carlosteixeira
Acabei me aventurando em testar sua solução.
Quando aumentei o número de telefones pra 14 e o número de discadores pra 6 a distribuição, além de não ficar 'justa', suprimiu alguns Discadores.
Mas também ainda não consegui achar uma solução. Sigo tentando!
@Malvim boaaaaa!
Eu até tinha pensado nessa hipótese de criar uma macro interativa, mas acabei indo para tentar resolver sem a Macro.
Me parece ser a melhor solução para o @CaioCesar uma vez que não existe o Cartesiano de cruzar tudo com tudo.
@CaioCesar testa aí a solução do @Malvim e nos diga se funcionou para você.
Abraços aos 2.
Carlos Teixeira
PS - @Malvim obrigado pelo feedback sobre minha solução, não testei com volumes maiores. 😉
Obrigado @carlosteixeira !
Eu até cheguei a pensar se exisita alguma maneira de criar um parâmetro dinâmico pro 'Tiles', não sei nem se é possível.
Eu confesso que baixei pra dar uma olhada pra ver como você tinha resolvido, não era a intenção achar falhas, mas como acabei encontrando me senti desafiado a resolver. Ainda bem que consegui. Ia ser meio chato falar da falha e depois não propor nada.
Marcus Alvim