Tambah baik prestasi laporan menggunakan penapis

Laporan yang mengembalikan set data yang besar mungkin sukar digunakan dan boleh menyebabkan masalah prestasi. Untuk mengehadkan data yang ditunjukkan dalam laporan, gunakan penapis data.

Selain penapisan data yang disokong oleh Perkhidmatan Pelaporan, Microsoft Dynamics 365 Customer Engagement (on-premises) menyokong prapenapisan data. Anda boleh menggunakan prapenapisan data untuk:

  • Membuat laporan sensitif konteks dengan mengecilkan skop laporan untuk mengembalikan data yang lebih berkaitan.

  • Mendapatkan semula dan paparkan set hasil lebih pantas kerana hanya data yang lebih berkaitan dikembalikan.

  • Benarkan laporan ditapis menggunakan ciri Carian Lanjutan.

Penting

Pada masa ini, laporkan pertanyaan dengan pengendali hierarki, seperti Under pengendali, tidak boleh digunakan dengan penapisan laporan. Apabila anda cuba menjalankan laporan yang menggunakan operator hierarki, laporan tidak akan ditunjukkan.

Mendayakan prapenapisan data dalam laporan berdasarkan Ambilan

Laporan berdasarkan Ambilan menyokong hanya prapenapisan data automatik. Laporan boleh mempunyai berbilang set data dan berbilang pertanyaan FetchXML. Satu set data menyokong satu pertanyaan FetchXML. Untuk membolehkan penapisan pra untuk entiti utama atau terpaut dalam laporan berasaskan Fetch, anda mesti menetapkan nilai enableprefiltering parameter kepada "1", dan menentukan nama parameter dalam sifat. prefilterparametername Nama parameter sepatutnya bermula dengan “CRM_” untuk menentukan ia sebagai parameter tersembunyi. Seperti laporan berasaskan SQL Server, parameter yang ditentukan dalam pertanyaan FetchXML bertindak sebagai sub pertanyaan dalam pertanyaan FetchXML dan sub pertanyaan dibina dengan nilai yang ditentukan oleh pengguna dalam kawasan Carian Lanjutan semasa menjalankan laporan.

Contoh berikut memaparkan cara untuk mendayakan prapenapisan untuk entiti utama dalam pertanyaan 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. Begitu juga, anda boleh mendayakan prapenapisan untuk entiti yang dipautkan. Anda juga boleh menentukan syarat pra-penapisan yang berbeza untuk entiti terpaut dalam pertanyaan FetchXML dengan menentukan nama yang berbeza dan unik untuk nama parameter dalam sifat. prefilterparametername

    Jika anda mengubah suai definisi laporan berdasarkan Fetch secara manual tanpa menggunakan Bestari Laporan atau SQL Server Data Tools untuk mendayakan pra-penapisan untuk entiti utama dan terpaut, pastikan anda:

    <fetch distinct="false" mapping="logical">  
    <entity name="account" enableprefiltering="1" refilterparametername="CRM_FilteredAccount">  
    
  2. Mencipta parameter pertanyaan yang sepadan dengan nama yang sama seperti yang ditentukan untuk prefilterparametername sifat. Pastikan nama parameter bermula untuk CRM_ menentukannya sebagai parameter tersembunyi.

    <QueryParameters>  
    <QueryParameter Name="CRM_FilteredAccount">  
    <Value>=Parameters!CRM_FilteredAccount.Value</Value>  
    </QueryParameter>  
    
  3. Mencipta parameter laporan sepadan dengan nama yang sama.

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

Mendayakan penapisan data dalam laporan berasaskan SQL (Dynamics 365 di premis sahaja)

Terdapat dua cara anda boleh mendayakan pra-penapisan data pada Microsoft Dynamics 365 laporan berasaskan SQL: automatik dan eksplisit.

Pra-penapisan automatik

Pra-penapisan data automatik sesuai untuk pertanyaan mudah. Untuk mendayakan pra-penapisan data automatik pada laporan, anda boleh menggunakan alias untuk jadual entiti dalam pertanyaan. Anda melakukan ini dengan menggunakan nama alias yang bermula dengan CRMAF_.

Sebagai contoh, contoh berikut menunjukkan dua pertanyaan ringkas, dengan satu diubah suai untuk membolehkan pra-penapisan pada entiti Akaun.

Pertanyaan tanpa pra-penapisan.

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

Apabila anda mendayakan kefungsian pra-penapisan data automatik menggunakan CRMAF_ awalan,365 mengubah suai pertanyaan untuk memasukkan parameter (contohnya, P1) apabila ia dimuat naik ke Dynamics 365, Microsoft Dynamics seperti yang ditunjukkan dalam contoh berikut.

Pertanyaan dengan pra-penapisan automatik.

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

Dynamics 365 akan menghantar pertanyaan kepada parameter P1 bergantung pada cara laporan sedang ditapis. Dalam erti kata lain, pra-penapisan data automatik bertindak sebagai subpertanyaan dalam pertanyaan sedia ada.

Contoh berikut menggambarkan cara Dynamics 365 menghantar pertanyaan kepada parameter (P1) mengikut keperluan penapisan yang berbeza. Dalam contoh ini, anda diandaikan bahawa anda menjalankan laporan dari kawasan Laporan dalam Dynamics 365 dan menggunakan opsyen penapisan data.

Contoh 1

Jika anda ingin melihat akaun aktif sahaja, pertanyaan yang terhasil adalah seperti berikut:

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

Contoh 2

Jika anda berada dalam akaun tertentu dan menjalankan laporan, pertanyaan yang terhasil adalah seperti berikut:

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

Contoh 3

Jika anda mempunyai senarai tiga akaun terpilih dan anda memilih opsyen untuk menjalankan laporan terhadap rekod yang dipilih, pertanyaan yang terhasil adalah seperti berikut:

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

Apabila mana-mana nama jadual entiti dinamakan, antara muka pengguna Carian Lanjutan disertakan secara automatik dalam laporan yang digunakan apabila ia dijalankan daripada Dynamics 365.

Untuk alias nama jadual entiti dalam Pembina Pertanyaan, klik kanan setiap jadual dalam laporan anda, pilih Sifat, kemudian masukkan nilai alias dalam borangCRMAF_FilteredEntity , contohnya,CRMAF_FilteredAccount.

Had pra-penapisan automatik

Apabila anda menggunakan CRMAF_ awalan untuk mendayakan pra-penapisan automatik, Dynamics 365 menambah parameter dalam pertanyaan. Dengan pertanyaan yang lebih kompleks, seperti pertanyaan yang menggunakan penyata UNION, ini boleh membawa kepada hasil yang tidak dijangka kerana Dynamics 365 mungkin hanya menambah parameter pada pertanyaan pertama.

Contohnya, pertimbangkan pertanyaan berikut yang mengandungi kenyataan 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'

Apabila anda memuat naik laporan, Dynamics 365 mungkin menapis pertanyaan pertama sahaja menggunakan parameter. Ini membawa kepada penapisan yang tidak digunakan untuk pertanyaan kedua:

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'

Dalam contoh sebelumnya, semasa menjalankan laporan dari kawasan Laporan dalam Dynamics 365 dan memilih penapis sebagai hasil tahunan yang lebih besar daripada 1000000, Dynamics 365 akan menghantar pertanyaan kepada parameter P1 seperti berikut:

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'

Ini menunjukkan bahawa pertanyaan akan mengembalikan hanya akaun tersebut di Florida dengan pendapatan tahunan yang lebih besar daripada $1000000 dan semua akaun di California, yang bukan seperti yang anda maksudkan. Anda ingin melihat semua akaun di Florida dan California dengan pendapatan tahunan lebih besar daripada $1000000.

Jika anda memuat turun laporan daripada Dynamics 365 dan membukanya dalam Microsoft Visual Studio, anda akan melihat versi asal laporan yang anda muat naik ke dalam Dynamics 365. Jika anda memuat turun laporan terus daripada Microsoft SQL Server Perkhidmatan Pelaporan, anda akan melihat bahawa Dynamics 365 telah mengubah suai pertanyaan tetapi tidak meletakkan parameter di tempat yang anda inginkan ia wujud.

Untuk pertanyaan kompleks seperti ini, anda mesti menggunakan pra-penapisan eksplisit.

Pra-penapisan eksplisit

Untuk pertanyaan kompleks seperti pertanyaan menggunakan penyata UNION, anda mungkin perlu menggunakan pra-penapisan eksplisit. Tidak seperti pra-penapisan automatik, Dynamics 365 tidak menulis semula pertanyaan laporan dengan menghantar nilai kepada parameter semasa pra-penapisan eksplisit apabila laporan sedemikian dimuat naik ke Dynamics 365. Anda mesti membuat perubahan yang diperlukan pada laporan secara eksplisit dengan menambah parameter pra-penapisan pada laporan, kemudian merujuk parameter dalam pertanyaan. Anda kemudian boleh melaksanakan pertanyaan menggunakan SQL dinamik.

Apabila anda menggunakan SQL dinamik, penapisan melalui Carian Lanjutan didayakan dengan mencipta parameter tersembunyi bernama CRM_FilteredEntity, contohnya,dan CRM_FilteredAccount menggunakan parameter ini dalam ungkapan pertanyaan SQL dinamik. Parameter ini membolehkan penapisan pada data jadual yang diperoleh daripada pandangan ditapis yang ditentukan.

Mengambil contoh yang sama seperti yang dibincangkan sebelum ini untuk menyerlahkan had pra-penapisan automatik, jadual berikut menunjukkan pertanyaan dengan pra-penapisan automatik diubah suai untuk menggunakan pra-penapisan eksplisit menggunakan SQL dinamik. Ia juga diandaikan bahawa semasa menjalankan laporan dari kawasan Laporan dalam Dynamics 365, penapis telah digunakan sebagai pendapatan tahunan yang lebih besar daripada 1000000.

Pertanyaan dengan pra-penapisan automatik.

   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'

Nota

Kebanyakan laporan berasaskan Dynamics 365 SQL standard menggunakan opsyen pra-penapisan eksplisit.

Penyerahan penapis dalam ringkasan penapis

Ringkasan penapis memaparkan nilai penapis yang digunakan apabila laporan dijalankan. Dalam laporan, ia dipaparkan sebagai item laporan kotak teks dalam pengepala laporan yang mengandungi nilai teks penapis. Apabila pengguna menjalankan laporan, Pemapar Laporan memaparkan butang Edit Penapis . Apabila butang diklik, ia membolehkan pengguna untuk mentakrifkan penapis data. Contoh ringkasan penapis boleh ditemui dalam laporan Ringkasan Pengguna yang disertakan dengan Customer Engagement (on-premises).

Untuk menambah ringkasan penapis pada laporan, ikut langkah ini:

  1. Buat parameter rentetan tersembunyi yang dipanggil CRM_FilterText.

  2. Tambah item laporan kotak teks pada laporan dan setkan sifatnya Value seperti berikut:
    =Parameters!CRM_FilterText.Value.

    Apabila laporan dijalankan, nilai CRM_FilterText parameter akan ditetapkan oleh sistem kepada teks penapis semasa.

Penapis lalai

Apabila anda menerbitkan laporan, anda boleh menetapkan penapis lalai. Untuk semua laporan yang telah dicipta menggunakan wizard laporan, jika anda tidak menetapkan penapis lalai, penapis secara automatik ditetapkan kepada semua rekod entiti yang diubah suai dalam masa 30 hari terakhir. Untuk prosedur mentakrifkan penapis laporan lalai, lihat Terbitkan Laporan.

Lihat juga

Panduan Pelaporan dan Analisis
Dynamics 365 for Customer Engagement (on-premises) Pertimbangan Pelaporan