Intégrer Oracle Analytics au service des fonctions pour Oracle Cloud Infrastructure

Intégrez Oracle Analytics au service des fonctions pour Oracle Cloud Infrastructure (OCI) afin de pouvoir utiliser ce service dans des flux pour transformer des données.

À propos de l'utilisation du service des fonctions pour OCI dans Oracle Analytics

Vous pouvez transformer des données dans Oracle Analytics à l'aide des fonctions créées dans OCI. Par exemple, vous pouvez utiliser une fonction de conversion de langue pour convertir un texte anglais en espagnol ou en allemand.

Vous commencez par enregistrer des fonctions OCI dans Oracle Analytics, puis tout utilisateur Oracle Analytics doté du privilège Administrateur de service BI ou Auteur de contenu DV peut les utiliser dans des flux de données.

À propos de la configuration du service des fonctions pour OCI à utiliser dans Oracle Analytics

Créez des fonctions dans la console OCI et utilisez-les pour transformer des données dans les flux de données Oracle Analytics.

À propos de l'enregistrement du service des fonctions pour OCI dans Oracle Analytics

Lors de l'enregistrement d'une fonction OCI dans Oracle Analytics, si celle-ci apparaît grisée dans la boîte de dialogue Sélectionner une fonction, vérifiez qu'elle est configurée avec la balise oac-compatible et appelée avec la valeur funcMode appropriée.
Description de GUID-6FE05B2C-5352-4953-998F-D967B6BA1891-default.png ci-après
.png

À propos de la configuration du service des fonctions pour OCI à utiliser dans Oracle Analytics

Les fonctions OCI que vous voulez utiliser dans Oracle Analytics doivent avoir une balise oac-compatible et leur code doit inclure la variable funcMode. Configurez ces paramètres dans la console OCI :

  • oac-compatible - Ajoutez à la fonction une balise à structure libre nommée oac-compatible et réglez la valeur à true.Description de GUID-6DDD2A98-7F8D-45D7-9110-9643C2128A84-default.png ci-après
    .png
  • funcMode - Ajoutez la variable funcMode dans le code de la fonction. Oracle Analytics envoie une demande pour enregistrer une fonction OCI avec funcMode=describeFunction et une demande pour appeler une fonction OCI avec funcMode=executeFunction. La fonction de traitement dans func.py doit fonctionner en mode describeFunction ou executeFunction. Cela dépend de la valeur de la variable d'entrée funcMode définie dans la demande, comme illustré ci-dessous.

    Description de GUID-0C335709-DEDC-4655-8A29-F544608DA8B3-default.png ci-après
    .png

    Voici le format de demande et de réponse du service des fonctions pour OCI pour un exemple de comptage de mots dans Python.

    funcMode = describeFunction

    { "funcMode": "describeFunction"}

    Lorsque la variable funcMode de la demande a la valeur 'describeFunction', la fonction doit retourner la définition de la fonction avec status (returnCode et errorMessage), outputs (name, dataType, pour la colonne de sortie), parameters (name, description, type, etc., pour le paramètre d'entrée), bucketName, etc. afin de constituer un objet JSON au format suivant (exemple de comptage de mots) :

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

    Ajoutez le code suivant dans func.py pour retourner funcDefinition lorsque la variable funcMode dans la demande a la valeur '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 - Lorsque la variable funcMode a la valeur 'executeFunction', la logique de la fonction doit être exécutée et la réponse doit être renvoyée à Oracle Analytics avec la sortie. Lorsque la fonction enregistrée est appelée à partir d'un flux de données dans Oracle Analytics, l'objet de la demande est dans le format suivant, avec le nom de la colonne dans args, input (bucketName, fileName, fileExtension, fileName, method & rowID) et 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"
        }
    }

À propos de la création de fonctions dans OCI

Vous pouvez créer des fonctions à l'aide de la console OCI, de la ligne de commande (interface de ligne de commande Fn Project) ou de l'API. Par exemple, dans la console OCI, cliquez sur Services de développement, puis sur Fonctions et suivez les instructions affichées pour créer des applications et une ou plusieurs fonctions. Pour plus de détails, voir Documentation sur la création de fonctions dans OCI. Si vous créez des fonctions pour la première fois, suivez les étapes de l'exemple de bout en bout Création, déploiement et appel d'une fonction Helloworld. Toutes les fonctions que vous souhaitez utiliser dans Oracle Analytics doivent inclure la balise à structure libre oac-compatible=true (voir la section À propos de la configuration du service des fonctions pour OCI à utiliser dans Oracle Analytics ci-dessus).

Conseils sur la création de fonctions OCI dans la console OCI

  • Activer les journaux - Par défaut, les journaux sont désactivés pour les fonctions. Pour activer les journaux pour les fonctions, dans la page Applications, cliquez sur Journaux, et activez le journal indiqué dans Nom du journal. Sous Ressources, vous pouvez maintenant sélectionner Explorer le journal et forer dans les entrées du journal pour déboguer et diagnostiquer les problèmes liés à la fonction.
  • Inclure les dépendances - Ajoutez les paquetages dépendants dans le fichier requirements.txt pour la fonction.
  • Suivre les règles d'indentation- Suivez les règles d'indentation Python lors du codage des fonctions Python.
  • Utiliser les erreurs de réponse de la fonction - Utilisez les détails des erreurs répertoriés dans la page Flux de données pour diagnostiquer les problèmes.
  • Tester d'abord les fonctions localement - Avant de créer une fonction dans OCI, testez-la localement dans votre environnement de développement pour vous assurer que sa syntaxe et sa logique sont correctes.
  • Tester les fonctions dans OCI - Avant d'intégrer des fonctions à Oracle Analytics, assurez-vous que vous pouvez les déployer et les appeler en tant que fonctions autonomes dans OCI.
  • Augmenter la temporisation - Par défaut, la temporisation des fonctions est de 30 secondes. Si nécessaire, augmentez le paramètre de temporisation (par exemple, modifiez-le à 300 secondes) dans la page Modifier la fonction de la console OCI.
  • Augmenter la mémoire - Par défaut, le mémoire des fonctions est limitée à 1 024 Mo. Si nécessaire, augmentez la limite de la mémoire dans la page Modifier la fonction de la console OCI.
  • Optimiser l'espace - Supprimez les fichiers que vous n'utilisez plus juste après les avoir utilisés.
  • Attention à la latence de réseau - Gardez à l'esprit que la latence de réseau peut ralentir légèrement le traitement global.

Politiques requises pour intégrer le service des fonctions pour OCI à Oracle Analytics

Pour intégrer Oracle Analytics au service des fonctions pour OCI, vérifiez que vous disposez des politiques de sécurité requises.

L'utilisateur OCI que vous spécifiez pour la connexion entre Oracle Analytics Cloud et votre location OCI doit disposer des autorisations de lecture, d'écriture et de suppression sur le compartiment contenant les ressources OCI que vous voulez utiliser. L'utilisateur OCI doit appartenir à un groupe d'utilisateurs disposant des politiques de sécurité OCI minimales suivantes . Lorsque vous vous connectez à une location OCI depuis Oracle Analytics, vous pouvez utiliser une clé d'API ou un principal de ressource OCI.

Note :

Concernant le principal de ressource, pour inclure toutes les instances Analytics dans un compartiment, spécifiez : {request.principal.type='analyticsinstance', request.principal.compartment.id='<compartmentA_ocid>'} au lieu de {request.principal.id='<analytics_instance_ocid>'}.
Politiques de clé d'API Politiques de principal de ressource
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>'}
Politique de groupe dynamique Description
Allow dynamic-group <dynamic_group> to manage objects in compartment <compartment_name> where target.bucket.name='<staging_bucket_name>' Fournit l'accès au seau intermédiaire pour le groupe dynamique.

Exemple de règle de correspondance : <dynamic_group>.{resource.type = 'fnfunc', resource.compartment.id = '<compartment_ocid>'}, <compartment_ocid> étant l'ID Oracle Cloud du compartiment contenant les fonctions.

Flux de travail type pour la transformation de données à l'aide du service des fonctions pour OCI

Suivez les tâches de haut niveau ci-dessous dans l'ordre indiqué pour transformer des données dans Oracle Analytics à l'aide des fonctions OCI.

Tâche Description Informations supplémentaires

Créer des fonctions dans OCI (requiert les privilèges de développeur de fonctions)

Dans la location OCI, créez des fonctions et assurez-vous qu'elles respectent les conditions requises spécifiées pour l'utilisation avec Oracle Analytics.

À propos de la configuration du service des fonctions pour OCI à utiliser dans Oracle Analytics

Affecter des politiques OCI Assurez-vous que vous disposez des politiques OCI requises pour vous connecter à l'aide d'une clé d'API ou d'un principal de ressource. Politiques requises pour intégrer le service des fonctions pour OCI à Oracle Analytics
Connecter Oracle Analytics à la location OCI (requiert les privilèges d'administrateur ou d'auteur de contenu DV) Dans Oracle Analytics, créez une connexion à votre location OCI.

Créer une connexion à votre location Oracle Cloud Infrastructure

Enregistrer des fonctions OCI dans Oracle Analytics (requiert les privilèges d'administrateur ou d'auteur de contenu DV) Dans Oracle Analytics, enregistrez vos fonctions OCI afin de pouvoir les appeler à partir des flux de données.

Enregistrer le service des fonctions pour OCI dans Oracle Analytics

Transformer des données à l'aide des fonctions OCI (requiert les privilèges d'administrateur ou d'auteur de contenu DV) Créez un flux de données et utilisez l'étape Appliquer le script personnalisé pour appeler une fonction OCI.

Transformer des données à l'aide du service des fonctions pour OCI

Enregistrer le service des fonctions pour OCI dans Oracle Analytics

Enregistrez des fonctions OCI dans Oracle Analytics afin de pouvoir les utiliser dans des flux de données pour transformer des données. Par exemple, vous pouvez enregistrer une fonction de conversion de langue pour permettre aux analystes de données de convertir un texte anglais en espagnol ou en allemand.

  1. Dans la page d'accueil d'Oracle Analytics, cliquez sur Menu Page, sur Enregistrer le modèle/la fonction, puis sur Fonctions OCI.
  2. Dans la boîte de dialogue Enregistrer une fonction personnalisée, sélectionnez une connexion à la location OCI dans laquelle se trouvent les fonctions.
  3. Dans la boîte de dialogue Sélectionner une application, sélectionnez l'application qui contient vos fonctions OCI.
    En cas de doute, communiquez avec la personne qui a créé les fonctions dans OCI.
  4. Dans la boîte de dialogue Sélectionner une fonction, sélectionnez une fonction, puis cliquez sur Enregistrer.
    Si la fonction que vous souhaitez utiliser est grisée, communiquez avec l'administrateur afin de vérifier qu'elle est configurée pour Oracle Analytics. Voir À propos de la configuration du service des fonctions pour OCI à utiliser dans Oracle Analytics.
Vous pouvez utiliser des fonctions OCI enregistrées dans des flux de données pour transformer des données. Pour voir les fonctions enregistrées, allez dans l'onglet Scripts de la page Apprentissage automatique (dans la page d'accueil, cliquez sur Navigateur Icône du navigateur utilisée pour afficher le navigateur, sur Apprentissage automatique, puis sur Scripts).