Oracle Analytics mit OCI Functions integrieren

Integrieren Sie Oracle Cloud Infrastructure-(OCI-)Funktionen mit Oracle Analytics, sodass Sie damit Daten in Datenflüssen transformieren können.

OCI-Funktionen in Oracle Analytics verwenden

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.

OCI-Funktionen für die Verwendung in Oracle Analytics konfigurieren

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.
Beschreibung von GUID-6FE05B2C-5352-4953-998F-D967B6BA1891-default.png folgt
.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: Fügen Sie ein Freiformtag mit dem Namen oac-compatible zur Funktion hinzu, und setzen Sie den Wert auf true.Beschreibung von GUID-6DDD2A98-7F8D-45D7-9110-9643C2128A84-default.png folgt
    .png
  • funcMode: Nehmen Sie die Variable 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.

    Beschreibung von GUID-0C335709-DEDC-4655-8A29-F544608DA8B3-default.png folgt
    .png

    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

  • Logs aktivieren: Standardmäßig sind Logs für Funktionen deaktiviert. Um Logs für Funktionen zu aktivieren, klicken Sie auf der Seite Anwendungen auf Logs, und aktivieren Sie das für Logname angegebene Log. Jetzt können Sie unter Ressourcen die Option Log explorieren auswählen und Drilling in Logeinträge durchführen, um Funktionsprobleme zu debuggen und zu diagnostizieren.
  • Abhängigkeiten einbeziehen: Schließen Sie abhängige Packages in die Datei requirements.txt für die Funktion ein.
  • Einzugsregeln befolgen: Befolgen Sie die Python-Einzugsregeln beim Codieren von Python-Funktionen.
  • Fehler der Funktionsantwort verwenden: Verwenden Sie die auf der Datenflussseite aufgeführten Fehlerdetails, um Probleme zu diagnostizieren.
  • Funktionen zuerst lokal testen: Bevor Sie eine Funktion in OCI erstellen, testen Sie die Funktion lokal in der Entwicklungsumgebung, um sicherzustellen, dass ihre Syntax und Logik korrekt sind.
  • Funktionen in OCI testen: Stellen Sie vor der Integration von Funktionen in Oracle Analytics sicher, dass Sie diese erfolgreich als Standalone-Funktionen in OCI bereitstellen und aufrufen können.
  • Timeout erhöhen: Standardmäßig ist für Funktionen ein Timeout von 30 Sekunden festgelegt. Erhöhen Sie gegebenenfalls die Timeouteinstellung (ändern Sie sie zum Beispiel in 300 Sekunden) in der OCI-Konsole auf der Seite "Funktion bearbeiten".
  • Speicher erhöhen: Standardmäßig ist für Funktionen ein Speichergrenzwert von 1024 MB festgelegt. Erhöhen Sie gegebenenfalls den Speichergrenzwert in der OCI-Konsole auf der Seite "Funktion bearbeiten".
  • Speicherplatz optimieren: Löschen Sie nicht genutzte Dateien sofort nach ihrer Verwendung.
  • Netzwerklatenz beachten: Denken Sie daran, dass die Netzwerklatenz zu einer kurzen Verzögerung bei der Gesamtverarbeitung führen kann.

Erforderliche Policys für die Integration von OCI Functions mit Oracle Analytics

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.

Typischer Workflow zum Transformieren von Daten mit OCI-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.

Verbindung zum OCI-Mandanten erstellen

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.

OCI-Funktionen in Oracle Analytics registrieren

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.

Daten mit OCI-Funktionen transformieren

OCI-Funktionen in Oracle Analytics registrieren

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.

  1. Klicken Sie in Oracle Analytics auf der Homepage auf Seitenmenü, Modell/Funktion registrieren, OCI-Funktionen.
  2. Wählen Sie im Dialogfeld "Benutzerdefinierte Funktion registrieren" eine Verbindung zum OCI-Mandanten aus, in dem sich Ihre Funktionen befinden.
  3. Wählen Sie im Dialogfeld "Anwendung auswählen" die Anwendung mit den OCI-Funktionen aus.
    Fragen Sie gegebenenfalls die Person, die die Funktionen in OCI erstellt hat.
  4. Wählen Sie im Dialogfeld "Funktion auswählen" eine Funktion aus, und klicken Sie auf Registrieren.
    Wenn die gewünschte Funktion ausgegraut ist, bitten Sie den Administrator, sie für Oracle Analytics zu konfigurieren. Siehe OCI-Funktionen für die Verwendung in Oracle Analytics konfigurieren.
Sie können registrierte OCI-Funktionen in Datenflüssen verwenden, um Daten zu transformieren. Um zu prüfen, welche Funktionen registriert sind, können Sie registrierte Funktionen auf der Seite "Maschinelles Lernen" auf der Registerkarte "Skripte" anzeigen (klicken Sie auf der Homepage auf Navigator, Maschinelles Lernen, Skripte).