Κοινή χρήση μέσω


Βελτίωση της απόδοσης αναφοράς με τη χρήση φίλτρων

Οι αναφορές που επιστρέφουν μεγάλα σύνολα δεδομένων μπορεί να είναι δύσκολο να χρησιμοποιηθούν και μπορεί να προκαλέσουν προβλήματα στην απόδοση. Για να περιορίσετε τα δεδομένα που παρουσιάζονται σε μια αναφορά, χρησιμοποιήστε φίλτρα δεδομένων.

Εκτός από το φιλτράρισμα δεδομένων που υποστηρίζεται από τις υπηρεσίες αναφοράς, το Microsoft Dynamics 365 Customer Engagement (on-premises) υποστηρίζει επίσης και το προ-φιλτράρισμα δεδομένων. Μπορείτε να χρησιμοποιήσετε προφιλτράρισμα:

  • Για να κάνετε αναφορές με βάση το συγκείμενο περιορίζοντας το πεδίο της αναφοράς για να επιστρέψετε περισσότερα σχετικά δεδομένα.

  • Για να ανακτήσετε και να εμφανίσετε ένα σύνολο αποτελεσμάτων ταχύτερα επειδή επιστρέφονται μόνο περισσότερα σχετικά δεδομένα.

  • Για να επιτρέψετε στην αναφορά να φιλτραριστεί χρησιμοποιήστε τη δυνατότητα Πρόσθετα κριτήρια εύρεσης.

Σημαντικό

Προς το παρόν, τα ερωτήματα αναφορών με ιεραρχικούς τελεστές, όπως ο τελεστής Under, δεν μπορούν να χρησιμοποιηθούν με το φιλτράρισμα αναφορών. Όταν προσπαθείτε να εκτελέσετε μια αναφορά που χρησιμοποιεί έναν ιεραρχικό τελεστή, η αναφορά δεν θα αποδοθεί.

Ενεργοποίηση προ-φιλτραρίσματος δεδομένων σε αναφορές που βασίζονται σε Fetch

Οι αναφορές που βασίζονται σε Fetch υποστηρίζουν μόνο αυτόματο προ-φιλτράρισμα δεδομένων. Μια αναφορά μπορεί να έχει πολλά σύνολα δεδομένων και ερωτήματα FetchXML. Ένα σύνολο δεδομένων υποστηρίζει ένα ερώτημα FetchXML. Για να ενεργοποιήσετε το προ-φιλτράρισμα για την κύρια ή τη συνδεδεμένη οντότητα σε μια αναφορά βασισμένη σε Fetch, πρέπει να ορίσετε την τιμή της παραμέτρου enableprefiltering σε "1" και να καθορίσετε ένα όνομα παραμέτρου στην ιδιότητα prefilterparametername. Το όνομα παραμέτρου πρέπει να αρχίζει με "CRM_" για να την ορίσετε ως κρυφή παράμετρο. Όπως και με την αναφορά βάσει SQL Server, αυτή η παράμετρος καθορίζεται στο ερώτημα FetchXML και ενεργεί ως δευτερεύον ερώτημα στο ερώτημα FetchXML. Το δευτερεύον ερώτημα δημιουργείται με την τιμή που καθορίζεται από τον χρήστη στην περιοχή Πρόσθετα κριτήρια εύρεσης κατά την εκτέλεση μιας αναφοράς.

Το ακόλουθο παράδειγμα εμφανίζει τον τρόπο για να ενεργοποιήσετε το προ-φιλτράρισμα για την κύρια οντότητα στο ερώτημα 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. Ομοίως, έχετε τη δυνατότητα προ-φιλτραρίσματος για τη συνδεδεμένη οντότητα. Μπορείτε επίσης να καθορίσετε μια διαφορετική συνθήκη προ-φιλτραρίσματος για τη συνδεδεμένη οντότητα στο ερώτημα FetchXML καθορίζοντας ένα διαφορετικό και μοναδικό όνομα για το όνομα της παραμέτρου στην ιδιότητα prefilterparametername.

    Εάν τροποποιείτε έναν ορισμό αναφοράς βασισμένης σε Fetch με μη αυτόματο τρόπο χωρίς τη χρήση του Οδηγού αναφοράς ή το SQL Server Data Tools για να ενεργοποιήσετε το προ-φιλτράρισμα για κύριες και συνδεδεμένες οντότητες, βεβαιωθείτε ότι μπορείτε:

    <fetch distinct="false" mapping="logical">  
    <entity name="account" enableprefiltering="1" refilterparametername="CRM_FilteredAccount">  
    
  2. Να δημιουργήσετε μια αντίστοιχη παράμετρο ερωτήματος με το ίδιο όνομα όπως καθορίζεται για την ιδιότητα prefilterparametername. Βεβαιωθείτε ότι το όνομα παραμέτρου αρχίζει με CRM_ για να την ορίσετε ως κρυφή παράμετρο.

    <QueryParameters>  
    <QueryParameter Name="CRM_FilteredAccount">  
    <Value>=Parameters!CRM_FilteredAccount.Value</Value>  
    </QueryParameter>  
    
  3. Να δημιουργήσετε μια αντίστοιχη παράμετρο αναφοράς με το ίδιο όνομα.

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

Ενεργοποίηση του προ-φιλτραρίσματος δεδομένων σε αναφορές που βασίζονται σε SQL (μόνο το Dynamics 365 On-premises)

Υπάρχουν δύο τρόποι με τους οποίους μπορείτε να ενεργοποιήσετε το προ-φιλτράρισμα δεδομένων σε αναφορές βάσει SQL Microsoft Dynamics 365: αυτόματες και ρητές.

Αυτόματο προ-φιλτράρισμα

Το αυτόματο προ-φιλτράρισμα δεδομένων ενδείκνυται για απλά ερωτήματα. Για να ενεργοποιήσετε το αυτόματο προ-φιλτράρισμα δεδομένων σε μια αναφορά, μπορείτε να χρησιμοποιήσετε ψευδώνυμα για τους πίνακες οντοτήτων στα ερωτήματα. Αυτό μπορείτε να το κάνετε χρησιμοποιώντας ένα ψευδώνυμο που αρχίζει με CRMAF_.

Για παράδειγμα, τα παρακάτω παραδείγματα δείχνουν δύο απλά ερωτήματα, με ένα να έχει τροποποιηθεί για να ενεργοποιηθεί το προ-φιλτράρισμα στην οντότητα "Λογαριασμός".

Υποβολή ερωτήματος χωρίς προ-φιλτράρισμα.

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

Όταν ενεργοποιείτε τη λειτουργία αυτόματου φιλτραρίσματος δεδομένων με χρήση του προθέματος CRMAF_, το Microsoft Dynamics 365 τροποποιεί το ερώτημα ώστε να περιλαμβάνει μια παράμετρο (για παράδειγμα, P1) όταν αποστέλλεται στο Dynamics 365, όπως φαίνεται στα παρακάτω παραδείγματα.

Υποβολή ερωτήματος με αυτόματο προ-φιλτράρισμα.

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

Το Dynamics 365 θα διαβιβάσει ένα ερώτημα στην παράμετρο P1 ανάλογα με τον τρόπο φιλτραρίσματος της αναφοράς. Με άλλα λόγια, το αυτόματο προ-φιλτράρισμα δεδομένων ενεργεί ως δευτερεύον ερώτημα μέσα στο υπάρχον ερώτημα.

Τα παρακάτω παραδείγματα απεικονίζουν τον τρόπο με τον οποίο το Dynamics 365 διαβιβάζει ερωτήματα στην παράμετρο (P1) σύμφωνα με διαφορετικές απαιτήσεις φιλτραρίσματος. Σε αυτά τα παραδείγματα, είναι εικάζεται ότι εκτελείτε την αναφορά από την περιοχή Αναφορές στο Dynamics 365 και χρησιμοποιείτε την επιλογή φιλτραρίσματος δεδομένων.

Παράδειγμα 1

Εάν θέλετε να προβάλετε μόνο ενεργούς λογαριασμούς, το ερώτημα που προκύπτει θα είναι το εξής:

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

Παράδειγμα 2

Εάν είστε εντός ενός συγκεκριμένου λογαριασμού και εκτελείτε την αναφορά, το ερώτημα που προκύπτει θα είναι το εξής:

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

Παράδειγμα 3

Εάν έχετε μια λίστα τριών επιλεγμένων λογαριασμών και επιλέξετε να εκτελέσετε την αναφορά στις επιλεγμένες καρτέλες, το ερώτημα που προκύπτει θα είναι το εξής:

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

Όταν ορίσετε ως ψευδώνυμα ονόματα πινάκων οντοτήτων, το περιβάλλον εργασίας χρήστη των Πρόσθετων κριτήριων εύρεσης περιλαμβάνεται αυτόματα στην αναφορά που έχει αναπτυχθεί όταν εκτελείται από το Dynamics 365.

Για να ορίσετε ως ψευδώνυμο ένα όνομα πίνακα οντοτήτων στο Εργαλείο δόμησης ερωτημάτων, κάντε δεξιό κλικ σε κάθε πίνακα της αναφοράς σας, επιλέξτε Ιδιότητες και, στη συνέχεια, πληκτρολογήστε την τιμή ψευδωνύμου στη φόρμα CRMAF_FilteredEntity, για παράδειγμα, CRMAF_FilteredAccount.

Περιορισμός του αυτόματου προ-φιλτραρίσματος

Όταν χρησιμοποιείτε το πρόθεμα CRMAF_ για να ενεργοποιήσετε το αυτόματο προ-φιλτράρισμα, το Dynamics 365 προσθέτει μια παράμετρο στο ερώτημα. Με ένα πιο σύνθετο ερώτημα, όπως ένα ερώτημα που χρησιμοποιεί δηλώσεις UNION, αυτό μπορεί να οδηγήσει σε μη αναμενόμενα αποτελέσματα, επειδή το Dynamics 365 ενδέχεται να προσθέσει μόνο την παράμετρο στο πρώτο ερώτημα.

Για παράδειγμα, εξετάστε το παρακάτω ερώτημα που περιέχει δηλώσεις 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'

Όταν αποστείλετε την αναφορά, το Dynamics 365 μπορεί να φιλτράρει μόνο το πρώτο ερώτημα χρησιμοποιώντας την παράμετρο. Αυτό οδηγεί στο φιλτράρισμα να μην εφαρμόζεται στο δεύτερο ερώτημα:

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'

Στο προηγούμενο παράδειγμα, ενώ εκτελείτε την αναφορά από την περιοχή Αναφορές στο Dynamics 365 και επιλέγετε το φίλτρο ως ετήσια έσοδα μεγαλύτερα από το 1000000, το Dynamics 365 θα διαβιβάσει ένα ερώτημα στην παράμετρο P1 ως εξής:

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'

Αυτό σημαίνει ότι το ερώτημα θα επιστρέψει μόνο εκείνους τους λογαριασμούς στη Φλόριντα. με ετήσια έσοδα μεγαλύτερα από το $1000000 και όλους τους λογαριασμούς στην Καλιφόρνια, που δεν είναι αυτό που θέλετε. Θέλετε να δείτε όλους τους λογαριασμούς στη Φλόριντα και στην Καλιφόρνια με ετήσια έσοδα μεγαλύτερα από $1000000.

Εάν κάνετε λήψη της αναφοράς από το Dynamics 365 και την ανοίξετε στο Microsoft Visual Studio, θα δείτε την αρχική έκδοση της αναφοράς που στείλατε στο Dynamics 365. Εάν κάνετε λήψη της αναφοράς απευθείας από τις Υπηρεσίες αναφοράς Microsoft SQL Server, θα παρατηρήσετε ότι το Dynamics 365 τροποποίησε το ερώτημα αλλά δεν τοποθέτησε την παράμετρο εκεί που θέλετε να υπάρχει.

Για σύνθετα ερωτήματα όπως αυτό, πρέπει να χρησιμοποιήσετε ρητό προ-φιλτράρισμα.

Ρητό προ-φιλτράρισμα

Για σύνθετα ερωτήματα, όπως ερωτήματα χρησιμοποιώντας δηλώσεις UNION, ενδέχεται να χρειαστεί να χρησιμοποιήσετε ρητό προ-φιλτράρισμα. Αντίθετα με το αυτόματο προ-φιλτράρισμα, το Dynamics 365 δεν γράφει ξανά το ερώτημα αναφοράς διαβιβάζοντας τιμές στις παραμέτρους κατά το ρητό προ-φιλτράρισμα, όταν μια τέτοια αναφορά αποστέλλεται στο Dynamics 365. Πρέπει να κάνετε ρητά τις απαιτούμενες αλλαγές στην αναφορά προσθέτοντας την παράμετρο προ-φιλτραρίσματος στην αναφορά και, στη συνέχεια, κάνοντας αναφορά στην παράμετρο του ερωτήματος. Στη συνέχεια, μπορείτε να εκτελέσετε το ερώτημα χρησιμοποιώντας δυναμικό SQL.

Όταν χρησιμοποιείτε δυναμικό SQL, το φιλτράρισμα μέσω των πρόσθετων κριτήριων εύρεσης ενεργοποιείται με τη δημιουργία μιας κρυφής παραμέτρου με όνομα CRM_FilteredEntity, για παράδειγμα, CRM_FilteredAccount, και με τη χρήση αυτής της παραμέτρου σε μια δυναμική παράσταση ερωτήματος SQL. Αυτή η παράμετρος επιτρέπει το φιλτράρισμα στα δεδομένα του πίνακα που αποκτήθηκαν από την καθορισμένη φιλτραρισμένη προβολή.

Ακολουθώντας το ίδιο παράδειγμα που συζητήσαμε προηγουμένως για να επισημάνετε τον περιορισμό του αυτόματου προ-φιλτραρίσματος, ο παρακάτω πίνακας εμφανίζει ένα ερώτημα με τροποποίηση του αυτόματου προ-φιλτραρίσματος για χρήση ρητού προ-φιλτραρίσματος με χρήση δυναμικού SQL. Επίσης, εικάζεται ότι κατά την εκτέλεση της αναφοράς από την περιοχή Αναφορές στο Dynamics 365, το φίλτρο έχει εφαρμοστεί ως ετήσια έσοδα μεγαλύτερα από 1000000.

Υποβολή ερωτήματος με αυτόματο προ-φιλτράρισμα.

   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'

Σημείωμα

Οι περισσότερες από τις τυπικές αναφορές που βασίζονται σε SQL στο Dynamics 365 χρησιμοποιούν τη ρητή επιλογή προ-φιλτραρίσματος.

Μεταβίβαση φίλτρων στη σύνοψη φίλτρων

Μια σύνοψη φίλτρων εμφανίζει την τιμή του φίλτρου που χρησιμοποιείται κατά την εκτέλεση μιας αναφοράς. Στις αναφορές, εμφανίζεται ως στοιχείο αναφοράς πλαισίου κειμένου στην κεφαλίδα της αναφοράς που περιέχει την τιμή κειμένου του φίλτρου. Όταν ο χρήστης εκτελεί την αναφορά, η προβολή αναφορών εμφανίζει ένα κουμπί Επεξεργασία φίλτρου. Όταν κάνετε κλικ στο κουμπί, επιτρέπει στο χρήστη να ορίσει ένα φίλτρο δεδομένων. Ένα παράδειγμα σύνοψης φίλτρου μπορείτε να βρείτε στην αναφορά σύνοψης χρηστών που περιλαμβάνεται στο Customer Engagement (on-premises).

Για να προσθέσετε μια σύνοψη φίλτρου αναφοράς, ακολουθήστε τα εξής βήματα:

  1. Δημιουργία μιας παραμέτρου συμβολοσειράς κρυφής με το όνομα CRM_FilterText.

  2. Προσθέστε ένα στοιχείο αναφοράς πλαισίου κειμένου στην αναφορά και ρυθμίστε την Value ιδιότητα ως εξής:
    =Parameters!CRM_FilterText.Value.

    Κατά την εκτέλεση της αναφοράς, η τιμή για την CRM_FilterText παράμετρο θα οριστεί το σύστημα για το κείμενο του τρέχοντος φίλτρου.

Προεπιλεγμένα φίλτρα

Όταν δημοσιεύετε μια αναφορά, μπορείτε να ορίσετε ένα προεπιλεγμένο φίλτρο. Για όλες τις αναφορές που δημιουργήθηκαν με τη χρήση του Οδηγού αναφοράς, εάν δεν ορίσετε ένα προεπιλεγμένο φίλτρο, το φίλτρο ορίζεται αυτόματα σε όλες τις καρτέλες της οντότητας που τροποποιήθηκαν μέσα στις τελευταίες 30 ημέρες. Για τη διαδικασία για τον καθορισμό του προεπιλεγμένου φίλτρου αναφοράς, ανατρέξτε στην ενότητα Δημοσίευση αναφορών.

Δείτε επίσης

Οδηγός αναφοράς και ανάλυσης
Dynamics 365 for Customer Engagement (on-premises) Ζητήματα προς εξέταση σχετικά με τις αναφορές