計算式に基づいて分析をブロックする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;
}