Kyselyjen vahvistus ja esto analyyseissa käyttäen mukautettua JavaScriptia

Voit kehittää mukautettuja tarkistuskomentosarjoja JavaScriptissa, jotta voit tarkistaa analyysiehtoja ja sarakekaavoja sekä estää virheellisiä kyselyjä.

Kyselyjen esto analyyseissa

Analyyseja käyttävät käyttäjät voivat kutsua mukautetun JavaScriptin analyysiehtojen ja sarakekaavojen tarkistusta varten. Tarkistuksen avulla kyselyt voidaan estää analyysia muokattaessa. Mukautetun JavaScriptin on oltava käytettävissä verkkopalvelimen kautta. Jotta tätä ominaisuutta voitaisiin käyttää, pääkäyttäjät määrittävät verkkopalvelimen URL-osoitteen järjestelmäasetuksissa ja rekisteröivät verkkopalvelimen turvalliseksi toimialueeksi.

  1. Kehitä mukautetun tarkistuksen komentosarjat JavaScriptiä käyttäen, tallenna ne verkkopalvelimeen ja kirjoita muistiin URL-osoite, joka osoittaa mukautetut komentosarjat sisältävään JavaScript-tiedostoon (*.JS).
    Voisit esimerkiksi kehittää estokomentosarjan, jonka tallennat palvelimeen myblocking.js. Tällöin URL-osoite voisi olla http://example.com:8080/mycustomscripts/myblocking.js.
  2. Verkkopalvelimen URL-osoitteen määritys järjestelmäasetuksissa:
    1. Valitse Konsoli ja sitten Järjestelmäasetukset.
    2. Syötä URL kyselyjen estämiseen analyyseissa -kohtaan vaiheessa 1 muistiin kirjoittamasi URL-osoite.
  3. Web-palvelun rekisteröinti turvalliseksi toimialueeksi:
    1. Valitse Konsoli ja sitten Turvalliset toimialueet.
    2. Lisää merkintä, joka koskee vaiheessa 2 määritetyn URL-osoitteen toimialuetta.
      Esimerkki: esimerkki.com:8080.
    3. Tee seuraavat valinnat: Komentosarja ja Yhdistä.
  4. Testaa tarkistuskomentosarjat:
    1. Avaa analyysi.
    2. Aja analyysi sekä sallittuja että virheellisiä ehtoja käyttäen.
    3. Tarkista, että kyselyt estetään odotetusti.

JavaScriptin kehitys analyysien estoon ehtojen perusteella

Aina kun käyttäjä yrittää ajaa analyysin, Oracle Analytics käynnistää validateAnalysisCriteria-funktion. Voit mukauttaa validateAnalysisCriteria-funktiota sekä tarkistaa ja estää kyselyjä itse määrittämiesi ehtojen perusteella. Jos funktio palauttaa arvon true, kysely ajetaan. Jos funktio palauttaa arvon false tai näyttää sanoman, kysely estetään.

Seuraavaksi näytetään esimerkki myblocking.js-nimisen JavaScript-ohjelman koodista.

// 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;
}

Jos funktio palauttaa minkä tahansa muun arvon kuinfalse, ehtojen katsotaan olevan oikeita ja analyysi ajetaan. Funktion avulla myös tarkistetaan toimintojen esikatselun ja tallennuksen ehdot.

JavaScriptin kehitys analyysien estoon kaavan perusteella

Aina kun käyttäjä yrittää syöttää sarakkeen kaavan tai muokata sitä, Oracle Analytics käynnistää validateAnalysisFormula-funktion toiminnon tarkistamiseksi. Voit mukauttaa validateAnalysisFormula-funktiota sekä tarkistaa ja estää kaavoja itse määrittämiesi ehtojen perusteella. Jos funktio palauttaa arvon true, kaava hyväksytään. Jos tarkistus epäonnistuu, funktio palauttaa arvon false, kaava hylätään ja näkyviin tulee mukautettu sanoma.

Jotta sanoma tulisi näkyviin ja käyttäjä voisi jatkaa, funktion on palautettava arvo true. Jotta kysely estetään, funktio on palautettava arvo false tai näyttää sanoma. Voit käyttää JavaScript-merkkijono- ja säännöllinen lauseke -tekniikoita funktiossa kaavan tutkimiseen ja vahvistukseen.

Käytettävissä on aputoiminnon funktioita, joten kyselynestofunktio voi tarkistaa suodattimia, sarakkeita jne. Katso kohta Tarkistuksen aputoiminnon funktiot.

Seuraava esimerkkikoodi näyttää, kuinka kysely estetään, jos käyttäjä syöttää väärän kaavan.

// 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;
}

Tarkistuksen aputoiminnon funktiot

JavaScript-tiedostossa on käytettävissä useita tarkistuksen aputoiminnon funktioita.

Tarkistuksen aputoiminnon funktiot Kuvaus

CriteriaValidator.getSubjectArea()

Palauttaa analyysissa viitatun aihealueen nimen. Sitä käytetään yleensä funktion switch-lauseessa ennen muita tarkistuksia. Jos analyysi on joukkoon perustuva ehto, se palauttaa arvon null.

CriteriaValidator.tableExists(sTable)

Palauttaa arvon true, jos sisältösuunnittelija on lisännyt määritetyn kansion (taulukon) analyysiin, ja arvon false, jos kansiota ei ole lisätty.

CriteriaValidator.columnExists(sTable, sColumn)

Palauttaa arvon true, jos sisältösuunnittelija on lisännyt määritetyn sarakkeen analyysiin, ja arvon false, jos saraketta ei ole lisätty.

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

Tarkistaa, onko dependentColumn olemassa, jos checkColumn on olemassa, Palauttaa arvon tosi true, jos checkColumn-parametria ei ole, tai jos on olemassa sekä checkColumn että sidonnainen sarake. Jos sekä checkColumn-parametrin että dependentColumn-parametrin arvo on null, kansiot tarkistetaan. Jos on olemassa mikä tahansa checkTable-parametri, on oltava myös dependentTable-parametrista peräisin oleva sarake.

CriteriaValidator.filterExists(sFilterTable, sFilterColumn)

Palauttaa arvon true, jos määritetyssä sarakkeessa on suodatin, ja arvon false, jos suodatinta ei ole.

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

Tarkistaa, onko dependentFilter olemassa, jos checkColumn on projektioluettelossa. Palauttaa arvon true, jos checkColumn-parametria ei ole, tai jos on olemassa sekä checkColumn että sidonnainen suodatin.

CriteriaValidator.filterCount(sFilterTable, sFilterColumn)

Palauttaa annetulle loogiselle sarakkeelle määritettyjen suodatinarvojen määrän. Jos suodattimen arvo on equals, null, notNull tai in, palauttaa valittujen arvojen lukumäärän. Jos saraketta ei käytetä suodattimessa, palauttaa nollan. Jos saraketta pyydetään kehotteella, jossa ei ole oletusarvoa, palauttaa arvon -1. Kaikille muille suodatinoperaattoreille (kuten greater than tai begins with) se palauttaa arvoksi 999, koska arvojen määrää ei voi määrittää.