Usar as fontes de dados JOIN para obter dados de várias tabelas de aplicativos nos mapeamentos do modelo de relatório eletrônico (ER)
Ao configurar mapeamentos ou formatos de modelo de relatório eletrônico (ER), é possível adicionar fontes de dados exigidas do tipo Join. No momento da criação, uma fonte de dados Join é configurada como um conjunto de várias fontes de dados, com cada uma retornando uma lista de registros. Em todas as fontes de dados, com exceção da primeira, é necessário definir as condições necessárias para inclusão dos registros das fontes de dados atuais e anteriores. Durante a execução, uma fonte de dados configurada do tipo Joinretornará uma única lista incluída de registros contendo campos dos registros de fontes de dados aninhadas.
Atualmente, há suporte para os seguintes tipos de junções:
- Junção externa (esquerda):
- Inclua todos os registros da primeira fonte de dados (mais à esquerda) e, em seguida, qualquer correspondência de acordo com os registros de condições configurados da segunda fonte de dados (mais à direita).
- Junção externa (direita):
- Inclua apenas registros da primeira fonte de dados (mais à esquerda) e apenas registros da segunda fonte de dados (mais à direita) que correspondam entre si de acordo com as condições configuradas.
Na fonte de dados Join configurada, quando todas as fontes de dados são do tipo Registros de tabela, a execução da fonte de dados Join pode ser realizada no nível do banco de dados usando uma única instrução SQL. Essa instrução reduz o número de chamadas de banco de dados, o que melhora o desempenho do mapeamento do modelo. Caso contrário, a execução da fonte de dados Join é executada na memória.
Observação
Ainda não há suporte para o uso da função VALUEIN em expressões de ER que especificam condições para inclusão de registros em fontes de dados do tipo Join. Visite a página Designer de fórmulas em relatórios eletrônicos para obter mais detalhes sobre essa função.
Para saber mais sobre este recurso, conclua o exemplo neste artigo.
Exemplo: use fontes de dados JOIN em mapeamentos do modelo de ER
As etapas a seguir explicam como o administrador do sistema ou o desenvolvedor de relatórios eletrônicos pode configurar um mapeamento de modelo de relatórios eletrônicos (ER) para obter dados de várias tabelas de aplicativos de uma só vez usando fontes de dados do tipo Join para melhorar o desempenho do acesso a dados. Essas etapas podem ser executadas para qualquer empresa do Dynamics 365 Finance ou de Regulatory Configuration Services (RCS).
Pré-requisitos
Para concluir os exemplos neste artigo, você deve ter acesso a um dos itens a seguir, dependendo de qual serviço é usado para concluir estas etapas:
Acesso ao Finance para uma das seguintes funções:
- Desenvolvedor de relatório eletrônico
- Consultor funcional de relatório eletrônico
- Administrador do sistema
Acesso ao RCS para uma das seguintes funções:
- Desenvolvedor de relatório eletrônico
- Consultor funcional de relatório eletrônico
- Administrador do sistema
Primeiro você também deve concluir as etapas no procedimento Criar um provedor de configuração e marcá-lo como ativo.
Previamente, você também deve baixar e salvar os seguintes arquivos de configuração ER de exemplo:
Descrição do conteúdo | Nome do arquivo |
---|---|
Amostra do arquivo de configuração Modelo de dados de ER, usado como fonte de dados para os exemplos. | Modelo para conhecer fontes de dados JOIN.versão.1.1.xml |
Amostra do arquivo de configuração Mapeamento do modelo de ER, que implementa o modelo de dados de ER para os exemplos. | Mapeamento para conhecer fontes de dados JOIN.versão.1.1.xml |
Amostra do arquivo de configuração Formato de ER. Este arquivo descreve os dados para preencher o componente de formato de ER para os exemplos. | Formato para conhecer fontes de dados JOIN.versão.1.1.xml |
Ativar um provedor de configurações
Acesse o Finance ou o RCS na primeira sessão do seu navegador da Web.
Ir para Administração da organização > Espaços de trabalho > Relatório eletrônico.
Na página Configurações de localização, na seção Provedores de configuração, verifique se o provedor de configuração para a empresa de exemplo Litware, Inc. está listado e marcado como Ativo. Caso não veja este provedor de configuração, siga as etapas do procedimento Criar um provedor de configuração e marcá-lo como ativo.
Importar amostra de arquivos de configuração de ER
Selecione Configurações de relatórios.
Importe o arquivo de configuração Modelo de dados de ER.
- Selecione Taxa de câmbio.
- Selecione Carregar do arquivo XML.
- Selecione Procurar para encontrar o arquivo Modelo para conhecer fontes de dados JOIN.versão.1.1.xml.
- Selecione OK.
Importe o arquivo de configuração Mapeamento de modelo de ER.
- Selecione Taxa de câmbio.
- Selecione Carregar do arquivo XML.
- Selecione Procurar para encontrar o arquivo Mapeamento para conhecer fontes de dados JOIN.versão.1.1.xml.
- Selecione OK.
Importe o arquivo de configuração do formato de ER.
- Selecione Taxa de câmbio.
- Selecione Carregar do arquivo XML.
- Selecione Procurar para encontrar o arquivo Formato para conhecer fontes de dados JOIN.versão.1.1.xml.
- Selecione OK.
Na árvore de configurações, expanda o item Modelo para conhecer fontes de dados JOIN, bem como outros itens de modelo (quando disponíveis).
Observe a lista de configurações ER na árvore e os detalhes da versão na FastTab Versões. Tais informações serão usadas como fonte de dados no relatório de exemplo.
Ativar opções de rastreamento de execução
Selecione CONFIGURAÇÕES.
Selecione Parâmetros de usuário.
Defina os parâmetros de rastreamento de execução, conforme mostrado na captura de tela abaixo.
Com esses parâmetros ativados, para cada execução do arquivo de formato de ER importado, o rastreamento de execução será gerado. Usando detalhes do rastreamento de execução gerado, é possível analisar a execução do formato de ER e dos componentes de mapeamento do modelo de ER. Visite a página Rastrear a execução do formato de ER para solucionar problemas de desempenho para obter mais detalhes sobre o recurso de rastreamento de execução do ER.
Revisar o mapeamento do modelo de ER (parte 1)
Revise as configurações do componente de mapeamento do modelo de ER. O componente está configurado para acessar informações sobre versões de configurações de ER, detalhes de configurações e provedores de configuração sem usar fontes de dados do tipo Join.
Selecione a configuração Mapeamento para conhecer fontes de dados JOIN.
Selecione Designer para abrir a lista de mapeamentos.
Selecione Designer para revisar os detalhes do mapeamento.
Selecione Mostrar detalhes.
Na árvore de configurações, expanda os itens do modelo de dados Set1 e Set1.Details:
- A associação de Details: Record list = Versions indica que o item Set1.Details está vinculado à fonte de dados Versões retornando registros da tabela ERSolutionVersionTable. Cada registro desta tabela representa uma única versão de uma configuração de ER. O conteúdo desta tabela é apresentado na FastTab Versões da página Configurações.
- A associação de ConfigurationVersion: String = @.PublicVersionNumber significa que o valor da versão pública da versão de cada configuração de ER é retirado do campo PublicVersionNumber da tabela ERSolutionVersionTable e colocado no item ConfigurationVersion.
- A associação de ConfigurationTitle: String = @.'>Relations'.Solution.Name indica que o nome de uma configuração de ER é obtido do campo Nome da tabela ERSolutionTable com avaliação por meio da relação várias para um ('>Relations') entre as tabelas ERSolutionVersionTable e ERSolutionTable. Os nomes das configurações de ER da instância atual do aplicativo são apresentados na árvore de configurações na página Configurações.
- A associação de @.'>Relations'.Solution.'>Relations'.SolutionVendor.Name significa que o nome do provedor de configuração que possui a configuração atual é obtido do campo Nome da tabela ERVendorTable com avaliação por meio da relação várias para um entre as tabelas ERSolutionTable e ERVendorTable. Os nomes dos provedores de configuração de ER são apresentados na árvore de configurações na página Configurações no cabeçalho da página de cada configuração. A lista inteira de provedores de configuração de ER pode ser encontrada na página da tabela Administração da organização > Relatório eletrônico > Provedor de configuração.
Na árvore de configurações, expanda o item do modelo de dados Set1.Summary:
- A associação de VersionsNumber: Integer = VersionsSummary.aggregated.VersionsNumber indica que o item Set1.Summary.VersionsNumber está vinculado ao campo de agregação VersionsNumber da fonte de dados VersionsSummary do tipo GroupBy que foi configurado para retornar o número de registros da tabela ERSolutionVersionTable por meio da fonte de dados Versões.
Feche a página.
Revisar o mapeamento do modelo de ER (parte 2)
Revise as configurações do componente de mapeamento do modelo de ER. O componente está configurado para acessar informações sobre versões de configurações de ER, detalhes de configurações e provedores de configuração com o uso de fonte de dados do tipo Join.
Na árvore de configurações, expanda os itens do modelo de dados Set2 e Set2.Details. A associação de Details: Record list = Details indica que o item Set2.Details está vinculado à fonte de dados Detalhes configurada como a fonte de dados do tipo Join.
A fonte de dados Join pode ser adicionada selecionando a fonte de dados Funções\Join:
Selecione a fonte de dados Detalhes.
Selecione Editar no painel Fontes de dados.
Selecione Editar junção.
Selecione Mostrar detalhes.
Esta página é usada para criar a fonte de dados necessária do tipo Join. No tempo de execução, essa fonte de dados criará uma única lista incluída de registros das fontes de dados na gradeLista incluída. A junção de registros começará na fonte de dados ConfigurationProviders que está na grade como a primeira (para ela, a coluna Tipo está em branco). Os registros de todas as outras fontes de dados serão incluídos, consequentemente, nos registros da fonte de dados original, com base em sua ordem nessa grade. Toda fonte de dados de junção deve ser configurada como uma fonte de dados aninhada em uma fonte de dados de destino (a fonte de dados
1Versions
está aninhada em1Configurations
; a fonte de dados1Configurations
está aninhada em ConfigurationProviders). Cada fonte de dados configurada deve conter as condições para a junção. Na fonte de dados do Joinespecífico, as seguintes junções são definidas:- Cada registro da fonte de dados ConfigurationProviders (referido na tabela ERVendorTable) é associado apenas a registros de 1Configurations (referidos na tabela ERSolutionTable) com o mesmo valor nos campos SolutionVendor e RecId. O tipo Junção interna é usado para essa associação, bem como as condições a seguir para registros correspondentes:
FILTER (Configurations, Configurations.SolutionVendor = ConfigurationProviders.RecId)
- Cada registro da fonte de dados 1Configurations (referida na tabela ERSolutionTable) é associado apenas a registros de 1Versions (referidos na tabela ERSolutionVersionTable) com o mesmo valor nos campos Solution e RecId. O tipo Junção interna é usado para essa associação, bem como as condições a seguir para registros correspondentes:
FILTER (ConfigurationVersions, ConfigurationVersions.Solution = ConfigurationProviders.'1Configurations'.RecId)
- A opção Executar está configurada como Consulta, ou seja, essa fonte de dados de junção será executada em tempo de execução no nível do banco de dados como uma chamada SQL direta.
Para incluir registros de fontes de dados que representam tabelas de aplicativos, é possível especificar condições de junção usando pares de campos diferentes daqueles que descrevem as relações existentes na AOT entre essas tabelas. Esse tipo de junção também pode ser configurado para ser executado no nível do banco de dados.
Feche a página.
Selecione Cancelar.
Na árvore de configurações, expanda o item do modelo de dados Set2.Summary:
- A associação de VersionsNumber: Integer = DetailsSummary.aggregated.VersionsNumber indica que o item Set2.Summary.VersionsNumber está vinculado ao campo de agregação VersionsNumber da fonte de dados DetailsSummary do tipo GroupBy que foi configurado para retornar o número de registros incluídos da fonte de dados Detalhes do tipo Join.
- A opção de local Execução está configurada como Consulta, ou seja, essa fonte de dados GroupBy será executada em tempo de execução como uma chamada SQL direta no nível do banco de dados. Esse comportamento é possível porque a fonte de dados base Detalhes do tipo Join está configurada como executada no nível do banco de dados.
Feche a página.
Selecione Cancelar.
Executar formato de ER
Acesse o Finance ou o RCS na segunda sessão do seu navegador da Web, usando as mesmas credenciais e empresa da primeira sessão.
Acesse Administração da organização > Relatório eletrônico > Configurações.
Expanda a configuração Modelo para conhecer fontes de dados JOIN.
Selecione a configuração Formato para conhecer fontes de dados JOIN.
Selecione Designer.
Selecione Mostrar detalhes.
Selecione Mapeamento.
Selecione Expandir/Recolher.
Esse formato foi criado para preencher um arquivo de texto gerado com uma nova linha para todas as versões de uma configuração de ER (sequência Versão). Cada linha gerada conterá o nome de um provedor de configuração que possui a configuração atual, o nome da configuração e a versão da configuração separados por ponto e vírgula. A linha final do arquivo gerado conterá o número de versões descobertas das configurações de ER (sequência Resumo).
As fontes de dados Dados e Resumo são usadas para preencher os detalhes da versão de configuração no arquivo gerado:
- As informações do modelo de dados Set1 são usadas quando você escolhe Não para a fonte de dados Seletor em tempo de execução na página de diálogo do usuário ao executar o formato de ER.
- As informações do modelo de dados Set2 são usadas quando você escolhe Sim para a fonte de dados Seletor em tempo de execução na página de diálogo do usuário.
Selecione Executar.
Na página de diálogo, selecione Não no campo Usar fontes de dados JOIN.
Selecione OK.
Revise o arquivo gerado.
Analisar rastreio de execução do formato de ER
Na primeira sessão do Finance ou RCS, selecione Designer.
Selecione Rastreamento de desempenho.
Na grade Rastreamento de desempenho, selecione o registro mais superior do rastreamento de execução mais recente de um formato de ER em que foi usado o componente de mapeamento do modelo atual.
Selecione OK.
As estatísticas de execução informam sobre chamadas duplicadas para tabelas de aplicativos:
- ERSolutionTable foi chamado na mesma proporção de vezes em que houve registros de versão de configuração na tabela ERSolutionVersionTable, enquanto o número dessas chamadas pode ser reduzido em vários momentos para melhorar o desempenho.
- ERVendorTable foi chamado duas vezes para cada registro de versão de configuração que foi descoberto na tabela ERSolutionVersionTable, enquanto o número dessas chamadas também pôde ser reduzido.
Feche a página.
Executar formato de ER
Alterne para a guia do navegador da Web com a segunda sessão do Finance ou RCS.
Selecione Executar.
Na página de diálogo, selecione Sim no campo Usar fontes de dados JOIN.
Selecione OK.
Revise o arquivo gerado.
Analisar rastreio de execução do formato de ER
Na primeira sessão do Finance ou RCS, selecione Designer.
Selecione Rastreamento de desempenho.
Na grade Rastreamento de desempenho, selecione o registro mais superior representando o rastreamento de execução mais recente de um formato de ER em que foi usado o componente de mapeamento do modelo atual.
Selecione OK.
As estatísticas o informam sobre o seguinte:
- O banco de dados do aplicativo foi chamado uma vez para obter registros das tabelas ERVendorTable, ERSolutionTable e ERSolutionVersionTable para acessar os campos obrigatórios.
- O banco de dados do aplicativo foi chamado uma vez para calcular o número de versões de configuração usando junções configuradas na fonte de dados Detalhes.
Limitações
Como você pode ver no exemplo deste artigo, a fonte de dados JOIN pode ser criada a partir de várias fontes de dados que descrevem os conjuntos individuais dos registros que devem ser incluídos eventualmente. Você pode configurar essas fontes de dados usando a função de ER FILTER integrada. Ao configurar a fonte de dados de forma que ela seja chamada além da fonte de dados JOIN, você pode usar intervalos da empresa como parte da condição para a seleção de dados. A implementação inicial da fonte de dados JOIN não oferece suporte a fontes de dados deste tipo. Por exemplo, ao chamar uma fonte de dados baseada em FILTER no escopo de execução de uma fonte de dados JOIN, se a fonte de dados chamada contiver intervalos da empresa como parte da condição para a seleção de dados, ocorrerá uma exceção.
Na versão 10.0.12 do Microsoft Dynamics 365 Finance (agosto de 2020), você pode usar intervalos da empresa como parte da condição para a seleção de dados em fontes de dados baseadas em FILTER que são chamados dentro do escopo de execução de uma fonte de dados JOIN. Devido às limitações do construtor de consulta de aplicativos, os intervalos da empresa têm suporte apenas para a primeira fonte de dados de uma fonte de dados JOIN.
Exemplo
Por exemplo, você deve fazer uma única chamada para o banco de dados do aplicativo para obter a lista de transações de comércio exterior de várias empresas e os detalhes do item de estoque referido nessas transações.
Nesse caso, configure os seguintes artefatos no mapeamento do modelo de ER:
- Fonte de dados raiz Intrastat que representa a tabela Intrastat.
- Fonte de dados raiz de Itens que representa a tabela InventTable.
- Fonte de dados raiz de Empresas que retorna a lista de empresas (DEMF e GBSI neste exemplo) onde as transações devem ser acessadas. O código da empresa está disponível no campo Companies.Code.
-
Fonte de dados raiz X1 que tem a expressão
FILTER (Intrastat, VALUEIN(Intrastat.dataAreaId, Companies, Companies.Code))
. Como parte da condição para a seleção de dados, essa expressão contém a definição de intervalos da empresaVALUEIN(Intrastat.dataAreaId, Companies, Companies.Code)
. -
Fonte de dados X2 como um item aninhado da fonte de dados X1. Ela inclui a expressão
FILTER (Items, Items.ItemId = X1.ItemId)
.
Finalmente, você pode configurar uma fonte de dados JOIN na qual X1 é a primeira fonte de dados e X2 é a segunda fonte de dados. Você pode especificar a Consulta como a opção Executar para forçar o ER a executar essa fonte de dados no nível do banco como uma chamada SQL direta.
Quando a fonte de dados configurada é executada enquanto a execução de ER é rastreada, a instrução a seguir é mostrada no designer de mapeamento do modelo er como parte do rastreamento de desempenho ER.
SELECT ... FROM INTRASTAT T1 CROSS JOIN INVENTTABLE T2 WHERE ((T1.PARTITION=?) AND (T1.DATAAREAID IN (N'DEMF',N'GBSI') )) AND ((T2.PARTITION=?) AND (T2.ITEMID=T1.ITEMID AND (T2.DATAAREAID = T1.DATAAREAID) AND (T2.PARTITION = T1.PARTITION))) ORDER BY T1.DISPATCHID,T1.SEQNUM
Observação
Ocorrerá um erro se você executar uma fonte de dados JOIN que foi configurada de forma a conter condições de seleção de dados que têm intervalos da empresa para fontes de dados adicionais da fonte de dados JOIN executada.
Recursos adicionais
Designer de fórmulas no Relatório eletrônico
Rastrear a execução do formato ER para solucionar problemas de desempenho