JavaScriptで検証スクリプトを開発し、分析基準や列の計算式を検証し、無効な問合せをブロックできます。
分析を担当するユーザーは、カスタムJavaScriptを呼び出して、分析基準や列の計算式を検証できます。検証を使用すると、分析を編集する際に問合せをブロックできます。カスタムJavaScriptにはWebサーバーからアクセスできることが必要です。この機能を有効にするには、管理者はシステム設定でWebサーバーのURLを指定し、Webサーバーを安全ドメインとして登録します。
ユーザーが分析を実行しようとするたびに、Oracle Analyticsは関数validateAnalysisCriteria
を呼び出します。独自の基準に基づいて問合せを検証してブロックするように、validateAnalysisCriteria
をカスタマイズできます。関数がtrue
を返すと、問合せは実行されます。関数がfalse
を返すかメッセージを表示すると、問合せはブロックされます。
たとえば、次に示すのは、myblocking.js
という名前のJavaScriptプログラムのサンプル・コードです。
// This is a blocking function. It ensures that users select what // the designer wants them to. function validateAnalysisCriteria(analysisXml) { // Create the helper object var tValidator = new CriteriaValidator(analysisXml); // Validation Logic if (tValidator.getSubjectArea() != "Sample Sales") return "Try Sample Sales?"; if (!tValidator.dependentColumnExists("Markets","Region","Markets","District")) { // If validation script notifies user, then return false alert("Region and District are well suited, do you think?"); return false; } if (!tValidator.dependentColumnExists("Sales Measures","","Periods","Year")) return "You selected a measure so pick Year!"; if (!tValidator.filterExists("Sales Measures","Dollars")) return "Maybe filter on Dollars?"; if (!tValidator.dependentFilterExists("Markets","Market","Markets")) return "Since you are showing specific Markets, filter the markets."; var n = tValidator.filterCount("Markets","Region"); if ((n <= 0) || (n > 3)) return "Select 3 or fewer specific Regions"; return true; }
関数がfalse
以外を返すと、基準が有効とみなされて、分析が実行されます。この関数を使用して、プレビューや保存の操作の基準を検証することもできます。
ユーザーが列の計算式を入力または変更しようとするたびに、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; }
使用できるいくつかの検証ヘルパー関数がJavaScriptファイルにあります。
検証ヘルパー関数 | 説明 |
---|---|
|
分析で参照されるサブジェクト領域の名前を返します。通常、これは関数内で他の検証を実行する前にswitch文で使用されます。分析がセット・ベースの基準である場合は |
|
指定されたフォルダ(表)がコンテンツ設計者によって分析に追加された場合は |
|
指定された列がコンテンツ設計者によって分析に追加された場合は |
|
|
|
指定された列に対してフィルタが存在する場合は |
|
|
|
特定の論理列に指定されたフィルタ値の数を返します。フィルタ値が、" |