Compartir por


Mellorar o desempeño dos informes utilizando filtros

Os informes que devolven grandes conxuntos de datos poden ser difíciles de usar e poden causar problemas de rendemento. Para limitar os datos que se mostran nun informe, utilice filtros de datos.

Ademais do filtrado de datos admitido por Reporting Services, Microsoft Dynamics 365 Customer Engagement (on-premises) admite o prefiltrado de datos. Pode usar o prefiltrado de datos para:

  • Faga que os informes dependan do contexto restrinxindo o ámbito dun informe para obter datos máis relevantes.

  • Recupere e visualice un conxunto de resultados más rapidamente porque só se devolven datos máis relevantes.

  • Permitir que o informe se filtre mediante a función Busca avanzada .

Importante

Actualmente, as consultas de informes con operadores xerárquicos, como o Under operador, non se poden utilizar co filtrado de informes. Ao intentar executar informes que utilizan un operador xerárquico, o informe non se xerará.

Activar a prefiltraxe de datos nos informes baseados en Fetch

Los informes baseados en Fetch só admiten a prefiltraxe de datos automática. Un informe pode ter varios conxuntos de datos e varias FetchXML consultas. Un conxunto de datos admite unha FetchXML consulta. Para activar o filtrado previo para a entidade principal ou vinculada nun informe baseado en Fetch, debes establecer o valor do parámetro enableprefiltering en "1" e especificar un nome de parámetro no prefilterparametername a7>propiedade. O nome do parámetro debe empezar por "CRM_" para especificalo como un parámetro oculto. Como no informe baseado en SQL Server, este parámetro especificado na consulta FetchXML actúa como unha subconsulta dentro da consulta FetchXML e a subconsulta constrúese co valor especificado polo usuario na área de Busca avanzada mentres realiza un informe.

O seguinte exemplo mostra como activar o filtrado previo para a entidade principal na FetchXML consulta.

<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>  
  1. De xeito similar, pode activar a prefiltraxe da entidade vinculada. Tamén pode especificar unha condición de prefiltrado diferente para a entidade vinculada na consulta FetchXML especificando un nome diferente e único para o nome do parámetro na propiedade prefilterparametername .

    Se está a modificar manualmente unha definición de informe baseada en Fetch sen utilizar o Asistente de informes ou SQL Server Data Tools para activar o filtrado previo para as entidades primarias e vinculadas, asegúrese de:

    <fetch distinct="false" mapping="logical">  
    <entity name="account" enableprefiltering="1" refilterparametername="CRM_FilteredAccount">  
    
  2. Crea un parámetro de consulta correspondente co mesmo nome que o especificado para a propiedade prefilterparametername . Asegúrate de que o nome do parámetro comeza por CRM_ para especificalo como parámetro oculto.

    <QueryParameters>  
    <QueryParameter Name="CRM_FilteredAccount">  
    <Value>=Parameters!CRM_FilteredAccount.Value</Value>  
    </QueryParameter>  
    
  3. Cree un parámetro de informe correspondente co mesmo nome.

    <ReportParameters>  
    <ReportParameter Name="CRM_FilteredAccount">  
    <DataType>String</DataType>  
    <Prompt>CRM Filtered Account</Prompt>        
    </ReportParameter>  
    </ReportParameters>    
    

Activación do filtrado previo de datos en informes baseados en SQL (só en Dynamics 365 local)

Hai dúas formas de activar o filtrado previo de datos en informes baseados en SQL Microsoft Dynamics 365: automático e explícito.

Prefiltrado automático

O prefiltrado automático de datos é adecuado para consultas sinxelas. Para activar o prefiltrado automático de datos nun informe, pode usar alias para as táboas de entidades nas consultas. Faino usando un nome de alias que comece por CRMAF_.

Por exemplo, os seguintes exemplos mostran dúas consultas sinxelas, cunha modificación para activar o filtrado previo na entidade Conta.

Consulta sen prefiltrado.

   SELECT <column1>, <column2>, <columnN>
   FROM FilteredAccount; 

Cando habilita a funcionalidade de prefiltrado automático de datos mediante o CRMAF_ prefixo, Microsoft Dynamics 365 modifica a consulta para incluír un parámetro (por exemplo, P1) cando se carga en Dynamics 365, como se mostra nos seguintes exemplos.

Consulta con prefiltrado automático.

   SELECT <column1>, <column2>, <columnN>
   FROM FilteredAccount AS CRMAF_FilteredAccount;

Dynamics 365 pasará unha consulta ao parámetro P1 dependendo de como se filtra o informe. Noutras palabras, o prefiltrado automático de datos actúa como unha subconsulta dentro da consulta existente.

Os seguintes exemplos ilustran como Dynamics 365 pasa consultas ao parámetro (P1) segundo os diferentes requisitos de filtrado. Nestes exemplos, suponse que está a executar o informe desde a área Informes en Dynamics 365 e está a usar a opción de filtrado de datos.

Exemplo 1

Se queres ver só as contas activas, a consulta resultante sería a seguinte:

SELECT <column1>, <column2>, <columnN>
FROM (SELECT FilteredAccount.* FROM FilteredAccount WHERE statecode = 0)
AS CRMAF_FilteredAccount

Exemplo 2

Se estás nunha conta específica e realizas o informe, a consulta resultante sería a seguinte:

SELECT <column1>, <column2>, <columnN>
FROM (SELECT FilteredAccount.* FROM FilteredAccount WHERE AccountId = '<CurrentAccountId>')
AS CRMAF_FilteredAccount

Exemplo 3

Se ten unha lista de tres contas seleccionadas e escolle a opción de executar o informe contra os rexistros seleccionados, a consulta resultante sería a seguinte:

SELECT <column1>, <column2>, <columnN>
FROM  (SELECT FilteredAccount.* FROM FilteredAccount WHERE AccountId in ('<1stAccountId>', '<2ndAccountId>', '<3rdAccountId>') 
AS CRMAF_FilteredAccount

Cando os nomes de táboas de entidades teñen un alias, a interface de usuario de Busca avanzada inclúese automaticamente no informe despregado cando se executa desde Dynamics 365.

Para crear un alias de nome de táboa de entidades no Creador de consultas, faga clic co botón dereito do rato en cada táboa do informe, seleccione Propiedades e, a continuación, introduza o valor do alias no formulario CRMAF_FilteredEntity, por exemplo, CRMAF_FilteredAccount.

Limitación do prefiltrado automático

Cando utiliza o prefixo CRMAF_ para activar o prefiltrado automático, Dynamics 365 engade un parámetro na consulta. Cunha consulta máis complexa, como unha consulta que usa instrucións UNION, isto pode dar lugar a resultados inesperados porque Dynamics 365 só pode engadir o parámetro á primeira consulta.

Por exemplo, considere a seguinte consulta que contén instrucións 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'

Cando carga o informe, é posible que Dynamics 365 filtre só a primeira consulta mediante o parámetro. Isto fai que o filtrado non se aplique á 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 anterior, mentres se executa o informe desde a área Informes en Dynamics 365 e escolle o filtro como ingresos anuais superiores a 1000000, Dynamics 365 pasará unha consulta ao P1 parámetro do seguinte xeito:

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'

Isto implica que a consulta só devolvería aquelas contas en Florida cuns ingresos anuais superiores a $1000000 e todas as contas en California, que non é o que pretendías. Querías ver todas as contas de Florida e California con ingresos anuais superiores a $1000000.

Se descarga o informe de Dynamics 365 e o abre en Microsoft Visual Studio, verá a versión orixinal do informe que cargou en Dynamics 365. Se descarga o informe directamente de Microsoft SQL Server Reporting Services, notará que Dynamics 365 modificara a consulta pero non colocou o parámetro onde quería que existise.

Para consultas complexas como esta, debes usar o prefiltrado explícito.

Prefiltrado explícito

Para consultas complexas, como consultas que usan instrucións UNION, é posible que necesites usar un filtrado previo explícito. A diferenza do filtrado previo automático, Dynamics 365 non reescribe a consulta do informe pasando valores aos parámetros durante o filtrado previo explícito cando se carga un informe deste tipo en Dynamics 365. Debes facer explícitamente os cambios necesarios no informe engadindo o parámetro de prefiltrado ao informe e, a continuación, facendo referencia ao parámetro na consulta. Despois pode executar a consulta usando SQL dinámico.

Cando usa SQL dinámico, o filtrado mediante Busca avanzada habilitase creando un parámetro oculto chamado CRM_FilteredEntity, por exemplo, CRM_FilteredAccount, e utilizando este parámetro nunha expresión de consulta SQL dinámica. Este parámetro permite filtrar os datos da táboa obtidos da vista filtrada especificada.

Tomando o mesmo exemplo que se comentou anteriormente para destacar a limitación do prefiltrado automático, a seguinte táboa mostra unha consulta cun prefiltrado automático modificada para utilizar o prefiltrado explícito mediante SQL dinámico. Tamén se supón que mentres se executa o informe desde a área Informes en Dynamics 365, o filtro aplicouse como ingresos anuais superiores a 1000000.

Consulta con prefiltrado automático.

   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'

Nota

A maioría dos informes estándar baseados en SQL de Dynamics 365 usan a opción de filtrado previo explícito.

Pasar filtros no resumo do filtro

Un resumo do filtro mostra o valor do filtro utilizado ao executar un informe. Nos informes, móstrase como un elemento de informe de caixa de texto na cabeceira do informe que contén o valor de texto do filtro. Cando o usuario executa o informe, o Visor de informes mostra un botón Editar filtro . Ao premer o botón, o usuario pode definir un filtro de datos. Un exemplo de resumo do filtro pode atoparse no informe de resumo de usuarios que se inclúe con Customer Engagement (on-premises).

Para engadir un resumen do filtro a un informe, siga estes pasos:

  1. Crea un parámetro de cadea oculto chamado CRM_FilterText.

  2. Engade un elemento de informe de caixa de texto ao informe e establece a súa Value propiedade do seguinte xeito:
    =Parameters!CRM_FilterText.Value.

    Cando se execute o informe, o valor do parámetro CRM_FilterText se establecerá polo sistema co texto do filtro actual.

Filtros predefinidos

Cando publique un informe, pode establecerse un filtro predefinido. Para todos os informes creados mediante o asistente para informes, se non se establece un filtro predefinido, o filtro se configura automaticamente en todos os rexistros da entidade modificada durante os últimos 30 días. Para coñecer o procedemento para definir un filtro de informes predeterminado, consulte Publicar informes.

Consulte tamén

Guía de informes e análises
Dynamics 365 for Customer Engagement (on-premises) Consideracións de informes