Millorar el rendiment dels informes mitjançant filtres
Els informes que tornen conjunts de dades grans poden ser difícils d'utilitzar i poden provocar problemes de rendiment. Per limitar les dades que es presenten en un informe, podeu utilitzar els filtres de dades.
A més del filtratge de dades admès pel Reporting Services, el Microsoft Dynamics 365 Customer Engagement (on-premises) admet el filtratge previ de dades. Podeu fer servir el filtratge previ de dades per:
Feu que els informes siguin sensibles al context restringint l'àmbit d'un informe per tornar les dades més rellevants.
Recupereu i visualitzeu un conjunt de resultats més ràpid perquè només es retornen les dades més rellevants.
Permeteu filtrar l'informe mitjançant la funció Cerca avançada.
Important
Actualment, les consultes d'informes amb operadors jeràrquics, com ara l'operador, no es poden utilitzar amb el Under
filtratge d'informes. Quan intenteu executar un informe que utilitza un operador jeràrquic, l'informe no es representarà.
Habilitar el filtratge previ de dades en informes basats en Fetch
Els informes basats en Fetch només admeten el filtratge previ de dades automàtic. Un informe pot tenir diversos conjunts de dades i múltiples FetchXML consultes. Un conjunt de dades admet una FetchXML consulta. Per habilitar el filtratge previ per a l'entitat principal o enllaçada en un informe basat en Fetch, heu d'establir el valor del paràmetre a "1" i especificar un nom de enableprefiltering
paràmetre a la prefilterparametername
propietat. El nom del paràmetre ha de començar amb "CRM_" per especificar-lo com a paràmetre ocult. Igual que amb l'informe basat en l'SQL Server, aquest paràmetre especificat a la FetchXML consulta actua com una subconsulta dins de la FetchXML consulta, i la subconsulta es construeix amb el valor especificat per l'usuari a l'àrea de cerca avançada mentre executa un informe.
L'exemple següent mostra com habilitar el filtratge previ per a l'entitat principal de la 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>
Igualment, podeu habilitar el filtratge previ per a l'entitat enllaçada. També podeu especificar una condició de filtratge previ diferent per a l'entitat enllaçada a la FetchXML consulta especificant un nom diferent i únic per al nom del paràmetre a la
prefilterparametername
propietat.Si modifiqueu manualment una definició d'informe basada en Fetch sense utilitzar l'Auxiliar d'informes o SQL Server Data Tools per habilitar el filtratge previ per a les entitats principals i enllaçades, assegureu-vos de fer el següent:
<fetch distinct="false" mapping="logical"> <entity name="account" enableprefiltering="1" refilterparametername="CRM_FilteredAccount">
Creeu un paràmetre de consulta corresponent amb el mateix nom especificat per a la
prefilterparametername
propietat. Assegureu-vos que el nom del paràmetre comenci perCRM_
especificar-lo com a paràmetre ocult.<QueryParameters> <QueryParameter Name="CRM_FilteredAccount"> <Value>=Parameters!CRM_FilteredAccount.Value</Value> </QueryParameter>
Creeu un paràmetre de informe corresponent amb el mateix nom.
<ReportParameters> <ReportParameter Name="CRM_FilteredAccount"> <DataType>String</DataType> <Prompt>CRM Filtered Account</Prompt> </ReportParameter> </ReportParameters>
Habilitació del filtratge previ de dades als informes basats en SQL (només al Dynamics 365 local)
Hi ha dues maneres d'habilitar el filtratge previ de dades en Microsoft Dynamics informes basats en 365 SQL: automàtic i explícit.
Prefiltratge automàtic
El prefiltratge automàtic de dades és adequat per a consultes senzilles. Per habilitar el filtratge automàtic de dades prèvies en un informe, podeu utilitzar àlies per a taules d'entitats a les consultes. Per fer-ho, utilitzeu un nom d'àlies que comença per CRMAF_.
Per exemple, els exemples següents mostren dues consultes senzilles, amb una modificada per habilitar el filtratge previ a l'entitat Compte.
Consulta sense filtratge previ.
SELECT <column1>, <column2>, <columnN>
FROM FilteredAccount;
Quan habiliteu la funcionalitat de filtratge previ automàtic de dades mitjançant el CRMAF_
prefix,365 Microsoft Dynamics modifica la consulta per incloure un paràmetre (per exemple, P1) quan es carrega al Dynamics 365, com es mostra als exemples següents.
Consulta amb prefiltratge automàtic.
SELECT <column1>, <column2>, <columnN>
FROM FilteredAccount AS CRMAF_FilteredAccount;
El Dynamics 365 passarà una consulta al paràmetre P1 en funció de com s'estigui filtrant l'informe. És a dir, el prefiltratge automàtic de dades actua com una subconsulta dins de la consulta existent.
Els exemples següents il·lustren com el Dynamics 365 passa consultes al paràmetre (P1) segons els diferents requisits de filtratge. En aquests exemples, s'assumeix que esteu executant l'informe des de l'àrea Informes del Dynamics 365 i que utilitzeu l'opció de filtratge de dades.
Exemple 1
Si voleu veure només els comptes actius, la consulta resultant seria la següent:
SELECT <column1>, <column2>, <columnN>
FROM (SELECT FilteredAccount.* FROM FilteredAccount WHERE statecode = 0)
AS CRMAF_FilteredAccount
Exemple 2
Si sou dins d'un compte específic i executeu l'informe, la consulta resultant seria la següent:
SELECT <column1>, <column2>, <columnN>
FROM (SELECT FilteredAccount.* FROM FilteredAccount WHERE AccountId = '<CurrentAccountId>')
AS CRMAF_FilteredAccount
Exemple 3
Si teniu una llista de tres comptes seleccionats i trieu l'opció d'executar l'informe amb els registres seleccionats, la consulta resultant seria la següent:
SELECT <column1>, <column2>, <columnN>
FROM (SELECT FilteredAccount.* FROM FilteredAccount WHERE AccountId in ('<1stAccountId>', '<2ndAccountId>', '<3rdAccountId>')
AS CRMAF_FilteredAccount
Quan qualsevol nom de taula d'entitat és àlies, la interfície d'usuari de la cerca avançada s'inclou automàticament a l'informe implementat quan s'executa des del Dynamics 365.
Per àlies del nom d'una taula d'entitat al Query Builder, feu clic amb el botó dret a cada taula de l'informe, seleccioneu Propietats i, a continuació, introduïu el valor de l'àlies al formulariCRMAF_FilteredEntity , per exemple,CRMAF_FilteredAccount .
Limitació del prefiltratge automàtic
Quan utilitzeu el prefix per habilitar el CRMAF_
filtratge automàtic previ, el Dynamics 365 afegeix un paràmetre a la consulta. Amb una consulta més complexa, com ara una consulta que utilitza sentències UNION, això pot conduir a resultats inesperats perquè el Dynamics 365 només podria afegir el paràmetre a la primera consulta.
Per exemple, considereu la consulta següent que conté declaracions 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'
Quan carregueu l'informe, el Dynamics 365 pot filtrar només la primera consulta mitjançant el paràmetre. Això fa que no s'apliqui el filtratge a la segona 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 l'exemple anterior, mentre executeu l'informe des de l'àrea Informes del Dynamics 365 i trieu el filtre com a ingressos anuals superiors a 1000000, el Dynamics 365 passarà una consulta al paràmetre P1 de la manera següent:
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'
Això implica que la consulta retornaria només aquells comptes a Florida amb uns ingressos anuals superiors a $1000000 i tots els comptes a Califòrnia, que no és el que preteníeu. Volíeu veure tots els comptes de Florida i Califòrnia amb ingressos anuals superiors a $1000000.
Si baixeu l'informe del Dynamics 365 i l'obriu a Microsoft Visual Studio, veureu la versió original de l'informe que heu carregat al Dynamics 365. Si baixeu l'informe directament des del Microsoft SQL Server Reporting Services, notareu que el Dynamics 365 havia modificat la consulta, però no havia situat el paràmetre on volíeu que existís.
Per a consultes complexes com aquesta, heu d'utilitzar el filtratge previ explícit.
Prefiltratge explícit
Per a consultes complexes, com ara consultes mitjançant sentències UNION, és possible que hàgiu d'utilitzar un filtratge previ explícit. A diferència del filtratge automàtic previ, el Dynamics 365 no reescriu la consulta de l'informe passant valors als paràmetres durant el filtratge previ explícit quan aquest informe es carrega al Dynamics 365. Heu de fer explícitament els canvis necessaris a l'informe afegint el paràmetre de filtratge previ a l'informe i, a continuació, fent referència al paràmetre a la consulta. A continuació, podeu executar la consulta mitjançant SQL dinàmic.
Quan utilitzeu SQL dinàmic, el filtratge a través de la cerca avançada s'habilita creant un paràmetre ocult anomenat CRM_FilteredEntity
, per exemple, CRM_FilteredAccount
i utilitzant aquest paràmetre en una expressió de consulta dinàmica SQL. Aquest paràmetre permet filtrar a la taula les dades obtingudes de la visualització filtrada especificada.
Prenent el mateix exemple que s'ha comentat anteriorment per ressaltar la limitació del prefiltratge automàtic, la taula següent mostra una consulta amb prefiltratge automàtic modificat per utilitzar el prefiltratge explícit mitjançant SQL dinàmic. També s'assumeix que, mentre s'executa l'informe des de l'àrea Informes del Dynamics 365, el filtre s'ha aplicat com a ingressos anuals superiors a 1000000.
Consulta amb prefiltratge automàtic.
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
La majoria dels informes estàndard basats en l'SQL del Dynamics 365 utilitzen l'opció de filtratge previ explícit.
Passar els filtres al resum de filtre
Un resum de filtre mostra el valor del filtre que s'utilitza quan s'executa un informe. Als informes, es mostra com un element d'informe de quadre de text a la capçalera de l'informe que conté el valor de text del filtre. Quan l'usuari executa l'informe, el visualitzador d'informes mostra un botó Edita el filtre . Quan es fa clic al botó, l'usuari pot definir un filtre de dades. Un exemple d'un resum de filtre es pot trobar en l'informe Resum de l'usuari que s'inclou amb el Customer Engagement (on-premises).
Per afegir un resum de filtre a un informe, seguiu aquests passos:
Creeu un paràmetre de cadena oculta cridat
CRM_FilterText
.Afegiu un element d'informe del quadre de text a l'informe i definiu-ne la propietat de la manera
Value
següent:
=Parameters!CRM_FilterText.Value.
Quan s'executi l'informe, el sistema establirà el valor del
CRM_FilterText
paràmetre al text del filtre actual.
Filtres per defecte
Quan es publica un informe, podeu establir un filtre per defecte. Per a tots els informes creats mitjançant l'Auxiliar d'informes, si no definiu un filtre per defecte, el filtre es defineix automàticament a tots els registres de l'entitat modificada durant els últims 30 dies. Per obtenir el procediment per definir un filtre d'informes per defecte, vegeu Publicar informes.
Consulteu també
Guia d'informes i analítiques
Dynamics 365 for Customer Engagement (on-premises) Consideracions d'informació