Share via


Povečanje učinkovitosti poročil z uporabo filtrov

Poročila, ki vrnejo velike nabore podatkov, so lahko težavna za uporabo in lahko povzročijo težave z učinkovitostjo delovanja. Če želite omejiti podatke, predstavljene v poročilu, uporabite podatkovne filtre.

Poleg filtriranja podatkov, ki ga podpirajo storitve poročanja, Microsoft Dynamics 365 Customer Engagement (on-premises) podpira vnaprejšnje filtriranje podatkov. Vnaprejšnje filtriranje omogoča naslednja dejanja:

  • Nastavljanje poročil kot kontekstno občutljivih z zmanjšanjem obsega poročila za pridobivanje ustreznejših podatkov.

  • Hitrejše pridobivanje in prikazovanje nabora rezultatov, ker so vrnjeni ustreznejši rezultati.

  • Dovolite filtriranje poročila s funkcijo naprednega iskanja .

Pomembno

Trenutno poizvedb za poročanje z operatorji hierarhičen, kot je Under operator, ni mogoče uporabiti s filtriranjem poročil. Pri poskusu zagona poročila, ki uporablja hierarhičnega operatorja, se poročilo ne upodobi.

Omogočanje vnaprejšnjega filtriranja podatkov v poročilih, ki temeljijo na jeziku Fetch

Poročila, ki temeljijo na jeziku Fetch, podpirajo samo samodejno vnaprejšnje filtriranje podatkov. Poročilo lahko ima več naborov podatkov in poizvedb FetchXML. En nabor podatkov podpira eno poizvedbo FetchXML. Če želite omogočiti predhodno filtriranje za primarno ali povezano entiteto v poročilu, ki temelji na pridobivanju, morate vrednost parametra nastaviti enableprefiltering na »1« in v lastnosti določiti ime prefilterparametername parametra. Ime parametra mora imeti predpono »CRM_«, da parameter določite kot skriti parameter. Tako kot poročilo, ki temelji na strežniku SQL Server, tudi ta parameter, določen v poizvedbi FetchXML, deluje kot podpoizvedba v poizvedbi FetchXML, podpoizvedba pa je zgrajena z vrednostjo, ki jo je uporabnik določil v območju Napredno iskanje med izvajanjem poročila.

Naslednji primer prikazuje, kako omogočiti vnaprejšnje filtriranje za primarno entiteto v poizvedbi 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>  
  1. Podobno lahko vnaprejšnje filtriranje omogočite za povezano entiteto. Določite lahko tudi drugačen pogoj vnaprejšnjega filtriranja za povezano entiteto v poizvedbi FetchXML tako, da določite drugačno in enolično ime za ime parametra v prefilterparametername lastnosti.

    Če želite ročno spreminjati definicijo poročila, ki temelji na pridobivanju, ne da bi uporabili čarovnika za poročila ali SQL Server Data Tools omogočili vnaprejšnje filtriranje za primarne in povezane entitete, se prepričajte, da:

    <fetch distinct="false" mapping="logical">  
    <entity name="account" enableprefiltering="1" refilterparametername="CRM_FilteredAccount">  
    
  2. Ustvarite ustrezen parameter poizvedbe z istim imenom, kot je določeno za prefilterparametername lastnost. Prepričajte se, da se ime parametra začne z, CRM_ da ga določite kot skriti parameter.

    <QueryParameters>  
    <QueryParameter Name="CRM_FilteredAccount">  
    <Value>=Parameters!CRM_FilteredAccount.Value</Value>  
    </QueryParameter>  
    
  3. Ustvarite ustrezen parameter poročila z enakim imenom.

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

Omogočanje vnaprejšnjega filtriranja podatkov v poročilih, ki temeljijo na SQL (samo Dynamics 365 na mestu uporabe)

Vnaprejšnje filtriranje Microsoft Dynamics podatkov v 365-stopinjskih poročilih, ki temeljijo na SQL, lahko omogočite na dva načina: samodejno in nazorno.

Samodejno vnaprejšnje filtriranje

Samodejno vnaprejšnje filtriranje podatkov je primerno za preproste poizvedbe. Če želite omogočiti samodejno vnaprejšnje filtriranje podatkov v poročilu, lahko uporabite vzdevke za tabele entitet v poizvedbah. To storite tako, da uporabite vzdevek ime, ki se začne z CRMAF_.

Spodnji primeri na primer prikazujejo dve preprosti poizvedbi, pri čemer je ena spremenjena, da omogoči predhodno filtriranje entitete kupca.

Poizvedba brez predhodnega filtriranja.

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

Ko omogočite funkcijo samodejnega vnaprejšnjega filtriranja podatkov s CRMAF_ predpono,365 spremeni poizvedbo tako, da vključuje parameter (na primer P1), ko je naložena v Dynamics 365, Microsoft Dynamics kot je prikazano v naslednjih primerih.

Poizvedba s samodejnim vnaprejšnjim filtriranjem.

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

Dynamics 365 posreduje poizvedbo parametru P1, odvisno od načina filtriranja poročila. Z drugimi besedami, samodejno vnaprejšnje filtriranje podatkov deluje kot podpoizvedba v obstoječi poizvedbi.

Naslednji primeri prikazujejo, kako Dynamics 365 posreduje poizvedbe parametru (P1) v skladu z različnimi zahtevami filtriranja. V teh primerih se predpostavlja, da poročilo izvajate iz območja Poročila v programu Dynamics 365 in uporabljate možnost filtriranja podatkov.

1. primer

Če si želite ogledati samo aktivne račune, bo nastala poizvedba naslednja:

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

2. primer

Če ste v določenem računu in zaženete poročilo, bo nastala poizvedba naslednja:

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

3. primer

Če imate seznam treh izbranih računov in izberete možnost zagona poročila z izbranimi zapisi, bi bila nastala poizvedba naslednja:

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

Ko so vzdevki katerih koli imen tabel entitet, je uporabniški vmesnik naprednega iskanja samodejno vključen v uvedeno poročilo, ko se zažene iz programa Dynamics 365.

Če želite vzdevek ime tabele entitete v graditelju poizvedb, z desno tipko miške kliknite vsako tabelo v poročilu, izberite Lastnosti in nato vnesite vrednost vzdevka v obrazec CRMAF_FilteredEntity, na primer CRMAF_FilteredAccount.

Omejitev samodejnega predhodnega filtriranja

Ko uporabite CRMAF_ predpono za omogočanje samodejnega vnaprejšnjega filtriranja, Dynamics 365 doda parameter v poizvedbo. Pri bolj zapleteni poizvedbi, kot je poizvedba, ki uporablja izjave UNION, lahko to privede do nepričakovanih rezultatov, saj lahko Dynamics 365 doda parameter samo prvi poizvedbi.

Razmislite na primer o tej poizvedbi, ki vsebuje izjave Unije:

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'

Ko naložite poročilo, lahko Dynamics 365 filtrira samo prvo poizvedbo s parametrom. Zaradi tega filtriranje ni uporabljeno za drugo poizvedbo:

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'

V prejšnjem primeru bo Dynamics 365 med izvajanjem poročila iz območja Poročila v storitvi Dynamics 365 in izbiro filtra kot letnega prihodka, večjega od 1000000, poizvedbo posredoval parametru P1 na naslednji način:

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'

To pomeni, da bi poizvedba vrnila samo tiste račune na Floridi z letnim prihodkom, večjim od $1000000, in vse račune v Kaliforniji, kar ni tisto, kar ste nameravali. Želeli ste si ogledati vse račune na Floridi in v Kaliforniji z letnimi prihodki, večjimi od $1000000.

Če prenesete poročilo iz storitve Dynamics 365 in ga odprete v Microsoftu Visual Studio, boste videli izvirno različico poročila, ki ste ga naložili v Dynamics 365. Če poročilo prenesete neposredno iz Microsoft SQL Server storitev Reporting Services, boste opazili, da je Dynamics 365 spremenil poizvedbo, vendar parametra ni postavil na mesto, kjer želite, da obstaja.

Za zapletene poizvedbe, kot je ta, morate uporabiti eksplicitno vnaprejšnje filtriranje.

Eksplicitno vnaprejšnje filtriranje

Za zapletene poizvedbe, kot so poizvedbe, ki uporabljajo izjave UNION, boste morda morali uporabiti izrecno predhodno filtriranje. Za razliko od samodejnega vnaprejšnjega filtriranja Dynamics 365 poizvedbe poročila ne napiše znova tako, da med eksplicitnim vnaprejšnjim filtriranjem posreduje vrednosti parametrom, ko je takšno poročilo naloženo v Dynamics 365. Poročilo morate izrecno spremeniti tako, da v poročilo dodate parameter vnaprejšnjega filtriranja in se nato sklicujete na parameter v poizvedbi. Nato lahko poizvedbo izvedete z dinamičnim SQL.

Ko uporabljate dinamični SQL, je filtriranje prek naprednega iskanja omogočeno tako, da na primer CRM_FilteredEntity ustvarite skriti poimenovani CRM_FilteredAccount parameter in uporabite ta parameter v izrazu dinamične poizvedbe SQL. Ta parameter omogoča filtriranje podatkov, pridobljenih iz določenega filtrirani pogled.

Če vzamemo isti primer, kot smo ga obravnavali prej, da bi poudarili omejitev samodejnega vnaprejšnjega filtriranja, spodnja tabela prikazuje poizvedbo s samodejnim vnaprejšnjim filtriranjem, spremenjeno za uporabo eksplicitnega vnaprejšnjega filtriranja z dinamičnim SQL. Predpostavlja se tudi, da je bil filter med izvajanjem poročila iz območja »Poročila « v storitvi Dynamics 365 uporabljen kot letni prihodek, večji od 1000000.

Poizvedba s samodejnim vnaprejšnjim filtriranjem.

   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'

opomba,

Večina standardnih poročil, ki temeljijo na storitvi Dynamics 365 SQL, uporablja možnost izrecnega vnaprejšnjega filtriranja.

Filtri za posredovanje v povzetku filtriranja

Povzetek filtriranja prikaže vrednost filtra, ki se uporablja pri izvajanju poročila. V poročilih je prikazan kot element poročila »Polje z besedilom« v glavi poročila, ki vsebuje besedilno vrednost filtra. Ko uporabnik zažene poročilo, pregledovalnik poročil prikaže gumb Uredi filter . Uporabniku po kliku gumba omogoča določitev podatkovnega filtra. Primer povzetka filtriranja je na voljo v poročilu »Povzetek uporabnika«, ki je vključeno v aplikaciji Customer Engagement (on-premises).

Če želite poročilu dodati povzetek filtriranja, upoštevajte ta navodila:

  1. Ustvarite imenovan CRM_FilterText parameter skritega niza.

  2. V poročilo dodajte element poročila polja z besedilom in nastavite njegovo Value lastnost na naslednji način:
    =Parameters!CRM_FilterText.Value.

    Ko se poročilo zažene, sistem nastavi vrednost CRM_FilterText parametra na besedilo trenutnega filtra.

Privzeti filtri

Ko objavite poročilo, lahko nastavite privzeti filter. Za vsa poročila, ustvarjena z uporabo čarovnika za poročila, velja naslednje: če ne nastavite privzetega filtra, se filter samodejno nastavi na vse zapise entitete, spremenjene v roku zadnjih 30 dni. Če želite postopek določanja privzetega filtra poročil, glejte Objava poročil.

Glejte tudi

Vodnik za poročanje in analitiko
Dynamics 365 for Customer Engagement (on-premises) Premisleki o poročanju