Agrupar registos e cálculos agregados através de origens de dados GROUPBY
Importante
Some or all of the functionality noted in this article is available as part of a preview release. The content and the functionality are subject to change. For more information about preview releases, see Service update availability.
Ao configurar mapeamentos ou formatos de modelos de Relatórios eletrónicos (ER), é possível adicionar origens de dados necessárias do tipo GroupBy.
Durante a estruturação, uma origem de dados GroupBy é configurada para identificar os seguintes elementos:
- Uma origem de dados base que contém registos que serão agrupados durante o runtime
- Campos de agrupamento da origem de dados base, que serão utilizados para o agrupamento de registos durante o runtime
- Funções de agregação que especificam os cálculos agregados que serão efetuados para cada grupo detetado durante o runtime
Durante o runtime, uma origem de dados GroupBy configurada agrupa registos que têm os mesmos valores nos campos de agrupamento e, em seguida, devolve uma lista de registos. Cada registo representa um único grupo. Para cada grupo, a origem de dados expõe os valores de campo pelos quais os registos iniciais foram agrupados, os valores das funções de agregação calculadas e a lista de registos da origem de dados base que pertence ao grupo.
Funções de agregação
Durante o runtime, cada cálculo agregado é efetuado para cada grupo de registos. Este cálculo é efetuado utilizando o valor de um único campo ou uma expressão nos registos de uma origem de dados que foi selecionada para agrupamento na origem de dados editável do tipo GroupBy. As seguintes funções de agregação são atualmente suportadas:
- AVG – Esta função devolve a média dos valores num grupo. Só pode ser utilizada com campos numéricos.
- COUNT – Esta função devolve o número de itens encontrados num grupo.
- Min – Esta função devolve o valor mínimo entre os valores de um grupo.
- Max – Esta função devolve o valor máximo entre os valores de um grupo.
- SUM – Esta função devolve a soma de todos os valores de um grupo. Só pode ser utilizada com campos numéricos.
Localização de execução
Quando edita uma origem de dados GroupBy e especifica a origem de dados base que contém os registos que têm de ser agrupados, o sistema deteta automaticamente a localização mais eficiente para a execução dessa origem de dados GroupBy. Se a origem de dados base for consultável (ou seja, se puder ser executada ao nível da base de dados), a base de dados da aplicação também é especificada como localização de execução da origem de dados GroupBy editável. Caso contrário, a memória do servidor de aplicações é especificada como localização de execução.
Pode alterar manualmente a localização de execução detetada automaticamente ao selecionar a localização aplicável à origem de dados configurada. Se a localização de execução selecionada não for aplicável, é gerado um erro de validação durante a estruturação.
Dica
Recomendamos que utilize a localização da base de dados para agrupar origens de dados que expõem um grande número de registos.
Consumo de memória
Por predefinição, se uma origem de dados GroupBy for executada na memória, a memória do servidor de aplicações é utilizada para armazenar registos da origem de dados base que pertence a cada grupo detetado como registos de um único grupo. Para ajudar a reduzir o consumo de memória, pode suprimir o armazenamento de registos para origens de dados GroupBy se estas foram configuradas para calcular apenas funções de agregação e os registos do respetivo grupo não forem utilizados durante o runtime. Para reduzir o consumo de memória desta forma, ative a funcionalidade Reduzir a utilização de memória nos ER quando o agrupamento de registos só é utilizado para calcular agregações na área de trabalho Gestão de funcionalidades.
Alternativas
Agregações semelhantes podem ser calculadas utilizando diferentes tipos de origens de dados ou funções de ER incorporadas.
Para obter mais sobre esta funcionalidade, conclua o exemplo que se segue.
Exemplo: Utilizar uma origem de dados GROUPBY para agregar cálculos e agrupamento de registos
Este exemplo mostra como um utilizador com função de Administrador de sistema ou Consultor funcional de relatórios eletrónicos pode configurar um mapeamento de modelos de ER que tem uma origem de dados GROUPBY que é utilizada para calcular funções de agregação e registos de grupos. Este mapeamento de modelos é utilizado para imprimir o relatório de controlo quando a declaração Intrastat é gerada. Esse relatório permite rever transações Intrastat reportadas.
Os procedimentos neste exemplo podem ser concluídos na empresa DEMF no Microsoft Dynamics 365 Finance.
Preparar dados de exemplo
Certifique-se de que tem transações Intrastat para reportar na página Intrastat. Tem de ter transações para diferentes códigos de transporte, pois irá agrupar as transações pelo campo Transporte neste exemplo.
Configurar o enquadramento ER
Siga os passos em Configurar o enquadramento ER para configurar os parâmetros mínimos de ER. Tem de completar esta configuração antes de começar a utilizar a arquitetura de ER para estruturar um mapeamento de modelos de ER.
Importar a configuração de formato de ER padrão
Siga os passos indicados em Importar a configuração de formato de ER padrão para adicionar as configurações de ER padrão à instância atual do Dynamics 365 Finance. Importe a versão 1 da configuração modelo Intrastat a partir do repositório.
Criar uma configuração personalizada do modelo de dados
Siga os passos indicados em Adicionar uma configuração personalizada do modelo de dados para adicionar manualmente uma nova configuração do modelo de dados de ER modelo Intrastat (Litware) que derivou da configuração do modelo Intrastat importado.
Configurar um componente de modelo de dados personalizado
Siga estes passos para efetuar as alterações necessárias ao modelo de dados modelo Intrastat (Litware) derivado, para que possa ser utilizado para expor códigos de transporte que tenham os detalhes necessários.
Vá para Administração da organização > Relatórios eletrónicos > Configurações.
Na página Configurações, na árvore de configuração, selecione modelo Intrastat (Litware).
Selecione Estruturador.
Na página Estruturador de modelo de dados, na árvore do modelo, selecione Intrastat.
Selecione Novo para adicionar um novo nó aninhado ao nó Intrastat selecionado. Na caixa de diálogo pendente para adicionar um nó de modelo de dados, siga estes passos:
- No campo Nome, introduza Transporte.
- No campo Tipo de item, selecione Lista de registos.
- Selecione Adicionar para adicionar o novo nó.
Selecione Novo para adicionar um novo nó aninhado ao nó Transporte que acaba de adicionar. Na caixa de diálogo pendente para adicionar um nó de modelo de dados, siga estes passos:
- No campo Nome, introduza Código.
- No campo Tipo de item, selecione Cadeia.
- Selecione Adicionar para adicionar o novo nó.
Selecione Novo para adicionar outro novo nó aninhado ao nó Transporte. Na caixa de diálogo pendente para adicionar um nó de modelo de dados, siga estes passos:
- No campo Nome, introduza TotalInvoicedAmount.
- No campo Tipo de item, selecione Real.
- Selecione Adicionar para adicionar o novo nó.
Selecione Novo para adicionar outro novo nó aninhado ao nó Transporte. Na caixa de diálogo pendente para adicionar um nó de modelo de dados, siga estes passos:
- No campo Nome, introduza NumberOfTransactions.
- No campo Tipo de item, selecione Número inteiro.
- Selecione Adicionar para adicionar o novo nó.
Selecione Novo para adicionar outro novo nó aninhado ao nó Transporte. Na caixa de diálogo pendente para adicionar um nó de modelo de dados, siga estes passos:
- No campo Nome, introduza Transação.
- No campo Tipo de item, selecione Lista de registos.
- Selecione Adicionar para adicionar o novo nó.
Para o nó Transação que acaba de adicionar, no Separador Rápido Nó, selecione Mudar referência de item.
Na caixa de diálogo Mudar referência de item, na árvore do modelo de dados, selecione CommodityRecord. Em seguida, selecione OK.
Concluir a estrutura de um modelo de dados personalizado
Siga os passos indicados em Concluir a estrutura do modelo de dados para concluir a estrutura do modelo de dados modelo Intrastat (Litware) derivado.
Criar uma nova configuração de mapeamento de modelos
Siga os passos indicados em Criar uma nova configuração de mapeamento de modelos para adicionar manualmente uma nova configuração do mapeamento de modelos de ER do Mapeamento de amostra Intrastat para a configuração derivada modelo Intrastat (Litware).
Adicionar um novo componente de mapeamento de modelos
- Vá para Administração da organização > Relatórios eletrónicos > Configurações.
- Na página Configurações, na árvore de configuração, expanda a configuração modelo Intrastat.
- Selecione a configuração Mapeamento de amostra Intrastat.
- Selecione Estruturador para abrir a lista de mapeamentos.
- Selecione Eliminar para remover o componente de mapeamento existente.
- Selecione Novo para adicionar um novo componente de mapeamento.
- No campo Definição, selecione Intrastat.
- No campo Nome, introduza Mapeamento Intrastat.
- Selecione Estruturador para configurar o novo mapeamento.
Estruturar o componente de mapeamento de modelos adicionado
Adicionar uma origem de dados para aceder a uma tabela de aplicação
Configure uma origem de dados para aceder às tabelas de aplicação que contêm os detalhes das transações Intrastat.
- Na página Estruturador de mapeamento de modelo, no painel Tipos de origens de dados, selecione Dynamics 365 for Operations\Registos de tabelas.
- No painel Origens de dados, selecione Adicionar raiz para adicionar uma nova origem de dados que será usada para aceder à tabela Intrastat. Cada registo na tabela Intrastat representa uma única transação Intrastat.
- Na caixa de diálogo Propriedades da origem de dados, no campo Nome, introduza Transação.
- No campo Tabela, introduza Intrastat.
- Selecione OK para adicionar a nova origem de dados.
Adicionar uma origem de dados para agrupar transações Intrastat
Configure uma origem de dados GroupBy para agrupar transações Intrastat e calcular funções de agregação.
Na página Estruturador de mapeamento de modelos, no painel Tipos de origens de dados, selecione Funções\Agrupar por.
No painel Origens de dados, selecione Adicionar raiz para adicionar uma nova origem de dados que será usada para agrupar transações Intrastat e calcular funções de agregação.
Na caixa de diálogo Propriedades da origem de dados, no campo Nome, introduza TransportRecord.
Selecione Editar grupo por para configurar as condições de agrupamento.
Na página Editar parâmetros "Agrupar por", na lista de origens de dados no painel direito, selecione a origem de dados Transação e expanda-a.
Selecione Adicionar campo a > O que agrupar para indicar que a origem de dados Transação está selecionada como origem de dados base para a origem de dados GroupBy configurada. Os registos da origem de dados Transação serão agrupados e os valores de campo desta origem de dados serão utilizados para cálculos em funções de agregação.
Selecione o campo Transação\Transporte e, em seguida, selecione Adicionar campo a > Campos agrupados para indicar que o campo Transporte da origem de dados base está selecionado como critério de agrupamento para a origem de dados GroupBy configurada. Por outras palavras, os registos da origem de dados Transação serão agrupados com base no valor do campo Transporte. Cada registo da origem de dados GroupBy configurada representará um único código de transporte que foi encontrado nos registos da origem de dados base.
Selecione o campo Transaction\AmountMST e, em seguida, siga estes passos:
- Selecione Adicionar campo a > Campos agregados para indicar que uma função de agregação será calculada para este campo.
- No painel Agregações, no registo que foi adicionado para o campo Transaction\AmountMST selecionado, no campo Método, selecione a função Sum.
- No campo opcional Nome, introduza TotalInvoicedAmount.
Estas definições especificam que, para cada grupo de transporte, será calculado o montante total do campo Transaction\AmountMST.
Selecione o campo Transaction\RecId e, em seguida, siga estes passos:
- Selecione Adicionar campo a > Campos agregados para indicar que uma função de agregação será calculada para este campo.
- No painel Agregações, no registo que foi adicionado para o campo Transaction\RecId selecionado, no campo Método, selecione a função Contagem.
- No campo opcional Nome, introduza NumberOfTransactions.
Estas definições especificam que, para cada grupo de transporte, será calculado o número de transações no grupo.
Selecione Guardar.
Reveja os parâmetros de execução da origem de dados editável. Tenha em atenção que Deteção automática foi selecionada automaticamente no campo Localização de execução e o campo Execução em contém o valor SQL. Estas definições especificam que a origem de dados base selecionada Transação é atualmente consultável e é possível executar a origem de dados GroupBy editável ao nível da base de dados.
Abra a procura para o campo Localização de execução para rever a lista de valores disponíveis. Tenha em atenção que pode selecionar Consulta ou Em memória para forçar a execução desta origem de dados GroupBy ao nível de base de dados ou na memória do servidor de aplicações.
Selecione Guardar e feche a página Editar parâmetros "Agrupar por".
Selecione OK para concluir as definições da origem de dados GroupBy.
Vincular a origem de dados GroupBy a campos de modelo de dados
Vincule a origem de dados configurada aos campos do modelo de dados para especificar como o modelo de dados será preenchido com dados da aplicação durante o runtime.
Na página Estruturador de mapeamento de modelos, no painel Modelo de dados, expanda o nó Transporte.
No painel Origens de dados, expanda a origem de dados TransportRecord.
Adicione um vínculo para expor a lista de grupos de transporte detetados:
- No painel Modelo de dados, selecione o item Transporte.
- No painel Origens de dados, selecione a origem de dados TransportRecord.
- Selecione Vincular.
Adicione um vínculo para expor o código de transporte de cada grupo de transporte detetado:
- Selecione o item do modelo de dados Transport.Code.
- Selecione o campo agrupado TransportRecord.grouped.TransportMode.
- Selecione Vincular.
Adicione um vínculo para expor os valores das funções de agregação calculadas para cada grupo de transporte detetado:
- Selecione o item do modelo de dados Transport.NumberOfTransactions.
- Selecione o campo agregado TransportRecord.aggregated.NumberOfTransactions.
- Selecione Vincular.
- Selecione o item do modelo de dados Transport.TotalInvoicedAmount.
- Selecione o campo agregado TransportRecord.aggregated.TotalInvoicedAmount.
- Selecione Vincular.
Adicione um vínculo para expor registos de transações que pertencem a cada grupo de transporte detetado:
- Selecione o item do modelo de dados Transport.Transaction.
- Selecione o campo TransportRecord.lines.
- Selecione Vincular.
Pode continuar a configurar vínculos para os itens aninhados do item do modelo de dados Transport.Transaction e do campo de origem de dados TransportRecord.lines para expor, durante o runtime, detalhes das transações Intrastat que pertencem a cada grupo de transporte detetado.
Depurar o componente de mapeamento de modelos adicionado
Utilize o depurador de origem de dados de ER para testar o mapeamento de modelos configurado.
Na página Estruturador de mapeamento de modelos, selecione Iniciar depuração.
Na página Depurar origens de dados, no painel esquerdo, selecione a origem de dados TransportRecord e, em seguida, selecione Ler todos os registos.
Expanda a origem de dados TransportRecord e, em seguida, siga estes passos:
- Selecione a origem de dados TransportRecord.grouped.TransportMode.
- Selecione Obter valor.
- Selecione a origem de dados TransportRecord.grouped.NumberOfTransactions.
- Selecione Obter valor.
- Selecione a origem de dados TransportRecord.grouped.TotalInvoicedAmount.
- Selecione Obter valor.
No painel direito, selecione Expandir tudo.
A origem de dados TransportRecord expõe dois registos e apresenta dois códigos de transporte. Para cada código de transporte, é calculado o número de transações e o montante total faturado.
Nota
A abordagem de "leitura em diferido" é utilizada quando uma origem de dados GroupBy é chamada para otimizar chamadas de base de dados. Consequentemente, alguns dos valores de campo numa origem de dados GroupBy são calculados no depurador de origem de dados de ER apenas quando estão vinculados a campos de modelo de dados.
Perguntas mais frequentes
Há alguma forma de calcular totais gerais quando os totais de grupo são calculados?
Sim. Para calcular totais gerais, configure outra origem de dados GroupBy na qual a origem de dados GroupBy configurada anteriormente seja utilizada como a origem de dados base. A seguinte ilustração mostra a origem de dados Totais do tipo GroupBy utilizada para calcular a função SUM de agregação, com base na agregação SUM da origem de dados TransportRecord do tipo GroupBy.
A seguinte ilustração mostra os resultados da depuração da origem de dados Totais.