機械翻訳について

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