Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Amigos, boa tarde.
Mais uma vez preciso da ajuda de vocês, eu procurei por todo o fórum e pelo google sobre isso e não conseguir encontrar, talvez eu não esteja sabendo procurar, mas só vocês poderão me dizer isso.
Vamos lá, hoje estou fazendo um BINARY de uma aplicação do servidor e a partir dela gerando um QVD para cada tabela presente nesta aplicação. A tabela FATO possui mais ou menos 110 milhões de registro, no entanto eu não preciso ter o mesmo nível de detalhe desta tabela e por isso eu comento diversos campos desta tabela quando vou carregar o QVD na minha aplicação. No entanto, a quantidade de registros da minha aplicação está se mantendo e não deveria, pois os campos que comento são os campos que tornam a tabela extensa.
Por favor, sabem me dizer como consigo deixar essa nova tabela com registros únicos? Seria com group by? Se sim, como seria a expressão?
Segue SCRIPT de como estou fazendo a carga com o QVD:
Fato:
LOAD pk_atividade,
pk_empresa,
COD_OPERACAO_ORIGEM,
pk_relatorios_receita,
pk_estrutura_book_qlik,
pk_cod_receita_ajuste,
Fato_Cenario,
Fato_Empresa_Unidade,
// Fato_ContaContabil,
// Fato_CentroCusto,
Fato_Empresa_Origem,
Fato_Tipo_Lanc,
Fato_RecDesp,
Fato_CodigoBook,
Fato_CodigoBook_Desc,
Fato_CodigoDRE,
Fato_AtividadeSub,
Fato_Periodo_Ano,
Fato_Periodo_Mes,
Fato_Periodo,
Rateio_Percentual,
Fato_AMX_Atividade,
Segmentacao,
// Fato_ContaContabil_Desc,
// Fato_CentroCusto_Desc,
// Fato_ContaContabil_Origem,
// Fato_CentroCusto_Origem,
// Fato_BaseRateio,
Fato_Valor,
pk_atividade_dre_Rateio
FROM
QVD\Fato.qvd
(qvd);
Desde já obrigado.
Abraços.
Diego
Se entendi corretamente você está somente diminuindo o número de campos, e não de registros.
Se você pode eliminar esse detalhamento (que você está fazendo com os comentários), você vai ter que partir para um group By. É mais ou menos assim:
Load <campo dimensão 1>,
<campo dimensão 2>,
<campo dimensão N>,
Sum(<campo fato 1>) As <campo fato 1>,
Sum(<campo fato 2>) As <campo fato 2>,
Sum(<campo fato N>) As <campo fato N>
From <arquivo>
Group By <campo dimensão 1>,
<campo dimensão 2>,
<campo dimensão N>
Lembrando que no lugar do SUM pode ser qualquer função de agragação.
Diego
Se entendi corretamente você está somente diminuindo o número de campos, e não de registros.
Se você pode eliminar esse detalhamento (que você está fazendo com os comentários), você vai ter que partir para um group By. É mais ou menos assim:
Load <campo dimensão 1>,
<campo dimensão 2>,
<campo dimensão N>,
Sum(<campo fato 1>) As <campo fato 1>,
Sum(<campo fato 2>) As <campo fato 2>,
Sum(<campo fato N>) As <campo fato N>
From <arquivo>
Group By <campo dimensão 1>,
<campo dimensão 2>,
<campo dimensão N>
Lembrando que no lugar do SUM pode ser qualquer função de agragação.
Lembrando que um group by de 110 milhoes vai tomar um tempinho considerável
Sim, com certeza.
Estou rodando já tem 40min e nada ainda! Mas como não gerou nenhum erro, acredito que o Group By está funcionando.
Estou aguardando!
Pega um cafezinho, relaxa, uma hora vai dar certo.
Só tome cuidado com alocação de memória deve estar assim
Conseguiu amigo?
Dependendo do cenário... Possa ser mais interessante extrair direto da base já com o agrupamento.
Bom dia!! O processo realmente é muito lento, mas a tua resposta foi correta!! Mas devido à morosidade estou pensando em uma nova alternativa!!!
Muito obrigado pelo apoio!
Abraços!!