Kopīgot, izmantojot


Uzlabot atskaites veiktspēju, izmantojot filtrus

Atskaites, ka atgriež lielas datu kopas, var būt grūti izmantot, un tās var izraisīt veiktspējas problēmas. Lai ierobežotu atskaitē rādītos datus, izmantojiet datu filtrus.

Papildus atskaišu izveides servisu atbalstītajai datu filtrēšanai Microsoft Dynamics 365 Customer Engagement (on-premises) atbalsta datu priekšfiltrēšanu. Datu priekšfiltrēšanu varat izmantot tālāk aprakstītajos nolūkos.

  • Padarītu atskaites kontekstjutīgas, sašaurinot atskaites tvērumu, lai atgrieztu būtiskākus datus.

  • Rezultātu kopu izgūtu un parādītu ātrāk, jo tiek atgriezti tikai būtiskāki dati.

  • Atļaujiet atskaites filtrēšanu, izmantojot līdzekli Detalizētā atrašana .

Svarīgi

Pašlaik atskaišu filtrēšanā nevar izmantot atskaišu vaicājumus ar hierarhiskiem operatoriem, piemēram Under , operatoru. Kad mēģināt palaist atskaiti, kas izmanto hierarhisku operatoru, šī atskaite netiek attēlota.

Datu priekšfiltrēšanas iespējošana uz Fetch balstītās atskaitēs

Uz Fetch balstītas atskaites atbalsta tikai automātisku datu priekšfiltrēšanu. Atskaitē var būt vairākas datu kopas un vairāki FetchXML vaicājumi. Viena datu kopa atbalsta vienu FetchXML vaicājumu. Lai iespējotu priekšfiltrēšanu primārajai vai saistītajai entītijai atskaitē, kuras pamatā ir Fetch, parametra enableprefiltering vērtība ir jāiestata uz "1" un rekvizītā prefilterparametername jānorāda parametra nosaukums. Parametra nosaukumam ir jāsākas ar “CRM_”, lai norādītu, ka tas ir slēpts parametrs. Tāpat kā SQL servera atskaitē, šis vaicājumā norādītais FetchXML parametrs darbojas kā vaicājuma apakšvaicājums FetchXML , un apakšvaicājums tiek veidots ar vērtību, ko lietotājs norādījis detalizētās atrašanas apgabalā, palaižot atskaiti.

Tālāk sniegtajā piemērā ir parādīts, kā iespējot priekšfiltrēšanu primārajai entītijai vaicājumā 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. Līdzīgi priekšfiltrēšanu varat iespējot saistītajai entītijai. Vaicājumā FetchXML saistītajai entītijai var norādīt arī citu priekšfiltrēšanas nosacījumu, rekvizītā norādot citu un unikālu parametra nosaukuma prefilterparametername nosaukumu.

    Ja manuāli modificējat uz Fetch balstītu pārskata definīcija, neizmantojot Atskaites vedni, vai SQL Server Data Tools lai iespējotu priekšfiltrēšanu primārajām un saistītajām entītijām, pārliecinieties, vai:

    <fetch distinct="false" mapping="logical">  
    <entity name="account" enableprefiltering="1" refilterparametername="CRM_FilteredAccount">  
    
  2. Izveidojiet atbilstošu vaicājuma parametru ar tādu pašu nosaukumu, kāds norādīts rekvizītam prefilterparametername . Pārliecinieties, vai parametra nosaukums sākas ar CRM_ to, lai norādītu to kā slēptu parametru.

    <QueryParameters>  
    <QueryParameter Name="CRM_FilteredAccount">  
    <Value>=Parameters!CRM_FilteredAccount.Value</Value>  
    </QueryParameter>  
    
  3. Izveidojiet atbilstošu atskaites parametru ar tādu pašu nosaukumu.

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

Datu priekšfiltrēšanas iespējošana SQL atskaitēs (tikai Dynamics 365 lokāls)

Ir divi veidi, kā iespējot datu priekšfiltrēšanu Microsoft Dynamics 365 SQL atskaitēs: automātiska un nepārprotama.

Automātiska priekšfiltrēšana

Automātiska datu priekšfiltrēšana ir piemērota vienkāršiem vaicājumiem. Lai iespējotu atskaites automātisko datu priekšfiltrēšanu, vaicājumos varat izmantot entītiju tabulu aizstājvārdus. To var izdarīt, izmantojot aizstājvārdu, kas sākas ar CRMAF_.

Piemēram, tālāk sniegtajos piemēros ir parādīti divi vienkārši vaicājumi, no kuriem viens ir modificēts, lai iespējotu priekšfiltrēšanu entītijai Uzņēmums.

Vaicājums bez iepriekšējas filtrēšanas.

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

Ja iespējojat automātiskās datu priekšfiltrēšanas funkcionalitāti, izmantojot CRMAF_ prefiksu,365 Microsoft Dynamics modificē vaicājumu, lai iekļautu parametru (piemēram, P1), kad tas tiek augšupielādēts programmā Dynamics 365, kā parādīts tālāk sniegtajos piemēros.

Vaicājums ar automātisku priekšfiltrēšanu.

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

Dynamics 365 nodos vaicājumu parametram P1 atkarībā no tā, kā atskaite tiek filtrēta. Citiem vārdiem sakot, automātiskā datu priekšfiltrēšana darbojas kā apakšvaicājums esošajā vaicājumā.

Tālāk sniegtajos piemēros ir parādīts, kā Dynamics 365 nodod vaicājumus parametram (P1) atbilstoši dažādām filtrēšanas prasībām. Šajos piemēros tiek pieņemts, ka izmantojat atskaiti no apgabala Atskaites programmā Dynamics 365 un izmantojat datu filtrēšanas opciju.

1. piemērs

Ja vēlaties skatīt tikai aktīvos kontus, iegūtais vaicājums būs šāds:

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

2. piemērs

Ja atrodaties noteiktā kontā un palaižat atskaiti, iegūtais vaicājums būs šāds:

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

3. piemērs

Ja jums ir trīs atlasīto kontu saraksts un jūs izvēlaties opciju palaist atskaiti pret atlasītajiem ierakstiem, iegūtais vaicājums būs šāds:

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

Ja kāds entītiju tabulu nosaukums ir aizstājvārds, detalizētās atrašanas lietotāja interfeiss tiek automātiski iekļauts izvietošanas atskaitē, kad tas tiek palaists no Dynamics 365.

Lai programmā Query Builder aizstātu entītijas tabulas nosaukumu, ar peles labo pogu noklikšķiniet uz katras atskaites tabulas, atlasiet Rekvizīti un pēc tam veidlapā ievadiet aizstājvārda vērtību CRMAF_FilteredEntity, piemēram , CRMAF_FilteredAccount.

Automātiskās priekšfiltrēšanas ierobežošana

Ja izmantojat CRMAF_ prefiksu, lai iespējotu automātisko priekšfiltrēšanu, Dynamics 365 vaicājumā pievieno parametru. Izmantojot sarežģītāku vaicājumu, piemēram, vaicājumu, kurā tiek izmantoti UNION priekšraksti, tas var izraisīt neparedzētus rezultātus, jo Dynamics 365 var pievienot parametru tikai pirmajam vaicājumam.

Piemēram, apsveriet šādu vaicājumu, kurā ir ietverti UNION paziņojumi:

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'

Kad augšupielādējat atskaiti, Dynamics 365 var filtrēt tikai pirmo vaicājumu, izmantojot parametru. Tas noved pie tā, ka filtrēšana netiek piemērota otrajam vaicājumam:

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'

Iepriekšējā piemērā, palaižot atskaiti no apgabala Atskaites programmā Dynamics 365 un izvēloties filtru kā gada ieņēmumus, kas lielāki par 1000000, Dynamics 365 nodos vaicājumu P1 parametram šādi:

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'

Tas nozīmē, ka vaicājums atgriezīs tikai tos kontus Floridā, kuru gada ieņēmumi ir lielāki par $1000000, un visus kontus Kalifornijā, kas nav tas, ko jūs domājāt. Jūs vēlējāties apskatīt visus kontus Floridā un Kalifornijā, kuru gada ieņēmumi pārsniedz $1000000.

Ja lejupielādējat atskaiti no Dynamics 365 un atverat to korporācijā Microsoft Visual Studio, tiek parādīta atskaites sākotnējā versija, kuru augšupielādējāt programmā Dynamics 365. Ja lejupielādējat atskaiti tieši no Microsoft SQL Server atskaišu izveides pakalpojumiem, pamanīsit, ka Dynamics 365 ir modificējis vaicājumu, bet nav novietojis parametru tur, kur vēlaties, lai tas pastāvētu.

Šādiem sarežģītiem vaicājumiem ir jāizmanto necenzēta priekšfiltrēšana.

Skaidra priekšfiltrēšana

Sarežģītiem vaicājumiem, piemēram, vaicājumiem, kuros izmanto UNION priekšrakstus, iespējams, būs jāizmanto skaidra priekšfiltrēšana. Atšķirībā no automātiskās priekšfiltrēšanas Dynamics 365 nepārraksta atskaites vaicājumu, nododot vērtības parametriem tiešas priekšfiltrēšanas laikā, kad šāda atskaite tiek augšupielādēta programmā Dynamics 365. Jums ir skaidri jāveic nepieciešamās izmaiņas atskaitē, pievienojot atskaitei priekšfiltrēšanas parametru un pēc tam atsaucoties uz vaicājuma parametru. Pēc tam vaicājumu var izpildīt, izmantojot dinamisko SQL.

Izmantojot dinamisko SQL, filtrēšana, izmantojot detalizēto atrašanu, ir iespējota, piemēram CRM_FilteredEntity, izveidojot slēptu parametru ar nosaukumu CRM_FilteredAccount un izmantojot šo parametru dinamiskā SQL vaicājuma izteiksmē. Šis parametrs iespējo tabulas datu filtrēšanu, kas iegūti no norādītā filtrētā skata.

Izmantojot to pašu piemēru, kas tika apspriests iepriekš, lai izceltu automātiskās priekšfiltrēšanas ierobežojumu, nākamajā tabulā ir parādīts vaicājums ar automātisku priekšfiltrēšanu, kas modificēta, lai izmantotu tiešu priekšfiltrēšanu, izmantojot dinamisko SQL. Tiek arī pieņemts, ka, palaižot atskaiti no apgabala Atskaites programmā Dynamics 365, filtrs ir lietots kā gada ieņēmumi, kas lielāki par 1000000.

Vaicājums ar automātisku priekšfiltrēšanu.

   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'

Piezīmes

Lielākajā daļā standarta Dynamics 365 SQL atskaišu tiek izmantota netiešās priekšfiltrēšanas opcija.

Filtru nodošana filtru kopsavilkumā

Filtru kopsavilkumā tiek radīta atskaites palaišanas laikā izmantotā filtra vērtība. Atskaitēs tas tiek rādīts kā tekstlodziņa atskaites vienums tās atskaites virsrakstā, kas satur filtra teksta vērtību. Kad lietotājs palaiž atskaiti, atskaišu skatītājā tiek parādīta poga Rediģēt filtru . Ja uz šo pogu noklikšķināt, lietotājam tiek ļauts definēt datu filtru. Filtru kopsavilkuma piemērs ir atrodams atskaitē Lietotāju kopsavilkums, kas ir ietverta sistēmā Customer Engagement (on-premises).

Lai atskaitei pievienotu filtru kopsavilkumu, izpildiet tālāk aprakstītās darbības.

  1. Izveidojiet slēptu virknes parametru ar nosaukumu CRM_FilterText.

  2. Tekstlodziņa atskaites vienuma pievienošana atskaitei un tā Value rekvizīts iestatiet šādi:
    =Parameters!CRM_FilterText.Value.

    Kad pārskats tiek palaists, sistēma iestatīs parametra CRM_FilterText vērtību pašreizējā filtra tekstam.

Noklusējuma filtri

Kad publicējat atskaiti, varat iestatīt noklusējuma filtru. Ja nav iestatīts noklusējuma filtrs, tad visām atskaitēm, kas tika izveidotas, izmantojot atskaites vedni, filtrs tiek automātiski iestatīts uz visiem entītijas ierakstiem, kuri ir modificēti pēdējo 30 dienu laikā. Noklusējuma atskaišu filtra definēšanas procedūru skatiet sadaļā Atskaišu publicēšana.

Skatiet arī:

Pārskatu un analīzes ceļvedis
Dynamics 365 for Customer Engagement (on-premises) Ziņošanas apsvērumi