การเขียนทีหลังช่วยให้ผู้ใช้สามารถอัปเดตข้อมูลจากการวิเคราะห์ได้
หัวข้อต่างๆ มีดังนี้
การเขียนทีหลังจะช่วยให้ผู้ใช้สามารถอัปเดตข้อมูลของตัวเองได้โดยตรงจากแผงข้อมูลและการวิเคราะห์
ผู้ใช้ที่มีสิทธิ์ เขียนกลับสู่ฐานข้อมูล จะเห็นฟิลด์การเขียนกลับเป็นฟิลด์ที่แก้ไขได้ในการวิเคราะห์ ค่าที่ผู้ใช้ป้อนจะได้รับการบันทึกไว้ในฐานข้อมูล ผู้ใช้ที่ไม่มีสิทธิ์ เขียนกลับสู่ฐานข้อมูล จะเห็นฟิลด์การเขียนกลับเป็นฟิลด์แบบอ่านอย่างเดียว
ถ้าผู้ใช้พิมพ์ค่าในฟิลด์ที่แก้ไขได้ และคลิกปุ่มการเขียนกลับ แอปพลิเคชันจะรันคำสั่ง SQL insert
หรือ update
ที่กำหนดในเทมเพลทการเขียนกลับ ถ้าคำสั่งสำเร็จ การวิเคราะห์จะได้รับการอัปเดตด้วยค่าใหม่ หากมีข้อผิดพลาดเกิดขึ้นขณะอ่านเทมเพลทหรือขณะรันคำสั่ง SQL ข้อความแสดงข้อผิดพลาดจะปรากฏ
คำสั่ง insert
จะรันเมื่อยังไม่มีเรคคอร์ด และผู้ใช้ป้อนข้อมูลใหม่ในตาราง ในกรณีนี้ ผู้ใช้พิมพ์ค่าในเรคคอร์ดตารางซึ่งค่าเดิมเป็นนัล คำสั่ง update
จะรันเมื่อผู้ใช้แก้ไขข้อมูลที่มีอยู่ ในการแสดงเรคคอร์ดที่ยังไม่มีอยู่ในตารางแบบฟิสิคัล คุณสามารถสร้างตารางที่คล้ายกันอื่นได้ ใช้ตารางที่คล้ายกันนี้แสดงเรคคอร์ดตัวจองพื้นที่ที่ผู้ใช้สามารถแก้ไข
หมายเหตุ:
เมื่อคุณสร้างเทมเพลทการเขียนกลับ คุณต้องรวมคำสั่ง insert
และคำสั่ง update
ด้วย แม้ว่าจะไม่ได้ใช้คำสั่งทั้งคู่ก็ตาม ตัวอย่างเช่น หากคุณกำลังดำเนินการ insert
เท่านั้น คุณต้องรวมคำสั่ง update
ว่าง <update></update>
เช่นในรหัส XML นี้:
insert
สองรายการ และคำสั่ง update
ว่างสองรายการ โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีการสร้างและการวางโครงสร้างไฟล์ XML การเขียนกลับที่ สร้างไฟล์เทมเพลทการเขียนกลับ
<?xml version="1.0" encoding="utf-8" ?> <WebMessageTables xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="oracle.bi.presentation/writebackschemas/v1"> <WebMessageTable lang="en-us" system="WriteBack" table="Messages"> <WebMessage name="SetQuotaUseID"> <XML> <writeBack connectionPool="Supplier"> <insert>INSERT INTO regiontypequota VALUES(@{c5f6e60e1d6eb1098},@{c5d7e483445037d9e},'@{c3a93e65731210ed1}','@{c6b8735ea60ff3011}',@{c0432jkl53eb92cd8})</insert> <update></update> </writeBack> </XML> </WebMessage> <WebMessage name="SetForecastUseID"> <XML> <writeBack connectionPool="Supplier"> <insert>INSERT INTO regiontypeforecast VALUES(@{c83ebf607f3cb8320},@{cb7e2046a0fba2204},'@{c5a93e65d31f10e0}','@{c5a93e65d31f10e0}',@{c7322jkl93ev92cd8})</insert> <update></update> </writeBack> </XML> </WebMessage> </WebMessageTable> </WebMessageTables>
ผู้ดูแลระบบสามารถกำหนดให้ผู้ใช้สามารถแก้ไขข้อมูลในการวิเคราะห์และแผงข้อมูล
ผู้ใช้สามารถเขียนกลับที่มาข้อมูลใดๆ ที่อนุญาตให้รันการสืบค้น SQL จาก Oracle Analytics ได้
เมื่อคุณคอนฟิเกอร์สำหรับการเขียนกลับ โปรดคำนึงถึงข้อจำกัดต่อไปนี้
คอลัมน์ตัวเลขต้องมีตัวเลขเท่านั้น และต้องไม่มีอักขระการจัดรูปแบบข้อมูล เช่น เครื่องหมายดอลลาร์ ($), เครื่องหมายปอนด์หรือเครื่องหมายแฮช (#), เครื่องหมายเปอร์เซ็นต์ (%) เป็นต้น
คอลัมน์ข้อความต้องมีข้อมูลสตริงเท่านั้น
หากผู้ใช้ที่ล็อกออนกำลังดูแผงข้อมูลที่มีการวิเคราะห์อยู่ โดยที่มีการแก้ไขข้อมูลโดยใช้การเขียนกลับ ระบบจะไม่รีเฟรชข้อมูลในแผงข้อมูลให้โดยอัตโนมัติ ในการดูข้อมูลอัปเดต ผู้ใช้ต้องรีเฟรชแผงข้อมูลด้วยตนเอง
คุณสามารถใช้กลไกของเทมเพลทกับวิวแบบตารางและสำหรับข้อมูลแบบค่าเดียวเท่านั้น ระบบไม่รองรับกลไกของเทมเพลทสำหรับวิวแบบตารางเปลี่ยนจุดอ้างอิงหรือวิวประเภทอื่น, สำหรับข้อมูลแบบหลายค่า หรือสำหรับคอลัมน์ดรอปดาวน์ที่มีข้อมูลค่าเดียว
ค่าทั้งหมดในคอลัมน์การเขียนกลับเป็นค่าที่แก้ไขได้ เมื่อปรากฏในบริบทที่ไม่เหมาะกับเครื่องพิมพ์ ฟิลด์ที่แก้ไขได้จะแสดงเหมือนกับว่าผู้ใช้มีสิทธิ์ เขียนกลับสู่ฐานข้อมูล อย่างไรก็ตาม เมื่อแมปคอลัมน์แบบลอจิคัลกับคอลัมน์แบบฟิสิคัลที่สามารถเปลี่ยนแปลงได้ คอลัมน์แบบลอจิคัลจะส่งคืนค่าสำหรับอินเตอร์เซกชันแบบหลายระดับ สถานการณ์นี้อาจทำให้เกิดปัญหา
ฟิลด์ที่อยู่ในการวิเคราะห์สามารถแฟลกเป็นฟิลด์การเขียนกลับ แม้ว่าจะไม่ได้รับค่ามาจากตารางการเขียนกลับที่คุณสร้างก็ตาม อย่างไรก็ตาม คุณไม่สามารถรันการเขียนกลับได้ หากตารางไม่ได้ใช้งานการเขียนกลับ การแท็กฟิลด์อย่างถูกต้องเป็นความรับผิดชอบของผู้ออกแบบเนื้อหา
เทมเพลทสามารถมีคำสั่ง SQL อื่นที่ไม่ใช่ insert
และ update
ได้ ฟังก์ชันการเขียนกลับจะส่งคำสั่งเหล่านี้ไปยังฐานข้อมูล อย่างไรก็ตาม Oracle ไม่รองรับหรือแนะนำให้ใช้คำสั่งอื่นนอกเหนือจาก insert
หรือ update
Oracle Analytics ดำเนินการตรวจสอบอินพุตข้อมูลได้เพียงเล็กน้อยเท่านั้น หากฟิลด์เป็นตัวเลข และผู้ใช้ป้อนข้อมูลที่เป็นข้อความ Oracle Analytics จะตรวจหาฟิลด์ดังกล่าว และป้องกันไม่ให้ข้อมูลที่ไม่ถูกต้องไปยังฐานข้อมูล อย่างไรก็ตาม จะไม่ตรวจหาอิมพุตข้อมูลที่ไม่ถูกต้องในรูปแบบอื่น (ค่าที่อยู่นอกช่วง, ค่าที่ผสมระหว่างข้อความและตัวเลข เป็นต้น) เมื่อผู้ใช้คลิกปุ่มการเขียนกลับ และรันการแทรกหรือการอัปเดต ข้อมูลที่ไม่ถูกต้องจะแสดงผลลัพธ์เป็นข้อความแสดงข้อผิดพลาดจากฐานข้อมูล จากนั้น ผู้ใช้จะสามารถแก้ไขอินพุตที่ไม่ถูกต้องได้ ผู้ออกแบบเนื้อหาสามารถรวมข้อความในการวิเคราะห์การเขียนกลับเพื่อช่วยเหลือผู้ใช้ ตัวอย่างเช่น "Entering mixed alphanumeric values into a numeric data field isn't allowed."
กลไกของเทมเพลทไม่เหมาะสมสำหรับการป้อนเรคคอร์ดใหม่ที่กำหนดเอง อีกนัยหนึ่งคือ อย่าใช้เป็นเครื่องมืออินพุตข้อมูล
เมื่อสร้างตารางสำหรับการเขียนกลับ ตรวจสอบให้แน่ใจว่าคอลัมน์อย่างน้อยหนึ่งคอลัมน์ไม่มีความสามารถในการเขียนกลับ แต่มีค่าที่ไม่ซ้ำกันสำหรับแต่ละแถวและต้องไม่ใช่ค่านัล
การวิเคราะห์การเขียนกลับไม่รองรับการดริลล์ดาวน์ เนื่องจากการดริลล์ดาวน์จะเป็นการแก้ไขโครงสร้างตาราง ซึ่งส่งผลให้เทมเพลทการเขียนกลับไม่ทำงาน
ข้อควรระวัง:
กลไกของเทมเพลทใช้อินพุตของผู้ใช้และเชียนลงในฐานข้อมูลโดยตรง ทั้งนี้ การรักษาความปลอดภัยฐานข้อมูลแบบฟิสิคัลถือเป็นความรับผิดชอบของคุณเอง เพื่อการรักษาความปลอดภัยสูงสุด ให้จัดเก็บตารางฐานข้อมูลการเขียนกลับไว้ในอินสแตนซ์ฐานข้อมูลที่ไม่ซ้ำกันไฟล์เทมเพลทการเขียนกลับเป็นไฟล์ในรูปแบบ XML ที่มีเทมเพลทการเขียนกลับอย่างน้อยหนึ่งรายการ
เทมเพลทการเขียนกลับประกอบด้วยอีลิเมนต์ WebMessage
ที่ระบุชื่อของเทมเพลท, พูลการเชื่อมต่อ และคำสั่ง SQL ที่จำเป็นต่อการแทรกและอัปเดตเรคคอร์ดในตารางและคอลัมน์การเขียนกลับที่คุณสร้างขึ้น เมื่อผู้ออกแบบเนื้อหาใช้งานวิวตารางสำหรับการเขียนกลับ จะต้องระบุชื่อของเทมเพลทการเขียนกลับเพื่อใช้ในการแทรกและอัปเดตเรคคอร์ดต่างๆ ในวิวตาราง
เทมเพลทการเขียนกลับต้องตรงตามข้อกำหนดต่อไปนี้
WebMessage
: คุณต้องระบุชื่อสำหรับเทมเพลทการเขียนกลับโดยใช้แอททริบิว name
ในอีลิเมนต์ WebMessage
เพื่อให้การเขียนกลับทำงานอย่างถูกต้อง เมื่อมีการใช้งานวิวตารางสำหรับการเขียนกลับ ผู้ออกแบบเนื้อหาจะต้องระบุชื่อของเทมเพลทการเขียนกลับที่จะใช้ในการแทรกและอัปเดตเรคคอร์ดต่างๆ ในวิว
ตัวอย่างนี้แสดงเทมเพลทการเขียนกลับที่ชื่อ SetQuotaUseID
<WebMessage name="SetQuotaUseID">
connectionPool
: เพื่อให้ตรงตามข้อกำหนดการรักษาความปลอดภัย คุณต้องระบุพูลการเชื่อมต่อพร้อมด้วยคำสั่ง SQL เพื่อแทรกและอัปเดตเรคคอร์ด คำสั่ง SQL เหล่านี้อ้างอิงค่าต่างๆ ที่ส่งผ่านในสคีมาการเขียนกลับเพื่อสร้างคำสั่ง SQL ในการแก้ไขตารางฐานข้อมูล
VALUES
: ค่าของคอลัมน์สามารถอ้างอิงได้โดย ID คอลัมน์ หรือ ตำแหน่งของคอลัมน์ ขอแนะนำให้ใช้ ID คอลัมน์
ล้อมรับค่าสตริงและวันที่ด้วยเครื่องหมายคำพูดเดี่ยว ไม่ต้องใช้เครื่องหมายคำพูดเดี่ยวกับค่าตัวเลข
ID คอลัมน์ - ID คอลัมน์แต่ละรายการเป็นตัวอักษรและตัวเลข และถูกสร้างแบบสุ่ม คุณสามารถค้นหา ID คอลัมน์ในการกำหนด XML ของการวิเคราะห์ที่มีอยู่ในแท็บ ขั้นสูง ของโปรแกรมแก้ไขการวิเคราะห์ ตัวอย่าง ค่า ID คอลัมน์ต่างๆ เช่น: @{c5f6e60e1d6eb1098}
, @{c3a93e65731210ed1}
, '@{c6b8735ea60ff3011}'
เมื่อคุณใช้ ID คอลัมน์ การเขียนกลับจะมีผลต่อไป แม้ในเวลาที่ลำดับของคอลัมน์เปลี่ยนไป
ตำแหน่งของคอลัมน์ - ตำแหน่งของคอลัมน์เริ่มต้นกำหนดเลขที่ด้วยเลข 1 ตัวอย่าง ค่าตำแหน่งของคอลัมน์ต่างๆ เช่น: @1
, @3
, '@5'
หากลำดับของคอลัมน์เปลี่ยนไป การเขียนกลับจะไม่ทำงานอีกต่อไป และนี่คือเหตุผลว่าทำไมจึงแนะนำให้ใช้ ID คอลัมน์
คุณต้องรวมทั้งอีลิเมนต์ <insert>
และ <update>
ไว้ในเทมเพลท หากคุณไม่ต้องการรวมคำสั่ง SQL ไว้ภายในอีลิเมนต์ คุณต้องแทรกช่องว่างระหว่างแท็กเปิดและปิด ตัวอย่างเช่น คุณต้องป้อนอีลิเมนต์ดังนี้
<insert> </insert>
แทน:
<insert></insert>
หากคุณละเว้นช่องว่าง คุณจะเห็นข้อความแสดงข้อผิดพลาดของการเขียนกลับ เช่น "ระบบไม่สามารถอ่านเทมเพลทการเขียนกลับ 'my_template'"
หากประเภทข้อมูลของพารามิเตอร์ไม่ใช่จำนวนเต็มหรือจำนวนจริง ให้เพิ่มเครื่องหมายคำพูดเดี่ยวล้อมรอบพารามิเตอร์ไว้ ในกรณีที่ฐานข้อมูลไม่ได้คอมมิตโดยอัตโนมัติ ให้เพิ่มโหนด postUpdate
ที่เลือกระบุได้ไว้หลังโหนด insert
และ update
เพื่อบังคับใช้การคอมมิต โดยทั่วไป โหนด postUpdate
จะมีลักษณะตามตัวอย่างนี้
<postUpdate>COMMIT</postUpdate>
ตัวอย่างไฟล์เทมเพลทการเขียนกลับที่ใช้รูปแบบคำสั่ง ID คอลัมน์
ไฟล์เทมเพลทการเขียนกลับที่อ้างอิงค่าตาม ID คอลัมน์ อาจคล้ายกับตัวอย่างนี้
<?xml version="1.0" encoding="utf-8" ?> <WebMessageTables xmlns:sawm="com.siebel.analytics.web/message/v1"> <WebMessageTable lang="en-us" system="WriteBack" table="Messages"> <WebMessage name="SetQuotaUseID"> <XML> <writeBack connectionPool="Supplier"> <insert>INSERT INTO regiontypequota VALUES(@{c5f6e60e1d6eb1098},@{c5d7e483445037d9e},'@{c3a93e65731210ed1}','@{c6b8735ea60ff3011}',@{c0432jkl53eb92cd8})</insert> <update>UPDATE regiontypequota SET Dollars=@{c0432jkl53eb92cd8} WHERE YR=@{c5f6e60e1d6eb1098} AND Quarter=@{c5d7e483445037d9e} AND Region='@{c3a93e65731210ed1}' AND ItemType='@{c6b8735ea60ff3011}'</update> </writeBack> </XML> </WebMessage> </WebMessageTable> </WebMessageTables>
ตัวอย่างไฟล์เทมเพลทการเขียนกลับที่ใช้รูปแบบคำสั่งตำแหน่งของคอลัมน์
ไฟล์เทมเพลทการเขียนกลับที่อ้างอิงค่าตาม ตำแหน่งของคอลัมน์ อาจคล้ายกับตัวอย่างนี้
<?xml version="1.0" encoding="utf-8" ?> <WebMessageTables xmlns:sawm="com.siebel.analytics.web/message/v1"> <WebMessageTable lang="en-us" system="WriteBack" table="Messages"> <WebMessage name="SetQuota"> <XML> <writeBack connectionPool="Supplier"> <insert>INSERT INTO regiontypequota VALUES(@1,@2,'@3','@4',@5)</insert> <update>UPDATE regiontypequota SET Dollars=@5 WHERE YR=@1 AND Quarter=@2 AND Region='@3' AND ItemType='@4'</update> </writeBack> </XML> </WebMessage> </WebMessageTable> </WebMessageTables>