Integrieren Sie Oracle Cloud Infrastructure-(OCI-)Funktionen mit Oracle Analytics, sodass Sie damit Daten in Datenflüssen transformieren können.
Sie können Daten in Oracle Analytics mit in OCI erstellten Funktionen transformieren. Sie könnten englischen Text beispielsweise mit einer Sprachkonvertierungsfunktion in spanischen oder deutschen Text konvertieren.
Zunächst müssen Sie OCI-Funktionen in Oracle Analytics registrieren. Dann kann jeder Oracle Analytics-Benutzer mit Berechtigungen eines BI Service Administrators oder DV Content Authors diese in Datenflüssen verwenden.
Erstellen Sie Funktionen in der OCI-Konsole, um damit Daten in Oracle Analytics-Datenflüssen zu transformieren.
OCI-Funktionen in Oracle Analytics registrieren
Wenn Sie eine OCI-Funktion in Oracle Analytics registrieren möchten und diese im Dialogfeld "Funktion auswählen" ausgegraut ist, stellen Sie sicher, dass sie mit dem Tag oac-compatible
konfiguriert ist und mit dem richtigen funcMode
-Wert aufgerufen wird.
.png
OCI-Funktionen für die Verwendung in Oracle Analytics konfigurieren
Um eine OCI-Funktion in Oracle Analytics verwenden zu können, muss diese das Tag oac-compatible
und die Variable funcMode
im Funktionscode aufweisen. Konfigurieren Sie diese Einstellungen in der OCI-Konsole:
oac-compatible
zur Funktion hinzu, und setzen Sie den Wert auf true
.funcMode
in den Funktionscode auf. Oracle Analytics
sendet eine Anforderung zur Registrierung einer OCI-Funktion mit funcMode=describeFunction
und eine Anforderung zum Aufrufen einer OCI-Funktion mit funcMode=executeFunction
. Die Handler-Funktion in func.py muss im describeFunction-Modus oder executeFunction-Modus ausgeführt werden. Dazu kann der Wert der Eingabevariable funcMode
aus der Anforderung wie unten gezeigt herangezogen werden.
Hier sehen Sie das Anforderungs- und Antwortformat von OCI Functions für ein Wortzählungsbeispiel in Python.
funcMode = describeFunction
{ "funcMode": "describeFunction"}
Wenn funcMode in der Anforderung "describeFunction" lautet, sollte die Funktion die Funktionsdefinition mit "status" (returnCode und errorMessage), "outputs" (Name, Datentyp der Ausgabespalte), "parameters" (Name, Beschreibung, Typ des Eingabeparameters usw.), "bucketName" usw. als JSON-Objekt im folgenden Format zurückgeben (Beispiel für Wortzählung):
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 } }
Fügen Sie den folgenden Code in func.py hinzu, um funcDefinition zurückzugeben, wenn funcMode in der Anforderung "describeFunction" lautet.
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: Wenn funcMode "executeFunction" lautet, sollte die eigentliche Funktionslogik ausgeführt und die Antwort mit der Ausgabe zurück an Oracle Analytics gesendet werden. Wenn die registrierte Funktion aus einem Datenfluss in Oracle Analytics aufgerufen wird, hat das Anforderungsobjekt das folgende Format mit dem Spaltennamen in "args": input(bucketName, fileName, fileExtension, fileName, method und rowID) und output(bucketName, fileName und 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" } }
Funktionen in OCI erstellen
Sie können Funktionen mit der OCI-Konsole, Befehlszeile (Fn-Projekt-CLI) oder API erstellen. Beispiel: Klicken Sie in der OCI-Konsole auf Entwicklerservices und dann auf Funktionen. Befolgen Sie anschließend die Anweisungen auf dem Bildschirm, um Anwendungen und Funktionen zu erstellen. Details finden Sie unter Dokumentation zum Erstellen von Funktionen in OCI. Wenn Sie zum ersten Mal eine Funktion erstellen, führen Sie die Schritte aus dem End-to-End-Beispiel Helloworld-Funktion erstellen, bereitstellen und aufrufen aus. Um eine Funktion in Oracle Analytics verwenden zu können, muss diese das Freiformtag oac-compatible=true
aufweisen (siehe OCI-Funktionen für die Verwendung in Oracle Analytics konfigurieren weiter oben).
Tipps zum Erstellen von Funktionen in der OCI-Konsole
Richten Sie die erforderlichen Sicherheits-Policys ein, bevor Sie Oracle Analytics mit OCI Functions integrieren.
Der OCI-Benutzer, den Sie in der Verbindung zwischen Oracle Analytics Cloud und Ihrem OCI-Mandanten angeben, muss über Lese-, Schreib- und Löschberechtigungen in dem Compartment verfügen, das die gewünschten OCI-Ressourcen enthält. Stellen Sie sicher, dass der OCI-Benutzer zu einer Benutzergruppe mit den folgenden minimalen OCI-Sicherheits-Policys gehört. Wenn Sie eine Verbindung zu einem OCI-Mandanten aus Oracle Analytics herstellen, können Sie entweder einen OCI-API-Schlüssel oder einen Resource Principal verwenden.
Hinweis: Um bei Verwendung eines Resource Principals alle Analytics-Instanzen unter einem Compartment aufzunehmen, geben Sie {request.principal.type='analyticsinstance', request.principal.compartment.id='<compartmentA_ocid>'}
anstelle von {request.principal.id='<analytics_instance_ocid>'}
an.
Tabelle 32-1 Erforderliche Sicherheits-Policys für die OCI Functions-Integration
API-Schlüssel-Policys | Resource Principal Policys |
---|---|
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>'} |
Tabelle 32-2 OCI Functions - Policys für dynamische Gruppen
Policy | Beschreibung |
---|---|
Allow dynamic-group <dynamic_group> to manage objects in compartment <compartment_name> where target.bucket.name='<staging_bucket_name>' |
Bietet Zugriff auf den Staging Bucket für die dynamische Gruppe. |
Beispielvergleichsregel für <dynamic_group>.{resource.type = 'fnfunc', resource.compartment.id = '<compartment_ocid>'}
Hinweis: <compartment_id>
ist die OCID des Compartments mit den Funktionen.
Führen Sie diese allgemeinen Aufgaben in der unten angegebenen Reihenfolge aus, um Daten in Oracle Analytics mit OCI-Funktionen zu transformieren.
Aufgabe | Beschreibung | Weitere Informationen |
---|---|---|
Funktionen in OCI erstellen (erfordert Berechtigungen als Funktionsentwickler) |
Erstellen Sie die Funktionen im OCI-Mandanten unter Einhaltung der für die Verwendung mit Oracle Analytics angegebenen Voraussetzungen. |
OCI-Funktionen für die Verwendung in Oracle Analytics konfigurieren |
OCI-Policys zuweisen | Stellen Sie sicher, dass Sie über die erforderlichen OCI-Policys für die Verbindung über einen API-Schlüssel oder Resource Principal verfügen. | Erforderliche Policys für die Integration von OCI Functions mit Oracle Analytics |
Oracle Analytics mit Ihrem OCI-Mandanten verbinden (erfordert Berechtigungen als Administrator oder DV-Autor) | Erstellen Sie in Oracle Analytics eine Verbindung zu Ihrem OCI-Mandanten. | |
OCI-Funktionen in Oracle Analytics registrieren (erfordert Berechtigungen als Administrator oder DV-Autor) | Registrieren Sie die OCI-Funktionen in Oracle Analytics, damit Sie sie aus Datenflüssen aufrufen können. | |
Daten mit den OCI-Funktionen transformieren (erfordert Berechtigungen als Administrator oder DV-Autor) | Erstellen Sie einen Datenfluss, und rufen Sie über den Schritt Benutzerdefiniertes Skript anwenden eine OCI-Funktion auf. |
Registrieren Sie OCI-Funktionen in Oracle Analytics, sodass Sie damit Daten in Datenflüssen transformieren können. Sie könnten beispielsweise eine Sprachkonvertierungsfunktion registrieren, damit Datenanalysten englischen Text in spanischen oder deutschen Text konvertieren können.