Ir para conteúdo
  • 0

Conexão a uma view unica ou separadas com relacionamento.


gustavofill

Pergunta

  • Alunos

Boa tarde!

 

Tenho dois projetos onde estou com essa mesma dúvida.

Em ambos os bancos, possuo tabelas CAPA_VENDA e outra ITEM_VENDA.

Ambos projetos possuem no minimo 20 colunas de dados OBRIGATORIOS em cada tabela com mais de 20 milhões de linhas.

 

O que seria mais performático?

 

1. Criar uma view somente com os dados que preciso entre as duas.

(o que resultaria em uma view com no minimo 40 colunas extremamente pesada gerando muitos dados duplicados da capa da venda).

Exemplo: VW_VENDAS (realizar os joins entre as tabelas)

 

2. Criar views de cada tabela somente com os dados que preciso e criar uma key entre as duas para o relacionamento.

(o que resulta em views com menos dados duplicados, porem, com uma key "consideravel", seria algo como: "1253609072021154773569". Lembrando que essa key sera repetida em todas as linhas da VW_CAPA e VW_ITEM, o que também não deixa de tornar o relatorio pesado.

Exemplo: VW_CAPA e VW_ITEM

 

 

Observações: Já fiz o teste em ambos os casos.

Pelo método 1 a atualização dos dados demora extremamente mais que no caso 2. Em uma consulta normal estava levando algo em torno de 2 a 3 horas.

Porem, o tamanho do PBIX ficou algo 60% menor que no caso 2.

 

Pelo método 2, a atualização ficou muito mais rapida, levando no máximo 10-15 minutos.

Porem, o tamanho do PBIX ficou consideravelmente maior devido as "keys" para o relacionamento das tabelas.

 

 

O que vocês me recomendam fazer? Estou com uma base aqui de aprox 190 milhões de linhas para trabalhar e preciso resolver isso.

Agradeço desde já.

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos

Bom dia @Alex@Leandro Rafael e @Rafa Lemos..

Eu consegui "resolver" criando um fluxo de dados "historico", que foi onde eu coloquei todos os dados anteriores (em torno de 90% da base).

Com isso, acabei criando dois fluxos, um "atualizavel" e o outro apenas com o histórico.

No conjunto, eu puxei a tabela atualizável e acrescentei a tabela historico à ela..

Não consigo colocar a atualização incremental pois é preciso licença premium. E preciso trabalhar pelo fluxo pois será necessário criar um relatorio com dados de diversas empresas do cliente juntos. O que no conjunto eu não consigo "unir".

Acabei criando a tabela pelo metodo 1, que seria apenas 1 tabela de vendas completa, apenas com dados que não são possiveis "resumir".

Esse método é válido? Ou vocês tem alguma ideia melhor pra esse caso?

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

 

41 minutos atrás, Rafa Lemos disse:

@gustavofill consegue compartilhar conosco quais colunas tem em cada uma das views?

Pelo que passou, você não chegou a fazer tabelas dimensões.

Só pelo que informou, eu veria a possibilidade de fazer uma dimensão dos itens, outra dimensão de vendas.

 

 

Boa tarde Rafa, tudo certo?

Sim, deixei apenas colunas chaves que não há possibilidade de dimensionar.

Não há uma "key" UNICA para as tabelas pois como são muitas filiais, possuo os mesmos numeros de cupons, notas, operadores, pdv's e et.. Preciso fazer um "CONCAT" de 4 ou 5 colunas para criar uma coluna chave de relacionamento entre elas.

Peguei alguns exemplos mais simples e anexei abaixo.

O que eu fiz de momento foi:

CAPA = informações dos dados da venda. (data, nf, serie, operador, vendedor, etc)...

ITEM = informações de venda dos itens. (qtd, valor, impostos, codigos promocionais, combos, etc)...

 

Anexei abaixo algumas print's que auxiliam no entendimento.

 

 

 

 

OPERACOES_ITEM.png

OPERACOES_CAPA.png

ITEM_VENDA.png

CAPA_VENDA.png

CAPA_PEDIDO.png

ITEM_PEDIDO.png

RELACIONAMENTO.png

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Opa, e ae, blz?

Cara a um tempo atras eu postei essa mesma dúvida no grupo do Telegram, e se não me engano, o próprio Leo disse que eh melhor uma tabela unica, com tudo.

Vc tentar montar um tabelão com as principais informações e separar as dimensões.

Eu comecei a fazer algo deste tipo aqui, mas empaquei em algumas medidas, então fui para outras coisa para fazer para depois voltar nisso.

No meu caso, eu to fazendo tudo em fluxos de dados e depois eu conecto com o PBI no fluxo de dados, percebi que fica mais rápido.

Espero ter ajudado.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Olá, Gustavo, Tudo certo?

Nesses casos de grandes bases de dados o primeiro a se analisar é a possibilidade de agregação desses registros. Eu já tive casos que consegui reduzir 50 milhões para 300 mil linhas de uma tabela.

Caso não tenha como fazer agregação eu sugiro ir pelo método 1 que você testou, pois quanto maior a cardinalidade(registros exclusivos) de uma tabela, menos performático o modelo será, e mais espaço ocupará, por isso ficou 60% menor o tamanho do PBIX.

Sendo assim o problema na demora da atualização você pode contornar fazendo uma atualização incremental, em que a primeira atualização será muito demorada, mas as demais serão extremamente rápidas.

Editado por Leandro Rafael
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Oi @gustavofill, bom dia!!

Legal o fluxo Histórico e o Fluxo atualizável, no PBI acredito que vc mescle os dois para ter os resultados esperados.

Eu acredito que seja válido sim, eu mesmo utilizo algo parecido.

Acredito que vc precisará pensar numa estratégia agora para atualizar a base histórica e deixar a atualizável sempre pequena para ter performance nas atualizações.

Algo como se a histórica "andasse" e a atualizável tbm, assim vc ficaria sempre com um mês por exemplo da atualizável e da histórica sempre com os ultimos tres anos ate o ultimo mes por exemplo.

não sei se fui claro.

e espero ter ajudado.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
30 minutos atrás, Leandro Rafael disse:

Boa tarde Gustavo,

Que bom que conseguiu uma solução com Dataflows.

Realmente a atualização incremntal em Dataflows está disponível apenas  para Premmium.

Boa tarde Leandro.

 

Mas não para o dataflow, certo?

 

Apenas para o conjunto de dados.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
5 horas atrás, gustavofill disse:

Boa tarde Leandro.

 

Mas não para o dataflow, certo?

 

Apenas para o conjunto de dados.

Atualização Incremental para Dataflow nos usuários Premmium.

Mas parece que agora também tem para usuários Pro.

Ou seja para  os dois tipos de licença está habilitada a funcionalidade de atualização incremental em Dataflows.

Esta configuração do incremental vc fará no PowerBI online.

Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...