Melhorar o desempenho de relatórios usando filtros
Publicado: novembro de 2016
Aplicável a: Dynamics CRM 2015
Relatórios que retornam grandes conjuntos de dados podem ser difíceis de usar e podem causar problemas de desempenho. Para limitar os dados apresentados em um relatório, use filtros de dados.
Além da filtragem de dados suportada pelo Reporting Services, o Microsoft Dynamics 365 suporte a pré-filtragem de dados. É possível usar a pré-filtragem de dados para:
Executar relatórios contextuais refinando o escopo de um relatório para retornar os dados mais relevantes.
Recuperar e exibir um conjunto de resultados com mais rapidez porque somente os dados mais relevantes são retornados.
Permitir que o relatório seja filtrado usando o recurso Localização Avançada.
Importante
Atualmente, as consultas de relatório com operadores hierárquicos, como o operador Abaixo, não podem ser usadas com filtragem de relatórios. Quando você tenta executar um relatório que utiliza um operador hierárquico, o relatório não é renderizado.
Neste tópico
Habilitar a pré-filtragem de dados nos relatórios baseados em fetch
Habilitar a pré-filtragem de dados em relatórios baseados em SQL (apenas CRM local)
Transmitindo filtros no resumo da filtragem
Filtros padrões
Habilitar a pré-filtragem de dados nos relatórios baseados em fetch
Os relatórios baseados em fetch suportam apenas a pré-filtragem de dados automática Um relatório pode ter vários conjuntos de dados e várias consultas FetchXML. Um conjunto de dados oferece suporte a consultas FetchXML. Para habilitar a pré-filtragem na entidade primária ou vinculada em um relatório baseado em fetch, você deve definir o valor do parâmetro enableprefiltering para “1 " e especificar um nome de parâmetro na propriedade prefilterparametername. O nome do parâmetro deve ser iniciado por “CRM_” para como um parâmetro oculto. Como acontece com o relatório baseado no Microsoft SQL Server, esse parâmetro especificado na consulta FetchXML age como uma subconsulta dentro da consulta FetchXML, e a subconsulta é construída com o valor especificado pelo usuário na área Localização Avançada durante a execução de um relatório.
O exemplo a seguir mostra como habilitar a pré-filtragem para a entidade primária na consulta FetchXML:
<CommandText
<fetch distinct="false" mapping="logical">
<entity name="account" enableprefiltering="1" prefilterparametername="CRM_FilteredAccount">
<attribute name="name" />
<attribute name="accountid" />
</entity>
</fetch>
</CommandText>
<DataSourceName>CRM</DataSourceName>
De maneira semelhante, você pode habilitar a pré-filtragem na entidade vinculada. Também é possível especificar uma condição de pré-filtragem diferente para a entidade vinculada na consulta FetchXML por um nome exclusivo e diferente para o nome do parâmetro na propriedade prefilterparametername.
Se você estiver alterando manualmente uma definição de relatório baseada em fetch sem usar o Assistente de Relatório no aplicativo Web SQL Server Data Tools ou Microsoft Dynamics 365 para habilitar a pré-filtragem em entidades primárias e vinculadas, certifique-se de:
Definir o valor do parâmetro enableprefiltering para 1 para a entidade ou as entidades vinculadas exibidas e especificar um nome exclusivo para a propriedade prefilterparametername.
<fetch distinct="false" mapping="logical"> <entity name="account" enableprefiltering="1" prefilterparametername="CRM_FilteredAccount">
Criar um parâmetro de consulta correspondente com o mesmo nome conforme especificado para a propriedade prefilterparametername. Certifique-se de que o nome do parâmetro inicie com CRM_ para especificar como um parâmetro oculto.
<QueryParameters> <QueryParameter Name="CRM_FilteredAccount"> <Value>=Parameters!CRM_FilteredAccount.Value</Value> </QueryParameter>
Criar um parâmetro de relatório correspondente com o mesmo nome.
<ReportParameters> <ReportParameter Name="CRM_FilteredAccount"> <DataType>String</DataType> <Prompt>CRM Filtered Account</Prompt> </ReportParameter> </ReportParameters>
Habilitar a pré-filtragem de dados em relatórios baseados em SQL (apenas CRM local)
Há duas maneiras como você pode habilitar a pré-filtragem de dados nos relatórios Microsoft Dynamics 365Baseado em SQL: automático e explícito.
Pré-filtragem automática
A pré-filtragem de dados automática é adequada para consultas simples. Para habilitar a pré-filtragem automática de dados em um relatório, você pode usar aliases para tabelas de entidade em consultas. Você pode fazer isso usando um nome de alias que comece com CRMAF_.
Por exemplo, a tabela a seguir mostra uma consulta simples alterada para habilitar a pré-filtragem na entidade Account.
Consulta sem pré-filtragem |
Consulta modificada com a pré-filtragem automática habilitada |
---|---|
|
|
Ao habilitar a funcionalidade de pré-filtragem de dados automática usando o prefixo CRMAF_, o Microsoft Dynamics 365 modifica a consulta para incluir um parâmetro (por exemplo, P1) quando for carregada no Microsoft Dynamics 365, conforme mostrado na seguinte tabela.
Consulta com pré-filtragem automática |
Modificado pelo Microsoft Dynamics 365 |
---|---|
|
|
O Microsoft Dynamics 365 passará uma consulta para o parâmetro P1 dependendo do modo como o relatório estiver sendo filtrado. Em outras palavras, a pré-filtragem de dados automática atua como subconsultas na consulta existente.
Os exemplos a seguir demonstram como o Microsoft Dynamics 365 transmite consultas para o parâmetro (P1) de acordo com os diferentes requisitos de filtragem. Nestes exemplos, supõe que você está executando o relatório na área Relatórios no Microsoft Dynamics 365 e usar a opção de filtragem de dados.
Exemplo 1: Se quiser exibir somente as contas ativas, a consulta resultante deve ser a seguinte:
SELECT <column1>, <column2>, <columnN>
FROM (SELECT FilteredAccount.* FROM FilteredAccount WHERE statecode = 0)
AS CRMAF_FilteredAccount
Exemplo 2: Se estiver em uma conta específica e executar o relatório, a consulta resultante deve ser a seguinte:
SELECT <column1>, <column2>, <columnN>
FROM (SELECT FilteredAccount.* FROM FilteredAccount WHERE AccountId = '<CurrentAccountId>')
AS CRMAF_FilteredAccount
Exemplo 3: Se você estiver vendo uma lista de contas três selecionadas e selecionar a opção para executar o relatório para os registros selecionados, a consulta resultante deve ser a seguinte:
SELECT <column1>, <column2>, <columnN>
FROM (SELECT FilteredAccount.* FROM FilteredAccount WHERE AccountId in ('<1stAccountId>', '<2ndAccountId>', '<3rdAccountId>')
AS CRMAF_FilteredAccount
Quando qualquer nome da tabela de entidade é nomeado, a interface do usuário Localização Avançada é incluída automaticamente no relatório implantado quando for executada no Microsoft Dynamics 365.
Para nomear um nome da tabela de entidade no Construtor de Consultas, clique com o botão direito em cada tabela em seu relatório, clique em Propriedades e insira o valor do alias no formulário CRMAF_FilteredEntity, por exemplo, CRMAF_FilteredAccount.
Limitação de pré-filtragem automática
Quando você usar o prefixo CRMAF_ para habilitar a pré-filtragem automática, o Microsoft Dynamics 365 adiciona um parâmetro na consulta. Com um consulta mais complexa, como uma consulta que usa declarações UNION, isso poderá causar resultados inesperados porque o Microsoft Dynamics 365 pode adicionar apenas o parâmetro na primeira consulta.
Por exemplo, considere a seguinte consulta que contém declarações UNION:
SELECT <column1>, <column2>, <columnN>
FROM FilteredAccount AS CRMAF_FilteredAccount
WHERE address1_stateorprovince = ‘FL'
UNION
SELECT <column1>, <column2>, <columnN>
FROM FilteredAccount AS CRMAF_FilteredAccount
WHERE address1_stateorprovince = 'CA'
Ao carregar o relatório, o Microsoft Dynamics 365 pode filtrar apenas a primeira consulta usando o parâmetro. Isso resulta na filtrar não ser aplicada à segunda consulta:
SELECT <column1>, <column2>, <columnN>
FROM (@P1) AS CRMAF_FilteredAccount WHERE address1_stateorprovince = 'FL'
UNION
SELECT <column1>, <column2>, <columnN>
FROM FilteredAccount AS CRMAF_FilteredAccount
WHERE address1_stateorprovince = 'CA'
No exemplo acima, durante a execução do relatório na área Relatórios no Microsoft Dynamics 365 e ao escolher o filtro como receita anual maior que 1.000.000, o Microsoft Dynamics 365 transmitirá uma consulta para o parâmetro P1 a seguir:
SELECT <column1>, <column2>, <columnN>
FROM (SELECT FilteredAccount.* from FilteredAccount where AnnualRevenue > 1000000) AS CRMAF_FilteredAccount
WHERE address1_stateorprovince = 'FL'
UNION
SELECT <column1>, <column2>, <columnN>
FROM FilteredAccount AS CRMAF_FilteredAccount
WHERE address1_stateorprovince = 'CA'
Isso implica que a consulta retornaria apenas as contas na Flórida com uma receita anual superior a $1.000.000 e todas as contas na Califórnia, que não foi o que você pretendeu. Você queria exibir todas as contas na Flórida e Califórnia com a receita anual superior a $1.000.000.
Ao baixar o relatório do Microsoft Dynamics 365 e abrir no Microsoft Visual Studio, você verá a versão original do relatório carregado no Microsoft Dynamics 365. Ao baixar o relatório diretamente do Microsoft SQL Server Reporting Services, você perceberá que o Microsoft Dynamics 365 modificou uma consulta, mas não colocou o parâmetro onde desejado.
Para consultas complexas como essa, você deve usar a pré-filtragem explícita.
Pré-filtragem explícita
Para consultas complexas como consultas usando declarações UNION, talvez seja necessário usar a pré-filtragem explícita. Diferente da pré-filtragem automática, o Microsoft Dynamics 365 não reescreve a consulta de relatório passando valores para os parâmetros durante a pré-filtragem explícita quando o relatório for carregado no Microsoft Dynamics 365. Você deve executar explicitamente as alterações necessárias no relatório adicionando o parâmetro de pré-filtragem ao relatório e referenciando o parâmetro na consulta. Você pode executar a consulta usando o SQL dinâmico.
Quando você usa o SQL dinâmico, filtrar através da Localização Avançada está habilitado ao criar um parâmetro oculto chamado CRM_FilteredEntity, por exemplo, CRM_FilteredAccount, e usando este parâmetro em uma expressão de consulta do SQL dinâmico. Esse parâmetro habilita a filtragem nos dados da tabela obtidos da exibição filtrada especificada.
Levando o mesmo exemplo discutido anteriormente para realçar a limitação da pré-filtragem automática, a tabela a seguir mostra uma consulta com a pré-filtragem automática modificada para usar a pré-filtragem explícita utilizando o SQL dinâmico. Também supõe que durante a execução do relatório na área Relatórios no Microsoft Dynamics 365, o filtro foi aplicado como a receita anual superior a 1.000.000.
Observação
A maioria dos relatórios Microsoft Dynamics 365Baseado em SQL padrão usam a opção de pré-filtragem explícita.
Transmitindo filtros no resumo da filtragem
Um resumo de filtro exibe o valor do filtro usado quando um relatório é executado. Nos relatórios do Microsoft Dynamics 365, é exibido como um item de relatório da caixa de texto no cabeçalho do relatório que contém o valor de texto do filtro. Quando o usuário executar o relatório, o Visualizador de Relatórios exibe um botão Editar Filtro. Quando o botão é clicado, permite o usuário definir um filtro de dados. Um exemplo de um resumo de filtro pode ser encontrado no relatório Resumo do Usuário incluído com o Microsoft Dynamics 365.
Para adicionar um resumo de filtro a um relatório, siga essas etapas:
Criar um parâmetro de cadeia de caracteres oculto chamado CRM_FilterText.
Adicione um item de relatório da caixa de texto ao relatório e defina a propriedade Value da seguinte forma:
=Parameters!CRM_FilterText.Value.
Quando o relatório for executado, o valor do parâmetro CRM_FilterText será definido pelo sistema como o texto do filtro atual.
Filtros padrões
Quando você publicar um relatório, é possível definir um filtro padrão. Para todos os relatórios criados com o assistente de relatório, se você não definir um filtro padrão, esse filtro será definido automaticamente para todos os registros da entidade modificada nos últimos 30 dias. Se o procedimento para definir um filtro de relatório padrão, consulte Publicar relatórios.
Confira Também
Geração de relatórios com o CRM 2015 para local
Considerações de relatório do Microsoft Dynamics 365 (online)
© 2016 Microsoft Corporation. Todos os direitos reservados. Direitos autorais