Jaa


Raportin suorituskyvyn parantaminen suodattimien avulla

Raportit, jotka palauttaa suuria tietojoukot, voivat olla vaikeita käyttää ja aiheuttaa suorituskykyongelmia. Jos haluat rajata raportin tietoja, käytä tietosuodattimet.

Tietojen suodattamisen Reporting Servicesin avulla lisäksi Microsoft Dynamics 365 Customer Engagement (on-premises) tukee tietojen esisuodatusta. Tietojen esisuodatusta voi käyttää seuraaviin tarkoituksiin:

  • Tee raporteista tilannekohtaisia rajaamalla raportin alaa, jotta sen antaa tärkeimmät tiedot.

  • Hae ja tuo tulosjoukko nopeammin, koska vain tärkeimmät tiedot tuodaan.

  • Salli, että raportti käyttää suodatusta Erikoishaku-toiminto-ominaisuuden avulla.

Tärkeä

Tällä hetkellä raportin kyselyt, joilla on hierarkkisia operaattoreita, kuten Under-operaattori, ei voi käyttää raporttien suodatukseen. Kun yrität suorittaa raportin, joka käyttää hierarkkista operaattoria, raporttia ei hahmonneta.

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

Fetch-pohjaiset raportit tukevat vain automaattista tietojen suodattamista etukäteen. Raportissa voi olla useita tietojoukkoja ja useita järjestelmän FetchXML-kyselyjä. Yksi tietojoukko tukee yhtä FetchXML-kyselyä. Jotta Fetch-pohjaisen raportin ensisijaisen tai linkitettyjen entiteetin etukäteen suodatus olisi voimassa, tulee määrittää enableprefiltering-parametrin arvoksi ”1” ja määritä parametrin nimeksi prefilterparametername-ominaisuudessa. Parametrin nimen alussa on ”CRM_” määrittämään sen piilotetuksi parametriksi. Kuten SQL Server -pohjaisessa raportissa, tämä FetchXML-kyselyssä määritetty parametri toimii alikyselynä FetchXML-kyselyssä, ja alikansion kysely muodostetaan käyttäjän määrittämällä arvolla Erikoishaku-toiminnon alueessa samalla, kun suoritat raportin.

Seuraava esimerkki näyttää ensisijaisen entiteetin etukäteen suodatuksen käyttöön ottamisen FetchXML-kyselyssä käyttäytymistyypistä.

<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. Voit ottaa käyttöön etukäteen suodatuksen linkitetylle entiteetille. Voit myös määrittää etukäteen suodatuksen eri ehdon linkitetylle entiteetille FetchXML-kyselyssä määrittämällä parametrin nimeksi toisen, yksilöllisen nimen prefilterparametername-ominaisuudessa.

    Jos haluat muokata manuaalisesti Fetch-pohjaisen raportin määritelmää käyttämättä ohjattua raportinluontitoimintoa tai SQL Server Data Toolsia, jotta mahdollistat etukäteen suodatuksen ensisijaisille ja linkitetyille entiteeteille, varmista seuraavat:

    <fetch distinct="false" mapping="logical">  
    <entity name="account" enableprefiltering="1" refilterparametername="CRM_FilteredAccount">  
    
  2. Luo vastaavan Kyselyparametri, jossa on sama nimi kuin prefilterparametername-ominaisuudessa määritetty. Parametrin nimen alussa pitää olla CRM_ määrittämään sen piilotetuksi parametriksi.

    <QueryParameters>  
    <QueryParameter Name="CRM_FilteredAccount">  
    <Value>=Parameters!CRM_FilteredAccount.Value</Value>  
    </QueryParameter>  
    
  3. Luo vastaava raporttiparametri jolla on sama nimi.

    <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 Dynamics 365 on-premises)

Tietojen esisuodatuksen voi ottaa käyttöön Microsoft Dynamics 365 SQL-pohjaisen raportin avulla kahdella tavalla: automaattisella ja eksplisiittisellä tavalla.

Automaattinen esisuodatus

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

Seuraavissa esimerkeissä on kaksi yksinkertaista kyselyä, joista yksi on muokattu, jotta Asiakas-entiteetin esisuodatus voidaan ottaa käyttöön.

Kysely ilman esisuodatusta.

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

Kun otat automaattisen tietojen esisuodatustoiminnon käyttöön CRMAF_-etuliitteellä, Microsoft Dynamics 365 muokkaa kyselyä niin, että se sisältää parametrin (esimerkiksi P1), kun se ladataan Dynamics 365:een seuraavien esimerkkien mukaisesti.

Kysely, jossa on automaattinen esisuodatus.

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

Dynamics 365 välittää kyselyn P1-parametrille sen mukaan, miten raportti suodatetaan. Toisin sanoen automaattinen tietojen esisuodatus toimii aiemmin luodun kyselyn alikyselynä.

Seuraavissa esimerkeissä on kuvattu sitä, miten Dynamics 365 siirtää kyselyjä parametriin (P1) eri suodatusvaatimusten mukaisesti. Näissä esimerkeissä oletetaan, että raportti suoritetaan Dynamics 365:n Raportit-alueesta ja että käytössä on tietojen suodatusvaihtoehto.

Esimerkki 1

Jos haluat tarkastella vain aktiivisia tilejä, tuloksena saadaan seuraavanlainen kysely:

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

Esimerkki 2

Jos olet tietyssä tilissä ja suoritat raportin, tuloksena saadaan seuraavanlainen kysely:

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

Esimerkki 3

Jos sinulla on luettelo kolmesta valitusta tilistä ja valitset vaihtoehdon, jonka mukaan raportti suoritetaan valituille tietueille, tuloksena saadaan seuraavanlainen kysely:

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

Kun entiteettitaulukon nimet on aliastettu, erikoishaun käyttöliittymä sisällytetään automaattisesti käyttöön otettuun raporttiin, kun se suoritetaan Dynamics 365:stä.

Jos haluat aliastaa entiteettitaulukon nimen kyselyn muodostimessa, napsauta raportin jokaista taulukkoa hiiren kakkospainikkeella, valitse Ominaisuudet ja kirjoita alias-arvo lomakkeeseen CRMAF_FilteredEntity, esimerkiksi CRMAF_FilteredAccount.

Automaattisen esisuodatuksen rajoitus

Kun otat automaattisen esisuodatuksen käyttöön CRMAF_-etuliitteellä, Dynamics 365 lisää kyselyyn parametrin. Jos kysely on monimutkaisempi, kuten UNION-lauseita käyttävä kysely, se voi aiheuttaa odottamattomia tuloksia, koska Dynamics 365 saattaa lisätä parametrin vain ensimmäiseen kyselyyn.

Ota esimerkiksi huomioon seuraava kysely, joka sisältää UNIONIN-lauseita:

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 palvelimeen, 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'

Kun raportti suoritetaan edellä olevassa esimerkissä Dynamics 365:n Raportit-alueesta ja valitaan suodattimeksi suuremmaksi kuin 1 000 000 vuotuinen myyntituotto, Dynamics 365 siirtää kyselyn P1-parametrille 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 sitä, että kysely palauttaa vain ne tilit Floridassa, joiden vuosituotto on suurempi kuin 1 000 000 dollaria ja kaikki tilit Kaliforniassa, mitä ei ollut tarkoitettu. Halusit tarkastella kaikkia Floridan ja Kalifornian tilejä, joiden vuosituotto on suurempi kuin 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 Servicesista, huomaat, että Dynamics 365 on muokannut kyselyä mutta ei ole asettanut parametria sinne, mihin halusit sen.

Jos kysely on näin monitasoinen, käytä eksplisiittistä esisuodatusta.

Eksplisiittinen esisuodatus

Jos käytössä on monitasoisia kyselyjä, kuten UNION-lauseita käyttävät kyselyt, sinun täytyy ehkä käyttää eksplisiittistä esisuodatusta. Toisin kuin automaattinen esisuodatus, Dynamics 365 ei korvaa raporttikyselyä siten, että se siirtäisi arvot parametreihin eksplisiittisen esisuodatuksen aikana, kun tällainen raportti ladataan Dynamics 365:een. Raporttiin on tehtävä tarvittavat muutokset eksplisiittisesti lisäämällä raporttiin esisuodatusparametri ja viittaamalla sitten kyselyn parametriin. Tämän jälkeen voit suorittaa kyselyn käyttämällä dynaamista SQL:ää.

Kun käytät dynaamista SQL:ää, suodatus erikoishaun kautta otetaan käyttöön luomalla esimerkiksi CRM_FilteredEntity-niminen piilotettu parametri (esim. CRM_FilteredAccount) ja käyttämällä tätä parametria dynaamisessa SQL-kyselylausekkeessa. Tämä parametri mahdollistaa suodatuksen määritetystä suodatetusta näkymästä määritetyille taulukon tiedoille.

Seuraavassa taulukossa on esitetty aiempi automaattista esisuodatusta käyttävä kysely, joka on muokattu käyttämään eksplisiittistä esisuodatusta käyttämällä dynaamista SQL:ää. Oletetaan myös, että kun raporttia suoritetaan Dynamics 365:n Raportit-alueessa, suodatinta on käytetty vuotuisena myyntituottona, joka on suurempi kuin 1 000 000.

Kysely, jossa on automaattinen esisuodatus.

   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'

Muistiinpano

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

Suodattimien siirtäminen suodatinyhteenvetoon

Suodatusyhteenveto näyttää suodattimen arvon, jota käytetään, kun raportti suoritetaan. Raporteissa se näkyy tekstiruutunimikkeenä raportin otsikossa, jossa on suodatusarvoteksti. Kun käyttäjä suorittaa raportin, näyttää raporttien katseluohjelma Muokkaa suodatinta -painikkeen. Kun painiketta napsautetaan, sen avulla käyttäjä voi määrittää tietojen suodattimen. Esimerkki suodatusyhteenvedosta on käyttäjän Asiakasyhteenveto-raportissa, joka sisältyy Customer Engagement (on-premises):een.

Jos haluat lisätä suodattimen yhteenvedon raporttiin, toimi seuraavasti:

  1. Luo piilotettu parametri, jota kutsutaan CRM_FilterText.

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

    Kun raportti suoritetaan, CRM_FilterText-parametrin arvoksi määrittää järjestelmä nykyisen suodattimen tekstin.

Oletussuodattimet

Kun julkaiset raportin, voit määrittää oletussuodattimen. Kaikki raportit, jotka on luotu ohjatun raportin luomisessa, jos et ole määrittänyt oletussuodatinta, suodatin on automaattisesti asetettu kaikille viimeisen 30 päivän aikana muokatuille entiteetin tietueille. Lisätietoja oletusarvoisen raporttisuodattimen määrittämisestä on kohdassa raporttien julkaiseminen.

Katso myös

Raportointi- ja analysointiopas
Dynamics 365 for Customer Engagement (on-premises) – Raportoinnissa huomioitavia seikkoja