Deli z drugimi prek


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.

  • Dovoli filtriranje poročila s funkcijo Napredno iskanje .

Pomembno

Trenutno poizvedb poročil 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 ima lahko več nizov podatkov in več FetchXML poizvedb. En nabor podatkov podpira eno FetchXML poizvedbo. Če želite omogočiti predhodno filtriranje za primarno ali povezano entiteto v poročilu, ki temelji na pridobivanju, morate nastaviti vrednost parametra enableprefiltering na "1" in podati ime parametra v prefilterparametername lastnina. Ime parametra mora imeti predpono »CRM_«, da parameter določite kot skriti parameter. Tako kot pri poročilu, ki temelji na strežniku SQL, ta parameter, naveden v poizvedbi FetchXML , deluje kot podpoizvedba znotraj poizvedbe FetchXML in podpoizvedba je sestavljena z vrednostjo, ki jo določi uporabnik v območju Napredno iskanje med izvajanjem poročila.

Naslednji primer prikazuje, kako omogočiti predhodno filtriranje za primarno entiteto v FetchXML poizvedbi.

<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. Podate lahko tudi drugačen pogoj predfiltriranja za povezano entiteto v FetchXML poizvedbi, tako da podate drugačno in edinstveno ime za ime parametra v prefilterparametername lastnosti.

    Če ročno spreminjate definicijo poročila, ki temelji na pridobivanju, brez uporabe čarovnika za poročila ali SQL Server Data Tools če želite omogočiti predhodno 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 enakim imenom, kot je določeno za lastnost prefilterparametername . Prepričajte se, da se ime parametra začne z CRM_ , da ga določite kot skritega parametra.

    <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)

V poročilih, ki temeljijo na SQL Microsoft Dynamics 365, lahko omogočite predhodno filtriranje podatkov na dva načina: samodejno in eksplicitno.

Samodejno predhodno filtriranje

Samodejno predhodno filtriranje podatkov je primerno za preproste poizvedbe. Če želite omogočiti samodejno predhodno filtriranje podatkov v poročilu, lahko v poizvedbah uporabite vzdevke za tabele entitet. To storite z uporabo vzdevka, ki se začne s CRMAF_.

Naslednji primeri na primer prikazujejo dve preprosti poizvedbi, pri čemer je ena spremenjena tako, da omogoča predhodno filtriranje entitete Račun.

Poizvedba brez predhodnega filtriranja.

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

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

Poizvedba s samodejnim predfiltriranjem.

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

Dynamics 365 bo posredoval poizvedbo parametru P1 glede na to, kako je poročilo filtrirano. Z drugimi besedami, samodejno predhodno filtriranje podatkov deluje kot podpoizvedba znotraj obstoječe poizvedbe.

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

1. primer

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

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

2. primer

Če ste znotraj določenega računa in zaženete poročilo, bi bila končna 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 za zagon poročila glede na izbrane zapise, bo nastala poizvedba naslednja:

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

Ko so katera koli imena tabel entitet vzdevka, je uporabniški vmesnik Advanced Find samodejno vključen v razporejeno poročilo, ko se izvaja iz Dynamics 365.

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

Omejitev samodejnega predfiltriranja

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

Na primer, razmislite o naslednji poizvedbi, ki vsebuje stavke 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'

Ko naložite poročilo, lahko Dynamics 365 filtrira samo prvo poizvedbo s parametrom. To vodi do tega, da se filtriranje ne uporabi 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 Dynamics 365 in izbiro filtra kot letnega prihodka, večjega od 1000000, posredoval poizvedbo P1 parameter kot sledi:

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 letnim prihodkom, večjim od $1000000.

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

Za zapletene poizvedbe, kot je ta, morate uporabiti eksplicitno predhodno filtriranje.

Eksplicitno predhodno filtriranje

Za zapletene poizvedbe, kot so poizvedbe, ki uporabljajo izjave UNION, boste morda morali uporabiti eksplicitno predhodno filtriranje. Za razliko od samodejnega vnaprejšnjega filtriranja Dynamics 365 ne prepiše poizvedbe poročila s posredovanjem vrednosti parametrom med izrecnim vnaprejšnjim filtriranjem, ko je takšno poročilo naloženo v Dynamics 365. V poročilo morate izrecno narediti zahtevane spremembe tako, da poročilu dodate parameter predfiltriranja in se nato v poizvedbi sklicujete na parameter. Nato lahko izvedete poizvedbo z uporabo dinamičnega SQL.

Ko uporabljate dinamični SQL, je filtriranje prek naprednega iskanja omogočeno z ustvarjanjem skritega parametra z imenom CRM_FilteredEntity, na primer CRM_FilteredAccount, in z uporabo tega parametra v izrazu dinamične poizvedbe SQL. Ta parameter omogoča filtriranje podatkov tabele, pridobljenih iz navedenega filtrirani pogled.

Naslednja tabela prikazuje poizvedbo s samodejnim vnaprejšnjim filtriranjem, ki je spremenjena za uporabo izrecnega vnaprejšnjega filtriranja z uporabo dinamičnega SQL. Predvideva se tudi, da je bil med izvajanjem poročila iz območja Poročila v Dynamics 365 filter uporabljen kot letni prihodek, večji od 1000000.

Poizvedba s samodejnim predfiltriranjem.

   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 Dynamics 365, ki temeljijo na SQL, uporablja eksplicitno možnost predfiltriranja.

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 skriti parameter niza, imenovan CRM_FilterText.

  2. Poročilu dodajte element poročila besedilnega polja in nastavite njegovo lastnost Value na naslednji način:
    =Parameters!CRM_FilterText.Value.

    Ko se poročilo zažene, bo sistem vrednost parametra CRM_FilterText nastavil 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. Za postopek definiranja privzetega filtra poročila glejte Objava poročil.

Glejte tudi

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