Free Trial

Fórum

SOLUCIONADO

Dividir linhas igualmente baseado em uma coluna

CaioCesar
Meteoro

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.

 

 

image.png

 

 

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!

13 RESPOSTAS 13
carlosteixeira
15 - Aurora
15 - Aurora

@CaioCesar 

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:

carlosteixeira2005_0-1603997347347.png

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.

carlosteixeira2005_1-1603997421120.png

 

 

Continuo pensando aqui em uma solução automatica, se eu achar alguma saída te envio aqui.

 

Abraços

 

Carlos A Teixeira
CaioCesar
Meteoro

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:

CaioCesar_0-1603997910385.png

 

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,

 

CaioCesar
Meteoro

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. 

 

CaioCesar_0-1604005598888.png

 

 

Porém ainda estou travado na parte de distribuir.

 

At.te,

carlosteixeira
15 - Aurora
15 - Aurora

@CaioCesar vc precisa mesmo ter esse cartesiano gigante saindo no join?

Carlos A Teixeira
carlosteixeira
15 - Aurora
15 - Aurora

@CaioCesar 

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?

carlosteixeira2005_0-1604017648084.png

 

Abraços.

 

PS - um amigo me ajudou na lógica.

Carlos A Teixeira
Malvim
Bólide

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_1-1604029610217.png

Malvim_2-1604029682211.png

 

 

 

Malvim
Bólide

Acredito que consegui através de uma Macro Iterativa.

 

Se der certo me avisa. Eu vou ficar bem feliz de ter conseguido ajudar!

 

😃

 

 

 

Malvim_0-1604032945049.png

 

Execução:

Malvim_2-1604033065561.png

 

 

carlosteixeira
15 - Aurora
15 - Aurora

@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. 😉

Carlos A Teixeira
Malvim
Bólide

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

Rótulos