Vývoj skriptu JavaScript na blokovanie analýz na základe vzorca

Keď sa používateľ pokúsi zadať alebo upraviť vzorec stĺpca, služba Oracle Analytics vyvolá funkciu validateAnalysisFormula na overenie operácie. Funkciu validateAnalysisFormula môžete prispôsobiť tak, aby overovala a prípadne blokovala vzorce na základe vašich vlastných kritérií. Ak táto funkcia vráti hodnotu true, vzorec bol akceptovaný. Ak je overenie neúspešné, funkcia vráti hodnotu false, vzorec sa zamietne a zobrazí sa vlastné hlásenie.

Ak chcete zobraziť hlásenie a umožniť používateľovi pokračovať, funkcia musí vrátiť hodnotu true. Ak chcete dopyt zablokovať, funkcia musí vrátiť hodnotu false alebo zobraziť hlásenie. Na preskúmanie a overenie vzorca môžete vo funkcii použiť reťazec JavaScriptu a techniky regulárnych výrazov.

K dispozícii sú aj pomocné funkcie, takže funkcia blokovania dopytov môže kontrolovať filtre, stĺpce a podobne. Pozrite si časť Pomocné funkcie overenia.

Nasledujúci kód napríklad znázorňuje, ako zablokovať dopyt, ak používateľ zadá neprijateľný vzorec.

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