Dijeli putem


Poboljšanje performansi izvješća pomoću filtara

Izvješća koja vraćaju velike skupove podataka mogu biti teška za korištenje i mogu uzrokovati probleme s performansama. Da biste ograničili podatke prikazane u izvješću, koristite podatkovne filtre.

Uz filtriranje podataka koje podržavaju Reporting Services Microsoft Dynamics 365 Customer Engagement (on-premises) podržava i predfiltriranje podataka. Možete koristiti predfiltriranje za:

  • Postavite ovisnost izvješća o kontekstu tako da suzite djelokrug izvješća kako bi vratio relevantnije podatke.

  • Brže dohvatite i prikažite skup rezultat jer se vraćaju samo relevantni podaci.

  • Dopustite filtriranje izvješća pomoću značajke naprednog pretraživanja .

Važno

Trenutno se upiti izvješća s operatorima hijerarhijski, kao što je Under operator, ne mogu koristiti s filtriranjem izvješća. Kada pokušate pokrenuti izvješće koje koristi hijerarhijski operator, izvješće se neće prikazati.

Omogućivanje predfiltriranja podataka u izvješćima temeljenima na Fetchu

Izvješća utemeljena na Fetchu podržavaju samo automatsko predfiltriranje podataka. Izvješće može imati više skupova podataka i više FetchXML upita. Jedan skup podataka podržava jedan FetchXML upit. Da biste omogućili prethodno filtriranje za primarni ili povezani entitet u izvješću utemeljenom na Fetchu, morate postaviti vrijednost parametra enableprefiltering na "1" i navesti naziv parametra u prefilterparametername svojstvu. Naziv parametra treba započeti s „CRM_“ kako biste ga zadali kao skriveni parametar. Kao i kod izvješća temeljenog na SQL poslužitelju, ovaj parametar naveden u FetchXML upitu djeluje kao podupit unutar FetchXML upita, a podupit je konstruiran s vrijednošću koju je korisnik odredio u području Napredno traženje tijekom pokretanja izvješća.

Sljedeći primjer prikazuje kako omogućiti prethodno filtriranje za primarni entitet u FetchXML upitu.

<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. Slično možete omogućiti i predfiltriranje za povezani entitet. Također možete odrediti drugi uvjet predfiltriranja za povezani entitet u FetchXML upitu navođenjem drugačijeg i jedinstvenog naziva parametra u prefilterparametername svojstvu.

    Ako ručno mijenjate definiciju izvješća utemeljenu na Fetchu bez korištenja čarobnjaka za izvješća ili SQL Server Data Tools da biste omogućili prethodno filtriranje za primarne i povezane entitete, provjerite jeste li:

    <fetch distinct="false" mapping="logical">  
    <entity name="account" enableprefiltering="1" refilterparametername="CRM_FilteredAccount">  
    
  2. Stvorite odgovarajući parametar upita s istim nazivom navedenim prefilterparametername za svojstvo. Provjerite započinje li naziv parametra s CRM_ kako biste ga naveli kao skriveni parametar.

    <QueryParameters>  
    <QueryParameter Name="CRM_FilteredAccount">  
    <Value>=Parameters!CRM_FilteredAccount.Value</Value>  
    </QueryParameter>  
    
  3. Stvorite odgovarajući parametar izvješća s istim nazivom.

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

Omogućivanje predfiltriranja podataka u izvješćima utemeljenima na SQL-u (samo Dynamics 365 lokalno)

Postoje dva načina na koje možete omogućiti prethodno filtriranje podataka na 365 izvješća temeljenih na Microsoft Dynamics SQL-u: automatsko i eksplicitno.

Automatsko prethodno filtriranje

Automatsko prethodno filtriranje podataka prikladno je za jednostavne upite. Da biste omogućili automatsko prethodno filtriranje podataka na izvještaju, možete koristiti pseudonime za tablice entiteta u upitima. To možete učiniti korištenjem pseudonima koji počinje s CRMAF_.

Na primjer, sljedeći primjeri prikazuju dva jednostavna upita, od kojih je jedan izmijenjen kako bi se omogućilo prethodno filtriranje u entitetu Poslovni subjekt.

Upit bez prethodnog filtriranja.

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

Kada omogućite funkciju automatskog predfiltriranja podataka pomoću prefiksa CRMAF_ , Microsoft Dynamics 365 mijenja upit tako da uključuje parametar (na primjer, P1) kada se prenese u Dynamics 365, kao što je prikazano u sljedećim primjerima.

Upit s automatskim prethodnim filtriranjem.

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

Dynamics 365 proslijedit će upit parametru P1, ovisno o tome kako se izvješće filtrira. Drugim riječima, automatsko predfiltriranje podataka djeluje kao podupit unutar postojećeg upita.

Sljedeći primjeri ilustriraju kako Dynamics 365 prosljeđuje upite parametru (P1) prema različitim zahtjevima za filtriranje. U ovim primjerima pretpostavlja se da izvješće pokrećete iz područja Izvješća u sustavu Dynamics 365 i koristite mogućnost filtriranja podataka.

1. primjer

Ako želite vidjeti samo aktivne poslovne subjekte, rezultirajući upit bit će sljedeći:

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

2. primjer

Ako se nalazite unutar određenog računa i pokrenete izvješće, rezultirajući upit bit će sljedeći:

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

3. primjer

Ako imate popis od tri odabrana računa i odaberete mogućnost pokretanja izvješća u odnosu na odabrane zapise, rezultirajući upit bit će sljedeći:

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

Kada se imenuju bilo koji nazivi tablica entiteta, korisničko sučelje naprednog pretraživanja automatski se uključuje u uvedeno izvješće kada se pokrene iz sustava Dynamics 365.

Da biste nazvali naziv tablice entiteta u sastavljaču upita, desnom tipkom miša kliknite svaku tablicu u izvješću, odaberite Svojstva, a zatim unesite vrijednost pseudonima u obrazacCRMAF_FilteredEntity , na primjer CRMAF_FilteredAccount.

Ograničenje automatskog predfiltriranja

Kada koristite CRMAF_ prefiks za omogućavanje automatskog predfiltriranja, Dynamics 365 dodaje parametar u upit. Sa složenijim upitom, kao što je upit koji koristi naredbe UNION, to može dovesti do neočekivanih rezultata jer Dynamics 365 može dodati parametar samo prvom upitu.

Na primjer, razmotrite sljedeći upit koji sadrži naredbe 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'

Kada prenesete izvješće, Dynamics 365 može filtrirati samo prvi upit pomoću parametra. To dovodi do toga da se filtriranje ne primjenjuje na drugi upit:

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'

U prethodnom primjeru, tijekom pokretanja izvješća iz područja Izvješća u sustavu Dynamics 365 i odabira filtra kao godišnjeg prihoda većeg od 1000000, Dynamics 365 proslijedit će upit parametru P1 na sljedeći 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 podrazumijeva da bi upit vratio samo one račune na Floridi s godišnjim prihodom većim od $1000000 i sve račune u Kaliforniji, što nije ono što ste namjeravali. Htjeli ste pregledati sve račune u Floridi i Kaliforniji s godišnjim prihodom većim od $1000000.

Ako izvješće preuzmete iz sustava Dynamics 365 i otvorite ga u sustavu Microsoft Visual Studio, vidjet ćete izvornu verziju izvješća koje ste prenijeli u sustav Dynamics 365. Ako izvješće preuzmete izravno iz Microsoft SQL Server servisa Reporting Services, primijetit ćete da je Dynamics 365 izmijenio upit, ali nije postavio parametar na mjesto na kojem ste željeli da postoji.

Za složene upite poput ovog morate koristiti eksplicitno prethodno filtriranje.

Eksplicitno prethodno filtriranje

Za složene upite kao što su upiti koji koriste naredbe UNION, možda ćete morati koristiti eksplicitno prethodno filtriranje. Za razliku od automatskog predfiltriranja, Dynamics 365 ne prepisuje upit izvješća prosljeđivanjem vrijednosti parametrima tijekom eksplicitnog prethodnog filtriranja kada se takvo izvješće prenese u Dynamics 365. Morate izričito izvršiti potrebne promjene u izvješću dodavanjem parametra predfiltriranja u izvješće, a zatim upućivanjem na parametar u upitu. Zatim možete izvršiti upit pomoću dinamičkog SQL-a.

Kada koristite dinamički SQL, filtriranje kroz napredno pretraživanje omogućeno je stvaranjem skrivenog parametra pod nazivom CRM_FilteredEntity, na primjer, CRM_FilteredAccount i korištenjem ovog parametra u izrazu dinamičkog SQL upita. Ovaj parametar omogućuje filtriranje podataka tablice dobivenih iz navedenog filtrirani prikaz.

Uzimajući isti primjer kao što je ranije spomenuto kako bi se istaknulo ograničenje automatskog prethodnog filtriranja, sljedeća tablica prikazuje upit s automatskim prethodnim filtriranjem izmijenjenim za korištenje eksplicitnog predfiltriranja pomoću dinamičkog SQL-a. Također se pretpostavlja da je tijekom pokretanja izvješća iz područja Izvješća u sustavu Dynamics 365 filtar primijenjen kao godišnji prihod veći od 1000000.

Upit s automatskim prethodnim 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'

Napomena

Većina standardnih izvješća utemeljenih na sustavu Dynamics 365 SQL koristi mogućnost eksplicitnog predfiltriranja.

Prosljeđivanje filtara u sažetku filtra

Sažetak filtra prikazuje vrijednost filtra koji se koristi prilikom pokretanja izvješća. U izvješćima se prikazuje kao stavka tekstnog okvira izvješća u zaglavlju izvješća koje sadrži tekstnu vrijednost filtra. Kada korisnik pokrene izvješće, preglednik izvješća prikazuje gumb Uredi filtar . Kada se gumb klikne, omogućava korisniku da definira filtar podataka. Primjer sažetka filtra možete pronaći u izvješću Sažetak korisnika koje je uključeno u Customer Engagement (on-premises).

Da biste u izvješće dodali sažetak filtra, slijedite ove korake:

  1. Stvorite skriveni parametar niza koji se zove CRM_FilterText.

  2. Dodajte stavku izvješća tekstnog okvira u izvješće i postavite njegovo Value svojstvo na sljedeći način:
    =Parameters!CRM_FilterText.Value.

    Kada se izvješće pokrene, sustav će vrijednost parametra CRM_FilterText postaviti na tekst trenutnog filtra.

Zadani filtri

Kada objavite izvješće, možete postaviti zadani filtar. Za sva izvješća stvorena pomoću čarobnjaka za izvješća ako ne postavite zadani filtar, filtar se automatski postavlja za sve zapise entiteta izmijenjene u zadnjih 30 dana. Postupak definiranja zadanog filtra izvješća potražite u članku Objavljivanje izvješća.

Pogledajte

Vodič za izvješćivanje i analitiku
Dynamics 365 for Customer Engagement (on-premises) Razmatranja izvješćivanja