ใช้งานฟังก์ชันของ Oracle Analytics ร่วมกับ Oracle Cloud Infrastructure (OCI) เพื่อให้คุณสามารถใช้ฟังก์ชันต่างๆ ในโฟลว์ข้อมูลเพื่อแปลงรูปแบบข้อมูลได้
คุณสามารถแปลงรูปแบบข้อมูลใน Oracle Analytics โดยใช้ฟังก์ชันที่สร้างใน OCI ตัวอย่างเช่น คุณอาจใช้ฟังก์ชันการแปลงภาษาเพื่อแปลงค่าข้อความภาษาอังกฤษเป็นภาษาสเปนหรือเยอรมัน
คุณต้องรีจิสเตอร์ฟังก์ชัน OCI ใน Oracle Analytics ก่อน จากนั้นผู้ใช้ Oracle Analytics ที่มีสิทธิ์ผู้ดูแลระบบ BI Service หรือผู้สร้างเนื้อหา DV จะสามารถใช้โฟลว์ฟังก์ชันในโฟลว์ข้อมูล
สร้างฟังก์ชันในคอนโซล OCI เพื่อให้คุณสามารถใช้ฟังก์ชันเพื่อแปลงรูปแบบข้อมูลในโฟลว์ข้อมูล Oracle Analytics
ข้อมูลเกี่ยวกับการรีจิสเตอร์ฟังก์ชัน OCI ใน Oracle Analytics
เมื่อคุณรีจิสเตอร์ฟังก์ชัน OCI ใน Oracle Analytics หากไดอะล็อก เลือกฟังก์ชัน เป็นสีเทา ให้ตรวจสอบว่ามีการคอนฟิเกอร์ด้วยแท็ก oac-compatible
และมีการเรียกใช้ด้วยค่า funcMode
ที่ถูกต้อง
.png
ข้อมูลเกี่ยวกับการคอนฟิเกอร์ฟังก์ชัน OCI ที่จะใช้ใน Oracle Analytics
ฟังก์ชัน OCI ที่คุณต้องการใช้ใน Oracle Analytics ต้องมีแท็ก oac-compatible
และรหัสฟังก์ชันต้องประกอบด้วยตัวแปร funcMode
คอนฟิเกอร์การตั้งค่าเหล่านี้ในคอนโซล OCI:
oac-compatible
และตั้งค่าเป็น true
funcMode
ในรหัสฟังก์ชันของคุณ Oracle Analytics
ส่งคำขอเพื่อรีจิสเตอร์ฟังก์ชัน OCI ด้วย funcMode=describeFunction
และคำเรียกใช้ฟังก์ชัน OCI ด้วย funcMode=executeFunction
ฟังก์ชันของแฮนด์เลอร์ใน func.py ต้องทำงานในโหมด describeFunction หรือโหมด executeFunction การดำเนินการนี้สามารถทำได้ตามค่าตัวแปรอินพุต funcMode
จากคำขอที่แสดงทางด้านล่าง
นี่คือรูปแบบคำขอและการตอบกลับของฟังก์ชัน OCI สำหรับตัวอย่างจำนวนคำใน Python
funcMode = describeFunction
{ "funcMode": "describeFunction"}
เมื่อ funcMode ในคำขอคือ 'describeFunction' ฟังก์ชันต้องแสดงการกำหนดฟังก์ชันโดยมีสถานะ (returnCode & errorMessage), เอาต์พุต (ชื่อ, dataType ของคอลัมน์เอาต์พุต), พารามิเตอร์ (ชื่อ, คำอธิบาย, ประเภทของพารามิเตอร์อินพุต เป็นต้น), bucketName เป็นออบเจกต์ JSON ในรูปแบบต่อไปนี้ (ตัวอย่างจำนวนคำ) ได้แก่
funcDefinition = { "status": { "returnCode": 0, "errorMessage": "" }, "funcDescription": { "outputs": [ {"name": "word_count", "dataType": "integer"} ], "parameters": [ {"name": "textColumn", "displayName": "Text Column", "description": "Choose column to count words", "required": True, "value": {"type": "column"}} ], "bucketName": "bucket-OCI-FAAS", "isOutputJoinableWithInput": True } }
เพิ่มรหัสต่อไปนี้ใน func.py เพื่อแสดง funcDefinition เมื่อ funcMode ในคำขอคือ 'describeFunction'
def handler(ctx, data: io.BytesIO = None): response_data = "" try: body = json.loads(data.getvalue()) funcMode = body.get("funcMode") if funcMode == 'describeFunction': response_data = json.dumps(funcDefinition) except (Exception, ValueError) as ex: response_data = json.dumps( {"error": "{0}".format(str(ex))}) return response.Response( ctx, response_data, headers={"Content-Type": "application/json"} )
funcMode = executeFunction - เมื่อ funcMode คือ 'executeFunction' ควรมีการรันตรรกะของฟังก์ชันตามจริง และมีการส่งการตอบกลับกลับไปยัง Oracle Analytics พร้อมเอาต์พุต เมื่อมีการเรียกใช้ฟังก์ชันที่รีจิสเตอร์จากโฟลว์ข้อมูลใน Oracle Analytics ออบเจกต์คำขอจะอยู่ในรูปแบบต่อไปนี้โดยมีชื่อคอลัมน์เป็น args, input(bucketName, fileName, fileExtension, fileName, method & rowID) และ output(bucketName, fileName & fileExtension)
{ "args": { "textColumn": "REVIEW" }, "funcMode": "executeFunction", "input": { "bucketName": "bucket-OCI-FAAS", "fileExtension": ".csv", "fileName": "oac-fn-e99cd4fddb3844be89c7af6ea4bbeb76-input", "method": "csv", "rowID": "row_id" }, "output": { "bucketName": "bucket-OCI-FAAS", "fileExtension": ".csv", "fileName": "oac-fn-e99cd4fddb3844be89c7af6ea4bbeb76-output" } }
ข้อมูลเกี่ยวกับการสร้างฟังก์ชันต่างๆ ใน OCI
คุณสามารถสร้างฟังก์ชันต่างๆ โดยใช้คอนโซล OCI, บรรทัดคำสั่ง (Fn Project CLI), หรือ API ตัวอย่างเช่น ในคอนโซล OCI คลิก บริการของผู้พัฒนา แล้วคลิก ฟังก์ชัน และทำตามคำแนะนำบนหน้าจอเพื่อสร้างแอปพลิเคชันและฟังก์ชันอย่างน้อยหนึ่งรายการ โปรดดูรายละเอียดที่ เอกสารการสร้างฟังก์ชันต่างๆ ใน OCI หากคุณกำลังสร้างฟังก์ชันเป็นครั้งแรก ให้ทำตามขั้นตอนต่างๆ ในตัวอย่างตั้งแต่ต้นจนจบ การสร้าง, การใช้งาน และการเรียกใช้ฟังก์ชัน Helloworld ฟังก์ชันใดๆ ที่คุณต้องการใช้ใน Oracle Analytics ต้องประกอบด้วยแท็กที่มีรูปแบบอิสระ oac-compatible=true
(โปรดดู ข้อมูลเกี่ยวกับการคอนฟิเกอร์ฟังก์ชัน OCI ที่จะใช้ใน Oracle Analytics ทางด้านบน)
คำแนะนำเกี่ยวกับการสร้างฟังก์ชันต่างๆ ในคอนโซล OCI
ในการใช้งาน Oracle Analytics ร่วมกับฟังก์ชัน OCI ตรวจสอบให้แน่ใจว่าคุณมีข้อกำหนดการรักษาความปลอดภัยที่จำเป็น
ผู้ใช้ OCI ที่คุณระบุในการเชื่อมต่อระหว่าง Oracle Analytics Cloud กับรายการภายใน OCI ของคุณต้องมีสิทธิ์อ่าน เขียน และลบในคอมพาร์ทเมนต์ที่มีทรัพยากร OCI ที่คุณต้องการใช้ ตรวจสอบว่าผู้ใช้ OCI เป็นสมาชิกของกลุ่มผู้ใช้ที่มีข้อกำหนดการรักษาความปลอดภัย OCI ขั้นต่ำต่อไปนี้ เมื่อคุณเชื่อมต่อกับรายการภายใน OCI จาก Oracle Analytics คุณสามารถใช้คีย์ OCI API หรือสิ่งที่ต้องตรวจสอบสิทธิ์ของทรัพยากร
หมายเหตุ:
สำหรับสิ่งที่ต้องตรวจสอบสิทธิ์ของทรัพยากร ในการรวมอินสแตนซ์ Analytics ทั้งหมดภายใต้คอมพาร์ทเมนต์ ให้ระบุ{request.principal.type='analyticsinstance', request.principal.compartment.id='<compartmentA_ocid>'}
แทน {request.principal.id='<analytics_instance_ocid>'}
ข้อกำหนดคีย์ API | ข้อกำหนดสิ่งที่ต้องตรวจสอบสิทธิ์ของทรัพยากร |
---|---|
Allow group <group_name> to use functions-family in compartment <compartment_name> |
Allow any-user to use functions-family in compartment <compartment_name> where all {request.principal.id='<analytics_instance_ocid>'} |
Allow group <group_name> to read buckets in compartment <compartment_name> |
Allow any-user to read buckets in compartment <compartment_name> where all {request.principal.id='<analytics_instance_ocid>'} |
Allow group <group_name> to manage objects in compartment <compartment_name> where target.bucket.name='<staging_bucket_name>' |
Allow any-user to manage objects in compartment <compartment_name> where all {request.principal.id='<analytics_instance_ocid>', target.bucket.name='<staging_bucket_name>'} |
Allow group <group_name> to read objectstorage-namespaces in tenancy |
Allow any-user to read objectstorage-namespaces in tenancy where all {request.principal.id='<analytics_instance_ocid>'} |
ข้อกำหนดของกลุ่มแบบไดนามิค | คำอธิบาย |
---|---|
Allow dynamic-group <dynamic_group> to manage objects in compartment <compartment_name> where target.bucket.name='<staging_bucket_name>' |
ให้สิทธิ์เข้าใช้บัคเก็ตชั่วคราวสำหรับกลุ่มแบบไดนามิค |
ตัวอย่างกฎที่ตรงกัน: <dynamic_group>.{resource.type = 'fnfunc', resource.compartment.id = '<compartment_ocid>'}
, where <compartment_ocid>
คือ Oracle Cloud ID ของคอมพาร์ทเมนต์ที่มีฟังก์ชัน
ทำตามงานระดับสูงต่อไปนี้ตามลำดับที่แสดงไว้ทางด้านล่างเพื่อแปลงรูปแบบข้อมูลใน Oracle Analytics โดยใช้ฟังก์ชัน OCI
งาน | คำอธิบาย | ข้อมูลเพิ่มเติม |
---|---|---|
สร้างฟังก์ชันใน OCI (ต้องมีสิทธิ์ของผู้พัฒนาฟังก์ชัน) |
ในรายการภายในของ OCI ของคุณ ให้สร้างฟังก์ชันของคุณ แล้วตรวจสอบให้แน่ใจว่าฟังก์ชันเป็นไปตามสิ่งที่ต้องทำก่อนที่ระบุไว้สำหรับการใช้งานกับ Oracle Analytics |
เกี่ยวกับการคอนฟิเกอร์ฟังก์ชัน OCI ที่จะใช้ใน Oracle Analytics |
ระบุข้อกำหนด OCI | ตรวจสอบให้แน่ใจว่าคุณมีข้อกำหนด OCI ที่จำเป็นสำหรับการเชื่อมต่อโดยใช้คีย์ API หรือสิ่งที่ต้องตรวจสอบสิทธิ์ของทรัพยากร | ข้อกำหนดที่จำเป็นในการใช้งานฟังก์ชัน OCI ร่วมกับ Oracle Analytics |
เชื่อมต่อ Oracle Analytics กับรายการภายในของ OCI ของคุณ (ต้องมีสิทธิ์ของผู้ดูแลระบบหรือผู้สร้าง DV) | ใน Oracle Analytics ให้สร้างการเชื่อมต่อกับรายการภายในของ OCI ของคุณ | |
รีจิสเตอร์ฟังก์ชัน OCI ใน Oracle Analytics (ต้องมีสิทธิ์ของผู้ดูแลระบบหรือผู้สร้าง DV) | ใน Oracle Analytics ให้รีจิสเตอร์ฟังก์ชัน OCI ของคุณเพื่อให้คุณสามารถเรียกฟังก์ชันจากโฟลว์ข้อมูล | |
แปลงรูปแบบข้อมูลของคุณโดยใช้ฟังก์ชัน OCI (ต้องมีสิทธิ์ของผู้ดูแลระบบหรือผู้สร้าง DV) | สร้างโฟลว์ข้อมูล แล้วใช้ขั้นตอน ใช้สคริปต์ที่กำหนดเอง เพื่อเรียกใช้ฟังก์ชัน OCI |
รีจิสเตอร์ฟังก์ชันของ OCI ใน Oracle Analytics เพื่อให้คุณสามารถใช้ฟังก์ชันต่างๆ ในโฟลว์ข้อมูลเพื่อแปลงรูปแบบข้อมูล ตัวอย่างเช่น คุณอาจรีจิสเตอร์ฟังก์ชันการแปลงภาษาเพื่อให้ผู้วิเคราะห์ข้อมูลสามารถแปลงค่าข้อความภาษาอังกฤษเป็นภาษาสเปนหรือเยอรมัน