開發 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;
}