Alunos victorcastro_a Postado Março 9, 2022 Alunos Compartilhar Postado Março 9, 2022 No meu relatório eu tenho as tabelas fFolhaPagamento, dCalendario e dFuncionario. Na tabela dCalendario eu utilizo as seguintes funções: DataMin = List.Min(fEconomico[Data Emissão] & fFinanceiro[Disponibilidade] & fFolhaPagamento[Periodo] & fExtratoItau[Data]), DataMax = List.Max(fEconomico[Data Emissão] & fFinanceiro[Disponibilidade] & fFolhaPagamento[Periodo] & fExtratoItau[Data]), Na tabela dFuncionario Fonte = Table.SelectColumns(fFolhaPagamento, {"Matrícula", "Nome"}), #"Duplicatas Removidas" = Table.Distinct(Fonte) Dessa maneira, a consulta é executada 3 vezes, o que deixa o carregamento lento. Existe uma melhor forma para fazer isso? Link para o comentário Compartilhar em outros sites More sharing options...
0 Alunos Solução Vitor Peralva Postado Março 18, 2022 Alunos Solução Compartilhar Postado Março 18, 2022 Em 16/03/2022 em 15:04, victorcastro_a disse: Obrigado pela resposta. Sobre a sugestão para a dFuncionario, porque essa maneira aí teria ganho de performance? Sobre a dCalendario, o usuário pode querer atualizar relatórios isolados, então tenho que juntar essas 4 datas para garantir. O relatório que possui a data de emissão é o econômico. Pode ser que ele atualize somente o financeiro, contendo uma data anterior. Sobre o nome dos arquivos eu não entendi sua sugestão. Poderia me explicar melhor? Segui sua sugestão de criar um List.Buffer e acredito que melhorou um pouco no carregamento da dCalendario, pois ela não precisou carregar duas vezes a mesma lista. Obrigado! Vamos Lá! dFuncionario. O ganho estaria no fato de você aplicar primeiro um filtro a uma coluna e trazer somente os resultados das colunas que precisa. Não é um ganho grande, e, em bases pequenas, pode ser praticamente imperceptível. dCalendario Você não pode ficar sujeito a todas as possibilidades de formas de utilização do usuário. Tem que pensar naquilo que é padrão. E veja, se estas datas máximas correspondem ao ano calendário, nem precisaria delas para data máxima. Bastaria levar a data atual para o final do ano atual. Lembre-se que na dCalendario você deve trabalhar com o ano completo. Gosto, inclusive, muto mais desta solução. Nome dos Arquivos. Se você tem arquivos com o nome: "Contabilizacao_-_Funcionario 10-2021", percebe que você tem uma indicação de mês nele? Você poderia extrai da listagem de arquivos este Ano/Mês, converter em data e você teria os períodos para usar na dCalendario. Com isto, se tiver 24 arquivos, analisaria 24 linhas. Numa tabela fato, ela teria que acessar a listagem, conferir data por data e determinar o menor e o maior, embora isto ocorra de forma super rápida, ainda assim, o número de linhas é muito superior e o mesmo tende a ocorrer com a utilização de recursos. Link para o comentário Compartilhar em outros sites More sharing options...
0 Alunos Vitor Peralva Postado Março 14, 2022 Alunos Compartilhar Postado Março 14, 2022 Desempenho é sempre algo complexo, mas vamos lá: No que tange a dFuncionario, provavelmente você vai conseguir um melhor desempenho fazendo o seguinte: Cria uma consulta nula e na Barra de Fórmula coloca: = Table.Distinct(fFolhaPagamento[[Matrícula], [Nome]], "Matrícula") Sobre a dCalendario, veja que você quer unir informações de 4 colunas. A primeira reflexão é se precisa realmente destas 4 colunas. Exemplo.: Existe uma Data de Emissão ela não precederia sempre às outras? Se sim, bastaria pegar a data mínima dela. Outro ponto é que se os nomes dos arquivos possuem referência aos períodos, você poderia utilizar eles como base para extração, trabalhando com muito menos linhas e tornando o processo muito mais rápido. Se nada disso se aplicar ao seu caso, crie uma etapa antecedente, com a união das listas e coloque um List.Buffer e faço o List.Min e o List.Max desta etapa, evitando a montagem e a leitura por 2 (duas) vezes desta junção de datas. Link para o comentário Compartilhar em outros sites More sharing options...
0 Alunos victorcastro_a Postado Março 16, 2022 Autor Alunos Compartilhar Postado Março 16, 2022 Obrigado pela resposta. Sobre a sugestão para a dFuncionario, porque essa maneira aí teria ganho de performance? Sobre a dCalendario, o usuário pode querer atualizar relatórios isolados, então tenho que juntar essas 4 datas para garantir. O relatório que possui a data de emissão é o econômico. Pode ser que ele atualize somente o financeiro, contendo uma data anterior. Sobre o nome dos arquivos eu não entendi sua sugestão. Poderia me explicar melhor? Segui sua sugestão de criar um List.Buffer e acredito que melhorou um pouco no carregamento da dCalendario, pois ela não precisou carregar duas vezes a mesma lista. Obrigado! Link para o comentário Compartilhar em outros sites More sharing options...
0 Alunos Frank Figueredo Postado Maio 28, 2022 Alunos Compartilhar Postado Maio 28, 2022 @victorcastro_a conseguiu resolver? a resposta do Peralva te ajudou? se sim define ela como a melhor resposta para o tópico. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
victorcastro_a
No meu relatório eu tenho as tabelas fFolhaPagamento, dCalendario e dFuncionario.
Na tabela dCalendario eu utilizo as seguintes funções:
DataMin = List.Min(fEconomico[Data Emissão] & fFinanceiro[Disponibilidade] & fFolhaPagamento[Periodo] & fExtratoItau[Data]), DataMax = List.Max(fEconomico[Data Emissão] & fFinanceiro[Disponibilidade] & fFolhaPagamento[Periodo] & fExtratoItau[Data]),
Na tabela dFuncionario
Fonte = Table.SelectColumns(fFolhaPagamento, {"Matrícula", "Nome"}), #"Duplicatas Removidas" = Table.Distinct(Fonte)
Dessa maneira, a consulta é executada 3 vezes, o que deixa o carregamento lento. Existe uma melhor forma para fazer isso?
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Faça login para comentar
Você vai ser capaz de deixar um comentário após fazer o login
Entrar Agora