开发 JavaScript 以基于公式阻止分析

每当用户尝试输入或修改列公式时,Oracle Analytics 都会调用函数 validateAnalysisFormula 来验证操作。您可以定制 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;
}