Jaa


Paranna raportin suorituskykyä suodattimien avulla

Suuria tietojoukkoja palauttavia raportteja voi olla vaikea käyttää ja ne voivat aiheuttaa suorituskykyongelmia. Jos haluat rajoittaa raportissa esitettyjä tietoja, käytä tietosuodattimia.

Reporting Servicesin tukeman tietojen suodattamisen lisäksi Microsoft Dynamics 365 Customer Engagement (on-premises) tukee tietojen esisuodatusta. Tietojen esisuodatuksen avulla voit tehdä seuraavaa:

  • Tee raporteista tilannekohtaisia kaventamalla raportin laajuutta niin, että ne palauttavat osuvampia tietoja.

  • Hae ja näytä tulosjoukko nopeammin, koska vain osuvampia tietoja palautetaan.

  • Salli raportin suodattaminen erikoishakutoiminnolla .

Tärkeää

Tällä hetkellä hierarkkisia operaattoreita, kuten operaattoria Under , sisältäviä raporttikyselyitä ei voi käyttää raportin suodattamisessa. Kun yrität suorittaa raportin, joka käyttää hierarkkista operaattoria, raporttia ei hahmonneta.

Tietojen esisuodatuksen ottaminen käyttöön Fetch-pohjaisissa raporteissa

Hakupohjaiset raportit tukevat vain automaattista tietojen esisuodatusta. Raportissa voi olla useita tietojoukkoja ja useita FetchXML-kyselyitä. Yksi tietojoukko tukee yhtä FetchXML-kyselyä. Jos haluat ottaa käyttöön ensisijaisen tai linkitetyn entiteetin esisuodatuksen Fetch-pohjaisessa raportissa, sinun on määritettävä parametrin arvoksi enableprefiltering "1" ja määritettävä parametrin nimi ominaisuudessa prefilterparametername . Parametrin nimen tulee alkaa "CRM_", jotta se voidaan määrittää piilotetuksi parametriksi. Kuten SQL Server -pohjaisessa raportissa, tämä FetchXML-kyselyssä määritetty parametri toimii alikyselynä FetchXML-kyselyssä, ja alikysely muodostetaan arvolla, jonka käyttäjä on määrittänyt Erikoishaku-alueella raporttia suoritettaessa.

Seuraavassa esimerkissä näytetään, miten ensisijaisen entiteetin esisuodatus otetaan käyttöön FetchXML-kyselyssä.

<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. Vastaavasti voit ottaa käyttöön esisuodatuksen linkitetylle entiteetille. Voit myös määrittää linkitetylle entiteetille erilaisen esisuodatusehdon FetchXML-kyselyssä määrittämällä ominaisuuden prefilterparametername parametrin nimelle eri ja yksilöllisen nimen.

    Jos muokkaat Fetch-pohjaista raporttimääritystä manuaalisesti käyttämättä ohjattua raporttitoimintoa tai SQL Server Data Toolsia ensisijaisten ja linkitettyjen entiteettien esisuodattamiseen, varmista, että:

    <fetch distinct="false" mapping="logical">  
    <entity name="account" enableprefiltering="1" refilterparametername="CRM_FilteredAccount">  
    
  2. Luo vastaava kyselyparametri, jolla on sama nimi kuin ominaisuudelle prefilterparametername määritetty. Varmista, että parametrin nimi alkaa ja CRM_ määritä se piilotetuksi parametriksi.

    <QueryParameters>  
    <QueryParameter Name="CRM_FilteredAccount">  
    <Value>=Parameters!CRM_FilteredAccount.Value</Value>  
    </QueryParameter>  
    
  3. Luo vastaava raporttiparametri samalla nimellä.

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

Tietojen esisuodatuksen ottaminen käyttöön SQL-pohjaisissa raporteissa (vain paikallinen Dynamics 365)

Voit ottaa tietojen esisuodatuksen käyttöön Microsoft Dynamics 365 SQL -pohjaisissa raporteissa kahdella tavalla: automaattisella ja eksplisiittisellä.

Automaattinen esisuodatus

Automaattinen tietojen esisuodatus sopii yksinkertaisiin kyselyihin. Jos haluat ottaa raportin automaattisen tietojen esisuodatuksen käyttöön, voit käyttää kyselyiden entiteettitaulukoiden aliaksia. Voit tehdä tämän käyttämällä aliasnimeä, joka alkaa CRMAF_.

Seuraavissa esimerkeissä on esimerkiksi kaksi yksinkertaista kyselyä, joista toista on muokattu Asiakas-entiteetin esisuodatuksen mahdollistamiseksi.

Kysely ilman esisuodatusta.

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

Kun otat käyttöön automaattisen tietojen esisuodatustoiminnon etuliitteen CRMAF_ avulla, Microsoft Dynamics 365 muokkaa kyselyä niin, että se sisältää parametrin (esimerkiksi P1), kun se ladataan Dynamics 365:een, kuten seuraavissa esimerkeissä näkyy.

Kysely automaattisella esisuodatuksella.

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

Dynamics 365 välittää kyselyn P1-parametriin sen mukaan, miten raporttia suodatetaan. Toisin sanoen automaattinen tietojen esisuodatus toimii alikyselynä aiemmin luodussa kyselyssä.

Seuraavissa esimerkeissä kuvataan, miten Dynamics 365 välittää kyselyt parametrille (P1) eri suodatusvaatimusten mukaisesti. Näissä esimerkeissä oletetaan, että suoritat raportin Dynamics 365:n Raportit-alueelta ja käytät tietojen suodatusvaihtoehtoa.

Esimerkki 1

Jos haluat tarkastella vain aktiivisia tilejä, tuloksena oleva kysely on seuraava:

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

Esimerkki 2

Jos olet tietyllä tilillä ja suoritat raportin, tuloksena oleva kysely on seuraava:

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

Esimerkki 3

Jos sinulla on kolmen valitun tilin luettelo ja valitset vaihtoehdon, jolla raportti suoritetaan valituille tietueille, tuloksena oleva kysely on seuraava:

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

Kun entiteettitaulukoiden nimiä käytetään aliaksi, erikoishaun käyttöliittymä sisällytetään automaattisesti käyttöön otettuun raporttiin, kun se suoritetaan Dynamics 365:stä.

Jos haluat aliaksen entiteettitaulukon nimen Query Builderissa, napsauta hiiren kakkospainikkeella kutakin raportin taulukkoa, valitse Ominaisuudet ja kirjoita sitten aliasarvo lomakkeeseen CRMAF_FilteredEntity, esimerkiksi CRMAF_FilteredAccount.

Automaattisen esisuodatuksen rajoitus

Kun otat automaattisen esisuodatuksen käyttöön etuliitteen CRMAF_ avulla, Dynamics 365 lisää kyselyyn parametrin. Monimutkaisemmassa kyselyssä, kuten UNION-lausekkeita käyttävässä kyselyssä, tämä voi johtaa odottamattomiin tuloksiin, koska Dynamics 365 saattaa lisätä parametrin vain ensimmäiseen kyselyyn.

Otetaan esimerkiksi seuraava kysely, joka sisältää UNION-lausekkeita:

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'

Kun lataat raportin, Dynamics 365 voi suodattaa vain ensimmäisen kyselyn parametrin avulla. Tämä johtaa siihen, että suodatusta ei käytetä toisessa kyselyssä:

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'

Edellisessä esimerkissä, kun Dynamics 365 suorittaa raportin Dynamics 365:n Raportit-alueelta ja valitsee suodattimen vuotuiseksi tuotoksi, joka on suurempi kuin 1 000 000, Dynamics 365 välittää kyselyn P1-parametriin seuraavasti:

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'

Tämä tarkoittaa, että kysely palauttaa vain ne Floridassa olevat tilit, joiden vuositulot ovat yli 1 000 000 dollaria, ja kaikki Kaliforniassa olevat tilit, mikä ei ole sitä, mitä tarkoitit. Halusit tarkastella kaikkia Floridan ja Kalifornian tilejä, joiden vuositulot ovat yli 1 000 000 dollaria.

Jos lataat raportin Dynamics 365:stä ja avaat sen Microsoft Visual Studiossa, näet Dynamics 365:een lataamasi raportin alkuperäisen version. Jos lataat raportin suoraan Microsoft SQL Server Reporting Servicesistä, huomaat, että Dynamics 365 oli muokannut kyselyä, mutta ei sijoittanut parametria haluamaasi paikkaan.

Tällaisissa monimutkaisissa kyselyissä sinun on käytettävä eksplisiittistä esisuodatusta.

Eksplisiittinen esisuodatus

Monimutkaisissa kyselyissä, kuten UNION-lausekkeita käyttävissä kyselyissä, sinun on ehkä käytettävä eksplisiittistä esisuodatusta. Toisin kuin automaattinen esisuodatus, Dynamics 365 ei kirjoita raporttikyselyä uudelleen välittämällä arvoja parametreihin eksplisiittisen esisuodatuksen aikana, kun tällainen raportti ladataan Dynamics 365:een. Sinun on tehtävä tarvittavat muutokset raporttiin eksplisiittisesti lisäämällä raporttiin esisuodatusparametri ja viittaamalla sitten kyselyn parametriin. Tämän jälkeen voit suorittaa kyselyn dynaamisen SQL:n avulla.

Kun käytät dynaamista SQL:ää, suodattaminen erikoishaun kautta otetaan käyttöön luomalla piilotettu parametri nimeltä CRM_FilteredEntityesimerkiksi , CRM_FilteredAccountja käyttämällä tätä parametria dynaamisessa SQL-kyselylausekkeessa. Tämä parametri mahdollistaa määritetystä suodatetusta näkymästä saatujen taulukon tietojen suodattamisen.

Seuraavassa taulukossa on sama esimerkki kuin aiemmin on käsitelty automaattisen esisuodatuksen rajoituksen korostamiseksi, ja seuraavassa taulukossa on kysely, jossa on automaattinen esisuodatus, joka on muokattu käyttämään eksplisiittistä esisuodatusta dynaamisen SQL:n avulla. Oletuksena on myös, että kun raporttia suoritetaan Dynamics 365:n Raportit-alueelta , suodatinta on käytetty yli 1 000 000 vuotuisena tuottona.

Kysely automaattisella esisuodatuksella.

   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'

Huomautus

Useimmissa Dynamics 365 SQL -pohjaisissa vakioraporteissa käytetään eksplisiittistä esisuodatusvaihtoehtoa.

Suodattimien soveltaminen suodattimien yhteenvedossa

Suodattimen yhteenveto näyttää raportin suoritettaessa käytettävän suodattimen arvon. Raporteissa se näkyy tekstiruudun raporttikohteena raportin otsikossa, joka sisältää suodattimen tekstiarvon. Kun käyttäjä suorittaa raportin, Report Viewer näyttää Muokkaa suodatinta -painikkeen. Kun painiketta napsautetaan, käyttäjä voi määrittää tietosuodattimen. Esimerkki suodatinyhteenvedosta on Customer Engagement (on-premises) -ohjelmaan sisältyvässä Käyttäjän yhteenveto -raportissa.

Voit lisätä suodattimen yhteenvedon raporttiin seuraavasti:

  1. Luo piilotettu merkkijonoparametri nimeltä CRM_FilterText.

  2. Lisää raporttiin tekstiruudun raporttikohde ja määritä sen Value ominaisuus seuraavasti:
    =Parameters!CRM_FilterText.Value.

    Kun raportti suoritetaan, järjestelmä asettaa parametrin CRM_FilterText arvoksi nykyisen suodattimen tekstin.

Oletussuodattimet

Kun julkaiset raportin, voit määrittää oletussuodattimen. Jos et määritä oletussuodatinta kaikille ohjatun raporttitoiminnon avulla luoduille raporteille, suodattimeksi määritetään automaattisesti kaikki entiteetin tietueet, joita on muokattu viimeisten 30 päivän aikana. Raportin oletussuodattimen määrittäminen on kohdassa Raporttien julkaiseminen.

Katso myös

Raportointi- ja analytiikkaopas
Dynamics 365 for Customer Engagement (on-premises) -raportoinnin huomioitavia seikkoja