Mejorar el rendimiento de los informes mediante el uso de filtros

 

Publicado: enero de 2017

Se aplica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Los informes que devuelven conjuntos de datos de gran tamaño pueden ser difíciles de usar y pueden provocar problemas de rendimiento. Para limitar los datos que se muestran en un informe, utilice filtros de datos.

Además del filtrado de datos admitido por Reporting Services, Microsoft Dynamics 365 admite el prefiltrado de datos. Puede usar el prefiltrado de datos para:

  • Haga que los informes dependan del contexto restringiendo el ámbito de un informe para devolver datos más relevantes.

  • Recupere y visualice un conjunto de resultados más rápidamente porque solo se devuelven datos más relevantes.

  • Permitir que el informe se filtre mediante la característica Búsqueda avanzada.

Importante

Actualmente, las consultas de informe con operadores jerárquicos, como el operador Under, no se pueden usar en el filtro de informe. Al intentar ejecutar informes que usan un operador jerárquico, el informe no se generará.

En este tema

Habilitar el prefiltrado de datos en los informes basados en Fetch

Habilitación de prefiltrado de datos en informes basados en SQL (Dynamics 365 local sólo)

Pasar filtros en el resumen del filtro

Filtros predeterminados

Habilitar el prefiltrado de datos en los informes basados en Fetch

Los informes basados en Fetch solo admiten el prefiltrado de datos automático. Un informe puede tener varios conjuntos de datos y varias consultas de FetchXML. Un conjunto de datos admite una consulta FetchXML. Para habilitar el prefiltrado de la entidad principal o vinculada en un informe basado en Fetch, debe establecer el valor del parámetro enableprefiltering en "1" y especificar un nombre de parámetro en la propiedad prefilterparametername. El nombre del parámetro debe empezar por "CRM_" para indicarlo como un parámetro oculto. Como sucede con el informe basado en Microsoft SQL Server, este parámetro especificado en la consulta FetchXML actúa como una subconsulta de la consulta FetchXML, y la subconsulta se genera con el valor especificado por el usuario en el área Búsqueda avanzada al ejecutar un informe.

El siguiente ejemplo muestra cómo habilitar el prefiltrado de la entidad principal en la 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 forma similar, puede habilitar el prefiltrado de la entidad vinculada. También puede especificar otra condición de filtrado de la entidad vinculada en la consulta FetchXML especificando un nombre distinto y único para el nombre del parámetro en la propiedad prefilterparametername.

Si está editando manualmente una definición de informe basada en Fetch sin usar el Asistente para informes en la aplicación web Microsoft Dynamics 365 o Herramientas de datos de SQL Server para habilitar el prefiltrado de las entidades principales y vinculadas, asegúrese de:

  1. De forma similar, puede habilitar el prefiltrado de la entidad vinculada. También puede especificar otra condición de filtrado de la entidad vinculada en la consulta FetchXML especificando un nombre distinto y único para el nombre del parámetro en la propiedad prefilterparametername.

    Si está editando manualmente una definición de informe basada en Fetch sin usar el Asistente para informes en la aplicación web Microsoft Dynamics 365 o Herramientas de datos de SQL Server para habilitar el prefiltrado de las entidades principales y vinculadas, asegúrese de:

    <fetch distinct="false" mapping="logical">
       <entity name="account" enableprefiltering="1" prefilterparametername="CRM_FilteredAccount">
    
  2. Cree un parámetro de consulta correspondiente con el mismo nombre especificado para la propiedad prefilterparametername. Asegúrese de que el nombre del parámetro empieza por CRM_ indicarlo como un parámetro oculto.

    <QueryParameters>
       <QueryParameter Name="CRM_FilteredAccount">
       <Value>=Parameters!CRM_FilteredAccount.Value</Value>
    </QueryParameter>
    
  3. Cree un parámetro de informe correspondiente con el mismo nombre.

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

Habilitación de prefiltrado de datos en informes basados en SQL (Dynamics 365 local sólo)

Hay dos formas de habilitar datos de el prefiltrado de datos en los informes basados en Basado en SQL de Microsoft Dynamics 365: automática y explícita.

Prefiltrado automático

El prefiltrado de datos automático es adecuado para consultas sencillas. Para habilitar prefiltrado de datos automáticos en un informe, puede usar los alias para las tablas de entidad en consultas. Esto se realiza mediante un nombre de alias que empieza con CRMAF_.

Por ejemplo, en la siguiente tabla se muestra una consulta simple modificada para habilitar el prefiltrado en la entidad Account.

Consulta sin prefiltrado

Consulta modificada con prefiltrado automático habilitado

```sql SELECT

Cuando se habilita la funcionalidad de prefiltrado de datos automático mediante el prefijo CRMAF_, Microsoft Dynamics 365 modifica la consulta para que incluya un parámetro (por ejemplo, P1) cuando se carga en Microsoft Dynamics 365, como se muestra en la siguiente tabla.

Consulta con prefiltrado automático

Modificado por Microsoft Dynamics 365

```sql SELECT

Microsoft Dynamics 365 pasará una consulta al parámetro P1 según cómo se filtre el informe. Es decir, el prefiltrado de datos automático actúa como una subconsulta de la consulta existente.

Los siguientes ejemplos muestran cómo Microsoft Dynamics 365 pasa consultas al parámetro (P1) como distintos requisitos de filtro. En estos ejemplos, se da por hecho que está ejecutando el informe desde el área Informes en Microsoft Dynamics 365 y está usando la opción de filtrado de datos.

Ejemplo 1: si desea ver solo cuentas activas, la consulta resultante sería de la siguiente manera:

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

Ejemplo 2: si está en una cuenta específica y ejecuta el informe, la consulta resultante sería de la siguiente manera:

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

Ejemplo 3: si consulta una lista de tres cuentas seleccionadas y elige la opción de ejecutar el informe con los registros seleccionados, la consulta resultante sería de la siguiente manera:

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

Cuando los nombres de tabla de entidad son alias, la interfaz de usuario de Búsqueda avanzada se incluye automáticamente en el informe implementado cuando se ejecuta desde Microsoft Dynamics 365.

Para asignar un alias a un nombre de tabla de entidad en el Generador de consultas, haga clic con el botón secundario en cada tabla del informe, seleccione Propiedades y escriba el valor de alias en el formulario CRMAF_FilteredEntity, por ejemplo, CRMAF_FilteredAccount.

Limitación de prefiltrado automático

Cuando se usa el prefijo CRMAF_ para habilitar el prefiltrado automático, Microsoft Dynamics 365 agrega un parámetro en la consulta. Con una consulta más compleja, como una consulta que use instrucciones UNION, esto puede llevar a resultados inesperados porque Microsoft Dynamics 365 solo puede agregar el parámetro a la primera consulta.

Por ejemplo, considere la siguiente consulta que contiene instrucciones 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'

Al cargar el informe, Microsoft Dynamics 365 puede filtrar solamente la primera consulta con el parámetro. Esto causa que el filtrado no se aplique a la 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'

En el ejemplo anterior, mientras se ejecuta el informe desde el área Informes en Microsoft Dynamics 365 y se elige el filtro como ingresos anuales superiores a 1.000.000, Microsoft Dynamics 365 pasará una consulta al parámetro P1 de la siguiente manera:

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'

Esto implica que la consulta devolvería únicamente aquellas cuentas de Florida con unos ingresos anuales superiores a 1.000.000 USD y todas las cuentas de California, que no era el resultado previsto. Deseaba ver todas las cuentas de Florida y California con unos ingresos anuales superiores a 1.000.000 USD.

Si descarga el informe de Microsoft Dynamics 365 y lo abre en Microsoft Visual Studio, verá la versión original del informe que cargó en Microsoft Dynamics 365. Si descarga el informe directamente de Microsoft SQL Server Reporting Services, advertirá que Microsoft Dynamics 365 había modificado la consulta pero no había colocado el parámetro donde deseaba que existiera.

Para consultas complejas como esta, debe usar el prefiltrado explícito.

Prefiltrado explícito

Para consultas complejas tales como consultas con instrucciones UNION, es posible que necesite usar el prefiltrado explícito. A diferencia del prefiltrado automático, Microsoft Dynamics 365 no reescribe la consulta de informe mediante al paso de valores a los parámetros durante el prefiltrado explícito cuando como este informe se carga en Microsoft Dynamics 365. Debe realizar explícitamente los cambios necesarios en el informe mediante la adición del parámetro de prefiltrado al informe y la posterior referencia del parámetro en la consulta. A continuación, puede ejecutar la consulta mediante SQL dinámico.

Cuando se usa SQL dinámico, el filtrado con Búsqueda avanzada se habilita creando un parámetro oculto llamado CRM_FilteredEntity, como CRM_FilteredAccount y usando este parámetro en una expresión de consulta de SQL dinámico. Este parámetro habilita el filtrado en los datos de la tabla que se obtengan de la vista filtrada especificada.

Tomando el mismo ejemplo anterior para resaltar la limitación del prefiltrado automático, en la siguiente tabla se muestra una consulta con el prefiltrado automático modificado para usar el prefiltrado explícito mediante SQL dinámico. También se da por hecho que al ejecutar el informe desde el área Informes en Microsoft Dynamics 365, el filtro se aplicó como ingresos anuales superiores a 1.000.000.

Consulta con prefiltrado automático

Consulta modificada para usar el prefiltrado explícito

```sql SELECT

Nota

La mayoría de los informes basados en Basado en SQL estándar de Microsoft Dynamics 365 usan la opción de prefiltrado explícito.

Pasar filtros en el resumen del filtro

Un resumen del filtro muestra el valor del filtro usado al ejecutar un informe. En los informes de Microsoft Dynamics 365, se muestra como un elemento de informe de cuadro de texto en el encabezado del informe que contiene el valor de texto del filtro. Cuando el usuario ejecuta el informe, el visor de informes muestra un botón Editar filtro. Cuando se hace clic en el botón, el usuario puede definir un filtro de datos. Un ejemplo de resumen del filtro se puede encontrar en el informe de resumen de usuarios que se incluye con Microsoft Dynamics 365.

Para agregar un resumen del filtro a un informe, siga estos pasos:

  1. Cree un parámetro de cadena oculto denominado CRM_FilterText.

  2. Agregue un elemento de informe de cuadro de texto al informe y establezca su propiedad Value de la siguiente manera:
    =Parameters!CRM_FilterText.Value.

Cuando se ejecute el informe, el sistema establecerá el valor del parámetro CRM_FilterText en el texto del filtro actual.

Filtros predeterminados

Cuando publica un informe, se puede establecer un filtro predeterminado. Para todos los informes creados mediante el asistente para informes, si no se establece un filtro predeterminado, el filtro se configura automáticamente en todos los registros de la entidad modificada durante los últimos 30 días. Para conocer el procedimiento de definir un filtro de informe predeterminado, consulte Publicación de informes.

Ver también

Informes y análisis con Dynamics 365
Consideraciones sobre los informes de Microsoft Dynamics 365 (online)

© 2017 Microsoft. Todos los derechos reservados. Copyright