ตรวจสอบและบล็อคการสืบค้นในการวิเคราะห์โดยใช้จาวาสคริปต์ที่กำหนดเอง

คุณสามารถพัฒนาสคริปต์การตรวจสอบในจาวาสคริปต์ เพื่อตรวจสอบเกณฑ์การวิเคราะห์และสูตรของคอลัมน์ แล้วบล็อคการสืบค้นที่ไม่ถูกต้องได้

บล็อคการสิบค้นในการวิเคราะห์

ผู้ใช้ที่ทำงานกับการวิเคราะห์สามารถเรียกใช้จาวาสคริปต์ที่กำหนดเอง เพื่อตรวจสอบเกณฑ์การวิเคราะห์และสูตรของคอลัมน์ การตรวจสอบช่วยให้สามารถบล็อคการสืบค้นเมื่อแก้ไขการวิเคราะห์ได้ จาวาสคริปต์ที่กำหนดเองต้องสามารถเข้าใช้ได้ผ่านเว็บเซิร์ฟเวอร์ ในการใช้งานคุณสมบัตินี้ ผู้ดูแลระบบจะระบุ URL ของเว็บเซิร์ฟเวอร์ในการตั้งค่าระบบ และรีจิสเตอร์เว็บเซิร์ฟเวอร์เป็นโดเมนที่ปลอดภัย

  1. พัฒนาสคริปต์การตรวจสอบที่คุณกำหนดเองในจาวาสคริปต์, จัดเก็บในเว็บเซิร์ฟเวอร์ และระบุให้ URL ไปยังไฟล์ JavaScript (*.JS) ที่มีสคริปต์ที่กำหนดเอง
    ตัวอย่างเช่น คุณอาจพัฒนาสคริปต์การบล็อคที่คุณจัดเก็บไว้ใน myblocking.js โดยอาจมี URL เป็น:http://example.com:8080/mycustomscripts/myblocking.js
  2. ระบุ URL ของเว็บเซิร์ฟเวอร์ในการตั้งค่าระบบ ดังนี้
    1. คลิก คอนโซล แล้วคลิก การตั้งค่าระบบขั้นสูง
    2. ใน URL สำหรับการบล็อคการสิบค้นในการวิเคราะห์ ให้ป้อน URL ที่คุณระบุไว้ในขั้นตอนที่ 1
  3. รีจิสเตอร์เว็บเซิร์ฟเวอร์เป็นโดเมนที่ปลอดภัย:
    1. คลิก คอนโซล แล้วคลิก โดเมนที่ปลอดภัย
    2. เพิ่มรายการสำหรับโดเมนใน URL ที่คุณระบุในขั้นตอนที่ 2
      ตัวอย่างเช่น คุณอาจเพิ่ม: example.com:8080
    3. สำหรับตัวเลือก เลือกสคริปต์ และ เชื่อมต่อ
  4. ทดสอบสคริปต์การตรวจสอบของคุณ ดังนี้
    1. เปิดการวิเคราะห์
    2. รันการวิเคราะห์กับทั้งเกณฑ์ที่ถูกต้องและไม่ถูกต้อง
    3. ตรวจสอบว่าการบล็อคการสืบค้นเป็นไปตามที่ต้องการ

พัฒนาจาวาสคริปต์เพื่อบล็อคการวิเคราะห์ตามเกณฑ์

เมื่อใดก็ตามที่ผู้ใช้พยายามรันการวิเคราะห์ Oracle Analytics จะเรียกใช้ฟังก์ชัน validateAnalysisCriteria คุณสามารถปรับแต่ง validateAnalysisCriteria เพื่อตรวจสอบและบล็อคการสืบค้นตามเกณฑ์ที่คุณระบุเองได้ หากฟังก์ชันส่งคืนค่า true ระบบจะรันการสืบค้น หากฟังก์ชันส่งคืนค่า false หรือแสดงข้อความ ระบบจะบล็อคการสืบค้น

ตัวอย่างเช่น รหัสต่อไปนี้เป็นรหัสตัวอย่างสำหรับโปรแกรมจาวาสคริปต์ที่ชื่อ myblocking.js

// 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 หรือแสดงข้อความ คุณสามารถใช้เทคนิคของสตริงจาวาสคริปต์และเอ็กซ์เพรสชันทั่วไปได้ในฟังก์ชันของคุณเพื่อสำรวจและตรวจสอบสูตรดังกล่าว

ฟังก์ชันโปรแกรมวิธีใช้พร้อมใช้งานเพื่อให้ฟังก์ชันการบล็อคการสืบค้นสามารถตรวจสอบฟิลเตอร์ คอลัมน์ และอื่นๆ ได้แล้ว โปรดดู ฟังก์ชันโปรแกรมวิธีใช้การตรวจสอบ

ตัวอย่างเช่น รหัสต่อไปนี้แสดงวิธีบล็อคการสืบค้น หากผู้ใช้ป้อนสูตรที่ไม่สามารถยอมรับได้

// 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;
}

ฟังก์ชันโปรแกรมวิธีใช้การตรวจสอบ

มีฟังก์ชันโปรแกรมวิธีใช้การตรวจสอบในไฟล์จาวาสคริปต์ที่พร้อมให้คุณใช้งานหลายรายการ

ฟังก์ชันโปรแกรมวิธีใช้การตรวจสอบ คำอธิบาย

CriteriaValidator.getSubjectArea()

ส่งคืนชื่อของหัวเรื่องที่อ้างอิงโดยการวิเคราะห์ โดยทั่วไป จะใช้ในคำสั่ง switch ภายในฟังก์ชัน ก่อนที่จะดำเนินการตรวจสอบอื่นๆ ต่อไป หากการวิเคราะห์เป็นเกณฑ์ที่กำหนดเป็นชุด การวิเคราะห์จะส่งคืน ค่านัล

CriteriaValidator.tableExists(sTable)

ส่งคืน true หากมีการเพิ่มโฟลเดอร์ (ตาราง) ที่ระบุในการวิเคราะห์โดยผู้ออกแบบเนื้อหา และ false หากไม่มีการเพิ่มโฟลเดอร์

CriteriaValidator.columnExists(sTable, sColumn)

ส่งคืน true หากมีการเพิ่มคอลัมน์ที่ระบุในการวิเคราะห์โดยผู้ออกแบบเนื้อหา และ false หากไม่มีการเพิ่มคอลัมน์

CriteriaValidator.dependentColumnExists(sCheckTable, sCheckColumn, sDependentTable, sDependentColumn)

ตรวจสอบเพื่อให้แน่ใจว่ามี dependentColumn หากมี checkColumn ฟังก์ชันนี้ส่งคืน true หากไม่มี checkColumn หรือมี checkColumn และคอลัมน์อ้างอิง หาก checkColumn และ dependentColumn เป็น null แสดงว่ามีการตรวจสอบโฟลเดอร์แล้ว หากมีคอลัมน์จาก checkTable แสดงว่าต้องมีคอลัมน์จาก dependentTable ด้วย

CriteriaValidator.filterExists(sFilterTable, sFilterColumn)

ส่งคืน true หากมีฟิลเตอร์อยู่ในคอลัมน์ที่ระบุ และ false หากไม่มีฟิลเตอร์

CriteriaValidator.dependentFilterExists(sCheckTable, sCheckColumn, sFilterTable, sFilterColumn)

ตรวจสอบเพื่อให้แน่ใจว่ามี dependentFilter หากมี checkColumn อยู่ในลิสต์การแสดง ฟังก์ชันนี้ส่งคืน true หากไม่มี checkColumn หรือมี checkColumn และฟิลเตอร์อ้างอิง

CriteriaValidator.filterCount(sFilterTable, sFilterColumn)

ส่งคืนจำนวนค่าของฟิลเตอร์ที่ระบุไว้สำหรับคอลัมน์แบบลอจิคัลที่กำหนดให้ หากค่าฟิลเตอร์ คือ "equals," "null," "notNull", หรือ "in" ฟังก์ชันจะส่งคืนจำนวนค่าที่เลือกไว้ หากไม่มีการใช้คอลัมน์ในฟิลเตอร์ ฟังก์ชันจะส่งคืนค่าศูนย์ หากมีการพรอมต์คอลัมน์โดยไม่มีค่าดีฟอลต์ ฟังก์ชันจะส่งคืน -1 สำหรับโอเปอเรเตอร์ของฟิลเตอร์อื่นทั้งหมด (เช่น "greater than," "begins with" เป็นต้น) ฟังก์ชันจะส่งคืน 999 เนื่องจากไม่สามารถกำหนดจำนวนค่าได้