Επικύρωση και αποκλεισμός ερωτημάτων σε αναλύσεις με χρήση προσαρμοσμένης JavaScript

Μπορείτε να αναπτύξετε δέσμες ενεργειών επικύρωσης σε JavaScript για την επικύρωση κριτηρίων ανάλυσης και τύπων στήλης και τον αποκλεισμό μη έγκυρων ερωτημάτων.

Αποκλεισμός ερωτημάτων σε αναλύσεις

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

  1. Αναπτύξτε τις προσαρμοσμένες δέσμες ενεργειών επικύρωσης σε JavaScript, αποθηκεύστε τες σε έναν server ιστού και σημειώστε τη διεύθυνση τοποθεσίας που παραπέμπει στο αρχείο JavaScript (*.JS) το οποίο περιέχει τις προσαρμοσμένες δέσμες ενεργειών.
    Για παράδειγμα, μπορεί να αναπτύξετε μια δέσμη ενεργειών αποκλεισμού που αποθηκεύετε στο myblocking.js και η διεύθυνση τοποθεσίας μπορεί να είναι:http://example.com:8080/mycustomscripts/myblocking.js.
  2. Καθορίστε τη διεύθυνση τοποθεσίας του server ιστού στις Ρυθμίσεις συστήματος:
    1. Κάντε κλικ στην Κονσόλα και έπειτα στο στοιχείο Ρυθμίσεις συστήματος.
    2. Στη Διεύθυνση τοποθεσίας για τον αποκλεισμό ερωτημάτων σε αναλύσεις, εισαγάγετε τη διεύθυνση τοποθεσίας που σημειώσατε στο Βήμα 1.
  3. Εγγραφή του web server ως ασφαλούς τομέα:
    1. Κάντε κλικ στην Κονσόλα και έπειτα στο στοιχείο Ασφαλείς τομείς.
    2. Προσθέστε μια καταχώριση για τον τομέα στη διεύθυνση τοποθεσίας που καθορίσατε στο βήμα 2.
      Για παράδειγμα, μπορείτε να προσθέσετε: example.com:8080.
    3. Για τις επιλογές, επιλέξτε Δέσμη ενεργειών και Σύνδεση.
  4. Δοκιμάστε τις δέσμες ενεργειών επικύρωσης:
    1. Ανοίξτε μια ανάλυση.
    2. Εκτελέστε την ανάλυση με έγκυρα και μη έγκυρα κριτήρια.
    3. Επαληθεύστε ότι τα ερωτήματα έχουν αποκλειστεί όπως αναμένεται.

Ανάπτυξη JavaScript για τον αποκλεισμό αναλύσεων με βάση κριτήρια

Κάθε φορά που ένας χρήστης προσπαθεί να εκτελέσει μια ανάλυση, το Oracle Analytics καλεί τη συνάρτηση validateAnalysisCriteria. Μπορείτε να προσαρμόσετε τη συνάρτηση validateAnalysisCriteria για την επικύρωση και τον αποκλεισμό ερωτημάτων με βάση δικά σας συγκεκριμένα κριτήρια. Εάν η συνάρτηση επιστρέψει true, το ερώτημα εκτελείται. Εάν η συνάρτηση επιστρέψει false ή εμφανίσει ένα μήνυμα, το ερώτημα θα αποκλειστεί.

Για παράδειγμα, ακολουθεί ένα δείγμα κώδικα για ένα πρόγραμμα JavaScript που ονομάζεται myblocking.js.

// This is a blocking function. It ensures that users select what 
// the designer wants them to.
function validateAnalysisCriteria(analysisXml)
{
   // Create the helper object
   var tValidator = new CriteriaValidator(analysisXml);
   // Validation Logic
   if (tValidator.getSubjectArea() != "Sample Sales")
      return "Try Sample Sales?";
   if (!tValidator.dependentColumnExists("Markets","Region","Markets","District"))
   {
      // If validation script notifies user, then return false
      alert("Region and District are well suited, do you think?");
      return false;
   }
   if (!tValidator.dependentColumnExists("Sales Measures","","Periods","Year"))
   return "You selected a measure so pick Year!";
   if (!tValidator.filterExists("Sales Measures","Dollars"))
   return "Maybe filter on Dollars?";
   if (!tValidator.dependentFilterExists("Markets","Market","Markets"))
   return "Since you are showing specific Markets, filter the markets.";
   var n = tValidator.filterCount("Markets","Region");
   if ((n <= 0) || (n > 3))
      return "Select 3 or fewer specific Regions";
   return true;
}

Εάν η συνάρτηση επιστρέψει οτιδήποτε άλλο εκτός από false, τα κριτήρια θεωρούνται έγκυρα και η ανάλυση εκτελείται. Η συνάρτηση χρησιμοποιείται επίσης για την επικύρωση κριτηρίων για λειτουργίες προεπισκόπησης και αποθήκευσης.

Ανάπτυξη JavaScript για τον αποκλεισμό αναλύσεων με βάση τύπο

Κάθε φορά που ένας χρήστης προσπαθεί να εισαγάγει ή να τροποποιήσει έναν μαθηματικό τύπο στήλης, το Oracle Analytics καλεί τη συνάρτηση validateAnalysisCriteria για να επαληθεύσει τη λειτουργία. Μπορείτε να προσαρμόσετε τη συνάρτηση validateAnalysisFormula για την επικύρωση και τον αποκλεισμό μαθηματικών τύπων με βάση δικά σας συγκεκριμένα κριτήρια. Εάν η συνάρτηση επιστρέψει true, ο μαθηματικός τύπος γίνεται αποδεκτός. Εάν η επικύρωση αποτύχει, η συνάρτηση επιστρέφει false, ο μαθηματικός τύπος απορρίπτεται και εμφανίζεται το προσαρμοσμένο μήνυμά σας.

Για να εμφανιστεί ένα μήνυμα και να επιτρέψετε στους χρήστες να συνεχίσουν, η συνάρτηση πρέπει να επιστρέφει true. Για να αποκλείσετε το ερώτημα, η συνάρτησή σας πρέπει να επιστρέφει false ή να εμφανίζει ένα μήνυμα. Μπορείτε να χρησιμοποιήσετε μια συμβολοσειρά JavaScript και τεχνικές κανονικής έκφρασης στη συνάρτησή σας για να διερευνήσετε και να επικυρώσετε τον τύπο.

Διατίθενται βοηθητικές συναρτήσεις ώστε η συνάρτηση αποκλεισμού ερωτημάτων να μπορεί να ελέγχει για φίλτρα, στήλες, κτλ. Ανατρέξτε στην ενότητα Βοηθητικές λειτουργίες επικύρωσης.

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

// This is a formula blocking function. It makes sure the user doesn't enter an unacceptable formula.
function validateAnalysisFormula(sFormula, sAggRule)
{
   // don't allow the use of concat || in our formulas
   var concatRe = /\|\|/gi;
   var nConcat = sFormula.search(concatRe);
   if (nConcat >= 0)
      return "You used concatenation (character position " + nConcat + "). That isn't allowed.";
   // no case statements
   var caseRe = /CASE.+END/gi;
   if (sFormula.search(caseRe) >= 0)
      return "Don't use a case statement.";
   // Check for a function syntax: aggrule(formula) aggrule shouldn't contain a '.'
   var castRe = /^\s*\w+\s*\(.+\)\s*$/gi;
   if (sFormula.search(castRe) >= 0)
      return "Don't use a function syntax such as RANK() or SUM().";
    return true;
}

Βοηθητικές λειτουργίες επικύρωσης

Διατίθενται αρκετές βοηθητικές λειτουργίες επικύρωσης σε ένα αρχείο JavaScript για να τις χρησιμοποιήσετε.

Βοηθητική λειτουργία επικύρωσης Περιγραφή

CriteriaValidator.getSubjectArea()

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

CriteriaValidator.tableExists(sTable)

Επιστρέφει true εάν ο καθορισμένος φάκελος (πίνακας) έχει προστεθεί στην ανάλυση από τον σχεδιαστή περιεχομένου και false εάν ο φάκελος δεν έχει προστεθεί.

CriteriaValidator.columnExists(sTable, sColumn)

Επιστρέφει true εάν η καθορισμένη στήλη έχει προστεθεί στην ανάλυση από τον σχεδιαστή περιεχομένου και false εάν δεν έχει προστεθεί.

CriteriaValidator.dependentColumnExists(sCheckTable, sCheckColumn, sDependentTable, sDependentColumn)

Ελέγχει για να εξασφαλιστεί ότι η στήλη dependentColumn υπάρχει εάν υπάρχει η στήλη checkColumn. Επιστρέφει true εάν είτε η στήλη checkColumn δεν υπάρχει ή υπάρχουν η στήλη checkColumn και η εξαρτώμενη στήλη. Εάν οι στήλες checkColumn και dependentColumn είναι null, οι φάκελοι επικυρώνονται. Εάν υπάρχει οποιαδήποτε στήλη από τον πίνακα checkTable, τότε πρέπει να υπάρχει μια στήλη από τον πίνακα dependentTable.

CriteriaValidator.filterExists(sFilterTable, sFilterColumn)

Επιστρέφει true εάν υπάρχει ένα φίλτρο στην καθορισμένη στήλη και false εάν δεν υπάρχει κανένα φίλτρο.

CriteriaValidator.dependentFilterExists(sCheckTable, sCheckColumn, sFilterTable, sFilterColumn)

Ελέγχει για να εξασφαλίσει ότι υπάρχει το dependentFilter εάν η στήλη checkColumn υπάρχει στη λίστα προβολής. Επιστρέφει true εάν είτε δεν υπάρχει η στήλη checkColumn ή υπάρχουν η στήλη checkColumn και το εξαρτώμενο φίλτρο.

CriteriaValidator.filterCount(sFilterTable, sFilterColumn)

Επιστρέφει τον αριθμό των τιμών φίλτρου που έχουν καθοριστεί για τη δεδομένη λογική στήλη. Εάν η τιμή φίλτρου είναι "ισούται με," "null," "notNull"ή "περιέχεται σε", επιστρέφει τον αριθμό των επιλεγμένων τιμών. Εάν η στήλη δεν χρησιμοποιείται σε ένα φίλτρο, τότε επιστρέφει μηδέν. Εάν η στήλη έχει προτροπή χωρίς καμία προεπιλογή, τότε επιστρέφει -1. Για όλους τους άλλους τελεστές φίλτρου (όπως, "μεγαλύτερο από," "αρχίζει με" κτλ.) επιστρέφει 999, επειδή δεν μπορεί να προσδιοριστεί ο αριθμός τιμών.