Intégration de Vision à Oracle Analytics Cloud (OAC)

Créez un flux Data Integration qui utilise le kit SDK Vision pour détecter les objets dans les images et projeter ces informations dans une table d'un data warehouse. Ces données de sortie sont ensuite utilisées par Oracle Analytics Cloud pour créer des visualisations et rechercher des modèles.

Voici le flux général du système entre Vision et OAC : Flux entre Vision et OAC, en commençant par la ressource de données d'entrée sous forme de fichier CSV dans Data Integration. Il est traité et transmis en tant que données de sortie dans une table d'objets ADW, qui est ensuite utilisée comme source pour OAC.

Avant de commencer

Pour suivre ce tutoriel, vous devez être en mesure de créer des réseaux VCN, des fonctions et des passerelles d'API, et d'utiliser Data Integration et Vision.

Discutez avec votre administrateur des stratégies requises.

Configuration des stratégies requises

Suivez ces étapes pour configurer les stratégies requises.

  1. Dans le menu de navigation de la console, sélectionnez Identité et sécurité.
  2. Sous Identité, sélectionnez Stratégies.
  3. Sélectionnez Créer une stratégie.
  4. Dans le panneau Créer une stratégie, renseignez les champs Nom et Description.
    Dans Nom, entrez un nom sans espace. Vous ne pouvez utiliser que des caractères alphanumériques, des tirets, des points et des traits de soulignement.

    Dans Description, entrez une description aidant les autres utilisateurs à connaître l'objectif de l'ensemble de stratégies.

  5. Dans Générateur de stratégies, utilisez l'éditeur manuel pour ajouter les instructions suivantes :
    allow group <group-name> to use cloud-shell in tenancy
    allow group <group-name> to inspect all-resources in tenancy
    allow group <group-name> to read instances in tenancy
    allow group <group-name> to read audit-events in tenancy
    allow group <group-name> to manage dis-workspaces in compartment <compartment-name>
    allow group <group-name> to manage dis-work-requests in compartment <compartment-name>
    allow group <group-name> to manage virtual-network-family in compartment <compartment-name>
    allow group <group-name> to manage tag-namespaces in compartment <compartment-name>
    allow service dataintegration to use virtual-network-family in compartment <compartment-name>
    allow group <group-name> to manage object-family in compartment <compartment-name>
    allow group <group-name> to manage functions-family in compartment <compartment-name>
    allow group <group-name> to manage api-gateway-family in compartment <compartment-name>
    allow group <group-name> to inspect instance-family in compartment <compartment-name>
    allow group <group-name> to manage autonomous-database-family in compartment <compartment-name>
    allow group <group-name> to use analytics-instances in compartment <compartment-name>
    allow group <group-name> to manage repos in tenancy
    allow group <group-name> to read objectstorage-namespaces in tenancy
    allow group <group-name> to manage logging-family in compartment <compartment-name>
    allow group <group-name> to read metrics in compartment <compartment-name>
    allow group <group-name> to use apm-domains in compartment <compartment-name>
    allow service faas to use apm-domains in compartment <compartment-name>
    allow group <group-name> to use ai-service-vision-family in compartment <compartment-name>
  6. Sélectionnez Créer.

1. Création d'un réseau cloud virtuel

Créez un VCN qui servira de répertoire de base pour la fonction sans serveur et la passerelle d'API créée plus tard dans le tutoriel.

1.1 Création d'un VCN avec accès Internet

Suivez ces étapes pour créer un VCN avec accès à Internet.

  1. Dans le menu de navigation, sélectionnez Fonctions de réseau.
  2. Sélectionner des réseaux cloud virtuels.
  3. Cliquez sur Démarrer l'assistant VCN.
  4. Sélectionnez Créer un VCN avec la connectivité Internet.
  5. Sélectionnez Démarrer l'assistant VCN.
  6. Entrez le nom du VCN. Evitez de saisir des informations confidentielles.
  7. Sélectionnez Suivant.
  8. Sélectionnez Créer.

1.2 Accès à votre VCN à partir d'Internet

Vous devez ajouter une nouvelle règle entrante avec conservation de statut au sous-réseau régional public afin d'autoriser le trafic sur le port 443.

Terminez 1.1 Création d'un VCN avec un accès Internet avant d'essayer cette tâche.

API Gateway communique sur le port 443, qui n'est pas ouvert par défaut.

  1. Dans le menu de navigation, sélectionnez Fonctions de réseau.
  2. Sélectionner des réseaux cloud virtuels.
  3. Sélectionnez le VCN que vous avez créé dans 1.1 Création d'un VCN avec accès Internet.
  4. Sélectionnez le nom du sous-réseau régional public.
  5. Sous Listes de sécurité, sélectionnez Default Security List.
  6. Sélectionnez Ajouter des règles entrantes.
  7. Mettez à jour les champs suivants avec ces valeurs :
    • Type de source : CIDR
    • CIDR source : 0.0.0.0/0
    • Protocole IP : TCP
    • Plage de ports source : All
    • Plage de ports de destination : : 443
  8. Sélectionnez Ajouter des règles entrantes pour ajouter la nouvelle règle à la liste de sécurité par défaut.

2. Création d'une passerelle d'API

Une passerelle d'API vous permet d'agréger toutes les fonctions que vous avez créées dans un point de terminaison unique qui peut être utilisé par vos utilisateurs.

Terminez 1. Créez un réseau cloud virtuel avant d'essayer cette tâche.

  1. Dans le menu de navigation de la console, sélectionnez Services de développeur.
  2. Sélectionner des passerelles.
  3. Sélectionnez Créer une passerelle.
  4. Entrez le nom de la passerelle. Ne saisissez pas d'informations confidentielles.
  5. Définissez le type de la passerelle sur Public.
  6. Sélectionnez le compartiment dans lequel créer les ressources API Gateway.
  7. Sélectionnez le nom du VCN à utiliser avec la passerelle d'API. Utilisez le nom du VCN que vous avez créé dans la section 1. Création d'un réseau cloud virtuel.
  8. Sélectionnez le nom du sous-réseau régional dans le VCN. Définissez-le sur le sous-réseau public que vous avez modifié.
  9. Sélectionnez Créer une passerelle.

    Lorsque la passerelle d'API est créée, elle apparaît sous la forme Active dans la liste de la page Passerelles.

3. Création d'une fonction d'enrichissement

Suivez ces étapes pour créer une fonction d'enrichissement qui peut être appelée à partir d'Oracle Cloud Infrastructure Data Integration.

Créez une fonction sans serveur qui s'exécute uniquement à la demande. La fonction est conforme au schéma requis pour être utilisé par Data Integration. La fonction sans serveur appelle l'API de Vision via le SDK Python.

3.1 Création d'une application

Pour ajouter une fonction, nous devons d'abord créer une application.

Terminez 2. Création d'une passerelle d'API avant d'essayer cette tâche.

  1. Dans le menu de navigation de la console, sélectionnez Services de développeur.
  2. Sélectionnez Applications.
  3. Sélectionnez Créer une application.

    Vous pouvez considérer une application comme un contexte limité dans lequel plusieurs fonctions peuvent résider.

  4. Entrez un nom. Ne saisissez pas d'informations confidentielles.
  5. Sélectionnez le VCN créé dans la section 1. Création d'un réseau cloud virtuel.
  6. Sélectionner le sous-réseau public du VCN
  7. Sélectionnez Créer.
  8. Une fois l'application créée, ouvrez-la et cliquez sur Introduction.

    Pour pouvoir déployer des fonctions vers le compartiment et le registre de conteneurs appropriés, configurez l'interface de ligne de commande.

  9. Sélectionnez Configuration de Cloud Shell.
  10. Sélectionnez Lancer Cloud Shell.
    Cela démarre une machine virtuelle Linux avec toutes les configurations pour configurer des fonctions.
  11. Suivez les étapes 1 à 7 dans Configuration de l'interface de ligne de commande fn sur Cloud Shell ou consultez la vidéo Création de fonctions sans serveur sur Oracle Cloud.
    Remarque

    Si l'étape 4 n'est pas claire, reportez-vous à Création d'un contexte d'interface de ligne de commande de projet Fn pour la connexion à Oracle Cloud Infrastructure dans la documentation Functions. Vous pouvez sélectionner n'importe quel terme pour OCIR-REPO. Il s'agit d'un préfixe utilisé comme nom du registre de conteneur pour déployer la fonction.

3.2 Création d'une fonction

Procédez comme suit pour créer une fonction dans votre application.

Terminez la section 3.1 Création d'une application avant d'essayer cette tâche.

Le moyen le plus rapide est de faire en sorte que le système génère un modèle Python.

  1. Exécutez la commande suivante dans le shell cloud shell :
    fn init --runtime python object-detection
    cd object-detection
    Il génère trois fichiers :
    • Paramètre
    • requirements.txt
    • func.py
  2. Modifiez chacun des trois fichiers avec le contenu suivant :
Func.yaml

Contenu recommandé pour func.yaml.

schema_version: 20180708
name: object-detection
version: 0.0.1
runtime: python
build_image: fnproject/python:3.8-dev
run_image: fnproject/python:3.8
entrypoint: /python/bin/fdk /function/func.py handler
memory: 256
timeout: 300
Requirements.txt

Contenu recommandé pour requirements.txt.

fdk>=0.1.40
oci
https://objectstorage.us-ashburn-1.oraclecloud.com/n/axhheqi2ofpb/b/vision-oac/o/vision_service_python_client-0.3.9-py2.py3-none-any.whl
pandas
requests
Func.py

Contenu recommandé pour func.py.

import io
import json
import logging
import pandas
import requests
import base64
from io import StringIO
from fdk import response
 
import oci
from vision_service_python_client.ai_service_vision_client import AIServiceVisionClient
from vision_service_python_client.models.analyze_image_details import AnalyzeImageDetails
from vision_service_python_client.models.image_object_detection_feature import ImageObjectDetectionFeature
from vision_service_python_client.models.inline_image_details import InlineImageDetails
 
def handler(ctx, data: io.BytesIO=None):
    signer = oci.auth.signers.get_resource_principals_signer()
    resp = do(signer,data)
    return response.Response(
        ctx, response_data=resp,
        headers={"Content-Type": "application/json"}
    )
 
def vision(dip, txt):
    encoded_string = base64.b64encode(requests.get(txt).content)
 
    image_object_detection_feature = ImageObjectDetectionFeature()
    image_object_detection_feature.max_results = 5
    features = [image_object_detection_feature]
    analyze_image_details = AnalyzeImageDetails()
    inline_image_details = InlineImageDetails()
    inline_image_details.data = encoded_string.decode('utf-8')
    analyze_image_details.image = inline_image_details
    analyze_image_details.features = features
    try:
        le = dip.analyze_image(analyze_image_details=analyze_image_details)
    except Exception as e:
        print(e)
        return ""
    if le.data.image_objects is not None:
      return json.loads(le.data.image_objects.__repr__())
    return ""
 
 
def do(signer, data):
    dip = AIServiceVisionClient(config={}, signer=signer)
 
    body = json.loads(data.getvalue())
    input_parameters = body.get("parameters")
    col = input_parameters.get("column")
    input_data = base64.b64decode(body.get("data")).decode()
    df = pandas.read_json(StringIO(input_data), lines=True)
    df['enr'] = df.apply(lambda row : vision(dip,row[col]), axis = 1)
    #Explode the array of aspects into row per entity
    dfe = df.explode('enr',True)
    #Add a column for each property we want to return from imageObjects struct
    ret=pandas.concat([dfe,pandas.DataFrame((d for idx, d in dfe['enr'].iteritems()))], axis=1)
 
 
    #Drop array of aspects column
    ret = ret.drop(['enr'],axis=1)
    #Drop the input text column we don't need to return that (there may be other columns there)
    ret = ret.drop([col],axis=1)
    if 'name' not in ret.columns:
        return pandas.DataFrame(columns=['id','name','confidence','x0','y0','x1','y1','x2','y2','x3','y3']).to_json(orient='records')
    for i in range(4):
        ret['x' + str(i)] = ret.apply(lambda row: row['bounding_polygon']['normalized_vertices'][i]['x'], axis=1)
        ret['y' + str(i)] = ret.apply(lambda row: row['bounding_polygon']['normalized_vertices'][i]['y'], axis=1)
    ret = ret.drop(['bounding_polygon'],axis=1)
 
    rstr=ret.to_json(orient='records')
    return rstr

3.3 Déploiement de la fonction

déployer la fonction dans l'application,

Terminez la 3.2 Création d'une fonction avant d'essayer cette tâche.

  1. Exécutez la commande cloud shell suivante :
    fn -v deploy app <app_name>
  2. Vérifiez que la fonction est inscrite dans votre registre de conteneurs.
    1. Dans le menu de navigation de la console, sélectionnez Services de développeur.
    2. Sélectionnez Registre de conteneurs. La fonction est visible dans le registre de conteneurs.

3.4 Appel de la fonction

Testez la fonction en l'appelant.

Terminez la section 3.3 Déploiement de la fonction avant d'essayer cette tâche.

Oracle Cloud Infrastructure Data Integration prend en charge les fonctions appelantes, où la charge utile de données est une chaîne codée à base unique de 64 contenant les enregistrements à traiter et un ensemble de paramètres. Exemples :
{"data":"eyJpZCI6MSwiaW5wdXRUZXh0IjoiaHR0cHM6Ly9pbWFnZS5jbmJjZm0uY29tL2FwaS92MS9pbWFnZS8xMDYxOTYxNzktMTU3MTc2MjczNzc5MnJ0czJycmRlLmpwZyJ9", "parameters":{"column":"inputText"}}
Les données encodées sont la version encodée 64 de base d'un ensemble de formats de lignes JSON (chaque ligne est un JSON pour chaque enregistrement). Chaque enregistrement a un ID qui est utilisé pour associer la sortie. Le décodage de l'exemple de chaîne donne :
{"id":1,"inputText":"https://<server-name>/api/v1/image/106196179-1571762737792rts2rrde.jpg"}
Testez la fonction à l'aide de la commande suivante :
echo '{"data":"<data-payload>", "parameters":{"column":"inputText"}}' | fn invoke <application-name> object-detection
Vous obtenez une sortie similaire à ce qui suit :
[{"id":1,"confidence":0.98330873,"name":"Traffic Light","x0":0.0115499255,"y0":0.4916201117,"x1":0.1609538003,"y1":0.4916201117,"x2":0.1609538003,"y2":0.9927374302,"x3":0.0115499255,"y3":0.9927374302},{"id":1,"confidence":0.96953976,"name":"Traffic Light","x0":0.8684798808,"y0":0.1452513966,"x1":1.0,"y1":0.1452513966,"x2":1.0,"y2":0.694972067,"x3":0.8684798808,"y3":0.694972067},{"id":1,"confidence":0.90388376,"name":"Traffic sign","x0":0.4862146051,"y0":0.4122905028,"x1":0.8815201192,"y1":0.4122905028,"x2":0.8815201192,"y2":0.7731843575,"x3":0.4862146051,"y3":0.7731843575},{"id":1,"confidence":0.8278353,"name":"Traffic sign","x0":0.2436661699,"y0":0.5206703911,"x1":0.4225037258,"y1":0.5206703911,"x2":0.4225037258,"y2":0.9184357542,"x3":0.2436661699,"y3":0.9184357542},{"id":1,"confidence":0.73488903,"name":"Window","x0":0.8431445604,"y0":0.730726257,"x1":0.9992548435,"y1":0.730726257,"x2":0.9992548435,"y2":0.9893854749,"x3":0.8431445604,"y3":0.9893854749}]

4. Ajout d'une stratégie de fonction

Créez une stratégie pour que la fonction puisse être utilisée avec Vision.

Terminez 3. Créez une fonction d'enrichissement avant d'essayer cette tâche.

  1. Dans le menu de navigation de la console, sélectionnez Identité et sécurité.
  2. Sélectionnez Groupes dynamiques.
  3. Créez un groupe dynamique avec la règle suivante :
    ALL {resource.type = 'fnfunc', resource.compartment.id = '<compartment-id>'}
  4. Ajoutez les instructions suivantes à la stratégie :
    allow any-user to use functions-family in compartment <compartment-name> where ALL {request.principal.type= 'ApiGateway', request.resource.compartment.id = '<compartment-id>'}
    allow dynamic-group <dynamic-group-name> to use ai-service-vision-family in tenancy

5. Création d'un espace de travail Oracle Cloud Infrastructure Data Integration

Avant de pouvoir utiliser Data Integration, assurez-vous que vous disposez des droits nécessaires pour utiliser cette fonctionnalité.

Terminez 4. Ajout d'une stratégie Functions avant d'essayer cette tâche.

Créez les stratégies qui vous permettent d'utiliser Data Integration.

  1. Dans le menu de navigation de la console, sélectionnez Analytics et AI.
  2. Sélectionnez Data Integration.
  3. Sélectionnez le compartiment de votre espace de travail.
  4. Sélectionnez Créer un espace de travail.
  5. Attribuez un nom à l'espace de travail. Evitez de saisir des informations confidentielles.
  6. Assurez-vous que l'option Activer le réseau privé est sélectionnée.
  7. Sélectionnez un VCN dans le compartiment.
  8. Assurez-vous que le sous-réseau sélectionné est votre sous-réseau privé.
  9. Sélectionnez Créer.
    La création de l'espace de travail prend quelques minutes.
  10. Une fois l'espace de travail créé, vérifiez qu'il présente l'état Active.

6. Ajout de stratégies Data Integration

Mettez à jour votre stratégie pour pouvoir utiliser Data Integration.

Terminez 5. Créez un espace de travail Oracle Cloud Infrastructure Data Integration avant d'essayer cette tâche.

  1. Suivez les étapes de la section Configuration des stratégies requises pour ouvrir Policy Builder.
  2. Ajoutez les instructions suivantes à la stratégie :
    allow any-user to read buckets in compartment <compartment-name> where ALL {request.principal.type = 'disworkspace', request.principal.id = '<data-integration-workspace-ocid>', request.operation = 'GetBucket'}
    allow any-user to manage objects in compartment <compartment-name> where ALL {request.principal.type = 'disworkspace', request.principal.id = '<data-integration-workspace-ocid>'}
    allow any-user to manage buckets in compartment <compartment-name> where ALL {request.principal.type = 'disworkspace', request.principal.id = '<data-integration-workspace-ocid>', request.permission = 'PAR_MANAGE'}
    allow any-user {PAR_MANAGE} in compartment <compartment-name> where ALL {request.principal.type='disworkspace', request.principal.id='<data-integration-workspace-ocid>'}
    allow any-user to use functions-family in compartment <compartment-name> where ALL {request.principal.type = 'disworkspace', request.principal.id='<data-integration-workspace-ocid>'}

7. Préparation des sources de données et des récepteurs

Vous utilisez des images de parking ainsi que la date à laquelle les images ont été prises en tant que données échantillon.

Rassemblez 10 images (ou plus) de voitures garées en tant que source de données sur laquelle vous effectuez une analyse de détection d'objet à l'aide de Data Integration et Vision.

7.1 Charger les données échantillon

Chargez les exemples d'images de voiture garées dans votre compartiment.

Terminez 6. Ajoutez des stratégies Data Integration avant d'essayer cette tâche.

  1. Retrouvez 10 images de voitures garées, localement ou en ligne.
  2. Dans le menu de navigation de la console, sélectionnez Storage.
  3. Sélectionner des buckets.
  4. Sélectionnez un bucket existant ou créez-en un.
  5. Sur la page de détails des buckets, sous Objects, sélectionnez Upload.
  6. Faites glisser vers la zone de dépôt les 10 fichiers image que vous avez collectés à l'étape 1.
  7. Sélectionnez Télécharger vers le serveur.
  8. Créez un fichier CSV comportant un tableau de quatre colonnes et 10 lignes. Les noms de colonne sont ID de dossier, Nom de l'image, Date de prise et Emplacement de l'image. Renseignez la colonne ID d'enregistrement de 1 à 10.
    Fichier de données d'échantillon Tableau de quatre colonnes et dix lignes. Les noms de colonne sont ID de dossier, Nom de l'image, Date de prise et Emplacement de l'image.
  9. Nommez le fichier cars.csv.
  10. Remplissez le tableau en indiquant les noms d'image, la date de prise et l'emplacement de l'image.
    Vous pouvez trouver l'emplacement de l'image en sélectionnant le menu Actions (trois points) de l'image dans la console lors de l'affichage du bucket. Sélectionnez Visualiser les détails de l'objet et copiez le chemin d'URL vers cars.csv.
  11. Téléchargez cars.csv vers le bucket.
  12. Sélectionnez Fermer.

7.2 Créer un bucket intermédiaire

Data Integration a besoin d'un emplacement intermédiaire dans lequel vider les fichiers intermédiaires avant de publier les données vers un entrepôt de données.

Effectuez le 7.1 Chargement des données échantillon avant d'essayer cette tâche.

  1. Dans le menu de navigation de la console, sélectionnez Storage.
  2. Sélectionner des buckets.
  3. Sélectionnez Créer un bucket.
  4. Donnez-lui un nom approprié, par exemple, data-staging. Evitez de saisir des informations confidentielles.
  5. Sélectionnez Créer.
  6. Acceptez toutes les valeurs par défaut.

7.3 Préparation de la base de données cible

Configurez la base de données Autonomous Data Warehouse cible pour ajouter un schéma et une table.

Terminez la section 7.2 Création d'un bucket d'import avant d'essayer cette tâche.

  1. Dans le menu de navigation de la console, sélectionnez Oracle Database.
  2. Sélectionnez Autonomous Data Warehouse.
  3. Sélectionnez votre compartiment.
  4. Sélectionnez Créer une instance Autonomous Database.
  5. Saisissez un nom d'affichage. Evitez de saisir des informations confidentielles.
  6. Entrez un nom de base de données. Evitez de saisir des informations confidentielles.
  7. Définissez Type de charge globale sur Data warehouse.
  8. Créez le nom utilisateur et le mot de passe de l'administrateur de la base de données.
  9. Définissez le type d'accès sur Secure access from anywhere.
  10. Définissez Authentification sur mTLS.
  11. Définissez le type de licence sur BYOL.
  12. Sélectionnez Créer une instance Autonomous Database.
  13. Une fois la base de données provisionnée, sur la page de détails de la base de données, sélectionnez Database Actions.
  14. Connectez-vous avec les informations d'identification fournies à l'étape 8.
  15. Sélectionnez Development (Développement).
  16. Sélectionnez SQL.
  17. Créez un utilisateur contributeur en exécutant le code SQL suivant :
    CREATE USER USER1 IDENTIFIED BY "<enter user1 password here>";
    GRANT DWROLE TO USER1;
    ALTER USER USER1 QUOTA 200M ON DATA;

    Les bases de données autonomes sont fournies avec un rôle de base de données prédéfini appelé DWROLE. Il fournit les privilèges communs permettant à un développeur de base de données ou à un data scientist d'effectuer des analyses en temps réel. Selon les exigences d'utilisation, vous devrez peut-être également accorder des privilèges à d'autres utilisateurs.

7.4 Créer une table pour projeter les données analysées

Créez une table pour stocker les informations sur les objets détectés.

Terminez la section 7.3 Préparation de la base de données cible avant d'essayer cette tâche.

  1. Si vous n'y êtes pas déjà, accédez au tableau de bord Database Actions.
  2. Exécutez le script suivant :
    CREATE TABLE USER1.OBJECTS
       ("RECORD_ID" INT,
        "IMAGE_NAME" VARCHAR2(200 BYTE),
        "DATE_TAKEN" DATE,
        "IMAGE_LOCATION" VARCHAR2(2000 BYTE),
        "OBJECT_NAME" VARCHAR2(200 BYTE),
        "OBJECT_CONFIDENCE" DECIMAL(8,7),
        "VERTEX_X1" FLOAT,
        "VERTEX_Y1" FLOAT,
        "VERTEX_X2" FLOAT,
        "VERTEX_Y2" FLOAT,
        "VERTEX_X3" FLOAT,
        "VERTEX_Y3" FLOAT,
        "VERTEX_X4" FLOAT,
        "VERTEX_Y4" FLOAT
    ) SEGMENT CREATION IMMEDIATE
      PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
     NOCOMPRESS LOGGING
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
      BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
      TABLESPACE "VISION"

8. Utilisation d'un flux de données dans Data Integration

Créez les composants nécessaires à la création d'un flux de données dans Data Integration.

Le flux de données est le suivant : Le flux commence par le fichier cars.csv, une fonction de détection d'objet et d'expression fonctionne sur celui-ci et la sortie est envoyée au stockage d'objet cible.

Toutes les ressources de stockage sous-jacentes ont été créées dans les chapitres précédents. Dans Data Integration, vous créez les ressources de données pour chacun des éléments du flux de données.

8.1 Création d'une ressource de données pour la source et la préparation

Créez une ressource de données pour les données source et de préparation.

Terminez 7. Préparez les sources de données et les récepteurs avant d'essayer cette tâche.

  1. Dans le menu de navigation de la console, sélectionnez Analytics et AI.
  2. Sélectionnez Data Integration.
  3. Sur la page d'accueil de l'espace de travail que vous avez créé dans 5. Création d'un espace de travail Oracle Cloud Infrastructure Data Integration, sélectionnez Créer une ressource de données dans la mosaïque Actions rapides.
  4. Sur la page Créer une ressource de données, renseignez les champs suivants :
    1. Pour Nom, entrez cars-data-source.
    2. Dans Description, entrez un texte qui vous aide, vous ou d'autres utilisateurs, à trouver la ressource de données.
    3. Sélectionnez Oracle Object Storage en tant que type.
    4. Entrez l'OCID de locataire. Si vous avez besoin de trouver les informations de location, elles sont disponibles si vous sélectionnez l'icône Profil de la console.
    5. Indiquez la région OCI.
  5. Sélectionnez Test de connexion.
  6. Sélectionnez Créer.
  7. (Facultatif) Si l'emplacement du bucket de préparation est différent, répétez les étapes 3 à 6 afin de créer une ressource de données pour la préparation.
    Remarque

    Le nom de l'emplacement tampon doit être en majuscules.

8.2 Création d'une ressource de données pour la cible

Créez une ressource de données pour l'entrepôt de données cible.

Complétez la section 8.1 Création d'une ressource de données pour la source et l'import avant d'essayer cette tâche.

  1. Dans le menu de navigation de la console, sélectionnez Analytics et AI.
  2. Sélectionnez Data Integration.
  3. Sur la page d'accueil de l'espace de travail que vous avez créé dans 5. Création d'un espace de travail Oracle Cloud Infrastructure Data Integration, sélectionnez Créer une ressource de données dans la mosaïque Actions rapides.
  4. Sur la page Créer une ressource de données, renseignez les champs suivants :
    1. Dans Nom, entrez data-warehouse.
    2. Bien que l'identificateur soit généré automatiquement à partir du nom, vous pouvez modifier la valeur.
    3. Dans Description, entrez un texte qui vous aide, vous ou d'autres utilisateurs, à trouver la ressource de données.
    4. Sélectionnez Oracle Autonomous Data Warehouse comme type.
    5. Sélectionnez Sélectionner une base de données.
    6. Entrez l'OCID de locataire. Si vous avez besoin de trouver les informations de location, elles sont disponibles si vous sélectionnez l'icône Profil de la console.
    7. Sélectionner le compartiment.
    8. Sélectionnez l'instance ADW que vous avez créée dans 7.3 Préparation de la base de données cible.
    9. Indiquez le niveau TNS. Définissez-la sur la valeur appropriée.
    10. Sélectionnez le nom de service pour vous connecter à ADW.
  5. Dans la section Connexion, ajoutez les informations suivantes :
    1. Pour Nom, sélectionnez la valeur par défaut, mais vous pouvez la renommer.
    2. Dans Description, entrez un texte qui vous aide, vous ou d'autres utilisateurs, à trouver la ressource de données.
    3. Définissez Nom utilisateur sur USER1.
    4. Entrez le mot de passe de l'utilisateur.
  6. Sélectionnez Test de la connexion pour vérifier les informations d'identification que vous avez saisies.
  7. Si l'étape 6 réussit, sélectionnez Créer.

8.3 Création d'un flux de données

Créez un flux de données dans Data Integration pour inclure les données d'un fichier.

Terminez 8.2 Création d'une ressource de données pour votre cible avant d'essayer cette tâche.

  1. Sur la page de détails du projet Vision-Lab, sélectionnez Flux de données.
  2. Sélectionnez Créer un flux de données.
  3. Dans le concepteur de flux de données, sélectionnez le panneau Propriétés.
  4. Dans Nom, entrez lab-data-flow.
  5. Sélectionnez Créer.

8.4 Ajouter une source de données

Maintenant, ajoutez une source de données à votre flux de données.

Terminez la section 8.3 Création d'un flux de données avant d'essayer cette tâche.

Après avoir créé le flux de données dans 8.3 Création d'un flux de données, le concepteur reste ouvert et vous pouvez y ajouter une source de données en procédant comme suit :

  1. Faites glisser l'icône source vers la zone d'espace de travail du flux de données.
  2. Sélectionnez la source.
  3. Dans Propriétés, sélectionnez l'onglet Détails.
  4. Mettez à jour les propriétés comme suit :
    1. Dans Identificateur, entrez CARS_CSV.
    2. Dans Détails, sélectionnez la ressource de données source que vous avez créée dans 8.1 Création d'une ressource de données pour la source et l'import.
    3. Définissez Connexion sur la valeur par défaut.
    4. Dans Schéma, sélectionnez le bucket qui contient le fichier de données cars.csv.
    5. Dans Entité de données, sélectionnez le fichier de données cars.csv.
    6. Définissez le type de fichier sur CSV.
  5. Accédez à Données. Les données y apparaissent au bout d'une minute ou deux.

8.5 Ajout d'une expression

Ajoutez une expression pour remplacer le format de ID par un entier et le format du champ date_taken par une date.

Complétez la section 8.4 Ajout d'une source de données avant d'essayer cette tâche.

  1. Cliquez avec le bouton droit de la souris sur l'icône du menu d'actions pour le champ <data source name>.id.
  2. Sélectionnez Modifier le type de données.
  3. Entrez ID.
  4. Pour Type de données, sélectionnez integer.
  5. Sélectionnez Appliquer.
    Une nouvelle étape d'expression est créée dans le flux de données yout.
  6. Cliquez avec le bouton droit de la souris sur l'icône du menu d'actions pour le champ <data source name>.date_taken.
  7. Sélectionnez Modifier le type de données.
  8. Pour Type de données, sélectionnez Date.
  9. Assurez-vous que le formatage de la date correspond à ce qui se trouve dans le fichier CSV (yyyy-MM-dd).
  10. Définissez Nom sur DATE_TAKEN.
  11. Sélectionnez l'onglet Données de l'expression pour afficher les nouveaux champs.
    Champs de données Quatre champs de données pour l'expression avec des cellules remplies.

8.6 Ajout d'une fonction

Ajoutez une fonction au flux de données pour extraire les objets des images d'entrée.

Effectuez l'8.5 Ajout d'une expression avant d'essayer cette tâche.

  1. Faites glisser l'opérateur Fonction (fn) de la barre d'outils des opérateurs vers le canevas.
  2. Connectez la sortie de votre expression en tant qu'entrée à la fonction.
  3. Sélectionner la fonction.
  4. Dans le panneau Propriétés, accédez à Détails.
  5. Remplacez l'identificateur par OBJECT_DETECTION.
  6. Sélectionnez Sélectionner pour sélectionner une fonction.
  7. Sélectionnez l'application que vous avez créée dans 3.1 Création d'une application.
  8. Sélectionnez la fonction object-detection.
  9. Sélectionnez OK pour confirmer les modifications.
  10. Ajoutez ou modifiez les propriétés. Sélectionnez Ajouter une propriété pour ajouter une propriété. Utilisez les valeurs suivantes :
    Attributs de fonction
    Nom Type Type de données Longueur Redimensionnement Valeur
    Données Attribut d'entrée VARCHAR 2 000
    colonne Configuration de fonction VARCHAR Données
    BATCH_SIZE Configuration de fonction NUMERIC/VARCHAR (par défaut) 1
    nom Attribut de sortie VARCHAR 200
    confiance Attribut de sortie DECIMAL 8 7
    x0 Attribut de sortie FLOAT 64
    y0 Attribut de sortie FLOAT 64
    x1 Attribut de sortie FLOAT 64
    y1 Attribut de sortie FLOAT 64
    x2 Attribut de sortie FLOAT 64
    y2 Attribut de sortie FLOAT 64
    x3 Attribut de sortie FLOAT 64
    y3 Attribut de sortie FLOAT 64

8.7 Mettre en correspondance la sortie avec la table d'entrepôt de données

Mettez en correspondance la sortie de l'analyse des sentiments avec la table Data Warehouse.

Complétez la section 8.6 Ajout d'une fonction avant d'essayer cette tâche.

  1. Accédez à l'onglet Mettre en correspondance.
  2. Faites glisser image_location dans la table des attributs source dans l'entrée de la fonction de champ data.
  3. Faites glisser l'opérateur Cible de la barre d'outils de l'opérateur vers le canevas.
  4. Connectez la sortie de votre fonction de détection d'objet à l'entrée de l'opérateur cible.
  5. Dans l'onglet des propriétés de détails de la cible, définissez les champs suivants sur les valeurs données :
    Identificateur
    TARGET_OBJECT_DETECTION
    Stratégie d'intégration
    Insérer
    Ressource de données
    Sélectionnez la ressource d'entrepôt de données que vous avez créée dans la section 8.2 Création d'une ressource de données pour votre cible.
    Connexion
    Connexion par défaut
    Schéma
    USER1
    Entité de données
    OBJETS
    Emplacement intermédiaire
    Indiquez un emplacement de stockage d'objet dans lequel les fichiers intermédiaires peuvent être créés lors de l'exécution du flux de données :
    Ressource de données
    source de données
    Connexion
    Connexion par défaut
    Dans le schéma
    Sélectionnez l'emplacement de stockage d'objet data-staging.
  6. Mettez en correspondance la sortie de la fonction avec les champs corrects dans la table de base de données cible. Utilisez les mappings dans la table suivante :
    Correspondance de sortie de la fonction
    Nom Mappage
    RECORD_ID RECORD_ID
    IMAGE_NAME Image_Name
    DATE_TAKEN DATE_TAKEN
    IMAGE_LOCATION Image_Location
    OBJECT_NAME nom
    OBJECT_CONFIDENCE confiance
    SOMMET X1 x0
    SOMMET Y1 y0
    SOMMET X2 x1
    SOMMET Y2 y1
    SOMMET X3 x2
    SOMMET Y3 y2
    SOMMET X4 x3
    SOMMET Y4 y3
    Les mappings doivent ressembler à :

    Mappages de un à quatre Les quatre premiers mappings affichés dans l'application

    Mappages cinq à huit Les quatre autres mappings affichés dans l'application

    Mappages neuf à douze Les quatre troisièmes mappings affichés dans l'application

    Mappages treize et quatorze Les deux derniers mappings affichés dans l'application

8.8 Exécution du flux de données 8

Exécutez le flux de données pour alimenter la base de données cible.

Complétez la section 8.7 Mapping de la sortie avec la table d'entrepôt de données avant d'essayer cette tâche.

  1. Dans le menu Actions rapide de votre espace de travail (trois points), sélectionnez Créer une tâche d'intégration.

    Dans le cadre du processus de création, sélectionnez le projet et le flux de données que vous avez créés dans 8.3 Création d'un flux de données.

  2. Dans l'espace de travail, sélectionnez Applications.
  3. Sélectionnez Créer une application.
  4. Entrez un nom.
  5. Sélectionnez Créer.
  6. Dans l'espace de travail, sélectionnez Projets.
  7. Sélectionnez le projet que vous avez créé dans 8.3 Création d'un flux de données.
  8. Dans le menu Détails, sélectionnez Tâches.
  9. Pour la tâche que vous avez créée à l'étape 1, sélectionnez Exécuter dans le menu de l'icône d'action.
  10. Sélectionnez Publier vers l'application.
  11. Sélectionnez l'application que vous avez créée à l'étape 3.
  12. Dans l'application, sélectionnez la tâche d'intégration.
  13. Sélectionnez Exécuter dans le menu de l'icône d'action.
    Vous pouvez suivre la progression de l'exécution à partir de la page Exécutions. Si des erreurs se produisent, consultez les journaux pour comprendre pourquoi.
  14. Une fois l'exécution terminée, vérifiez dans la base de données si les tables sont correctement renseignées. Exécutez le code SQL suivant :
    SELECT * FROM USER1.OBJECTS;

9. Visualisation des données dans Analytics Cloud

Affichez les données que vous avez créées à l'aide d'Analytics Cloud.

Vous devez accéder à Analytics Cloud et créer une instance Analytics Cloud.

9.1 Création d'une instance Analytics Cloud

Suivez ces étapes pour créer une instance Analytics Cloud.

Terminez 8. Utilisez un flux de données dans Data Integration avant d'essayer cette tâche.

  1. Dans le menu de navigation de la console, sélectionnez Analytics et AI.
  2. Sélectionnez Analytics Cloud.
  3. Sélectionnez le compartiment,
  4. Sélectionnez Créer une instance.
  5. Entrez un nom. Ne pas saisir d'informations confidentielles
  6. Sélectionnez 2 OCPUs. Les autres paramètres de configuration conservent les valeurs par défaut.
  7. Sélectionnez Créer.

9.2 Créer une connexion à l'entrepôt de données

Suivez ces étapes pour configurer une connexion entre votre instance Analytics Cloud et votre entrepôt de données.

Terminez la 9.1 Création d'une instance Analytics Cloud avant d'essayer cette tâche.

  1. Sur la page de détails, cliquez sur Page d'accueil Analytics. Connectez-vous à votre instance Analytics Cloud.
  2. Sélectionnez Créer un ensemble de données.
  3. Sélectionnez Créer une connexion.
  4. Sélectionnez Oracle Autonomous Data Warehouse.
  5. Entrez les informations d'identification de connexion pour la base de données cible que vous avez créée dans 7.3 Préparation de la base de données cible.
    Si vous ne savez pas comment obtenir le portefeuille, reportez-vous à Téléchargement d'un portefeuille pour plus d'informations.

9.3 Création d'un ensemble de données

Pour créer un ensemble de données, procédez comme suit.

Terminez la section 9.2 Création d'une connexion à l'entrepôt de données avant d'essayer cette tâche.

  1. Sélectionnez Data.
  2. Sélectionnez Créer.
  3. Sélectionnez Créer un ensemble de données.
  4. Sélectionnez votre entrepôt de données.
  5. A partir de la base de données USER1, faites glisser la table OBJECTS vers le canevas.
  6. Enregistrez votre jeu de données.

9.4 Créer une visualisation

Suivez ces étapes pour afficher vos données dans Analytics Cloud.

Terminez la version 9.3 Création d'un ensemble de données avant d'essayer cette tâche.

  1. Sélectionnez Créer.
  2. Sélectionnez Classeur.
  3. Sélectionnez l'ensemble de données que vous avez créé dans la version 9.3 Création d'un ensemble de données.
  4. Sélectionnez Ajouter au classeur.
  5. Sélectionnez l'onglet Visualisations.
  6. Faites glisser une visualisation à barres vers le canevas.
  7. Accédez aux données.
  8. Cliquez avec le bouton droit de la souris sur la table Mes calculs.
  9. Sélectionnez Ajouter un calcul....
  10. Définissez Nom sur COUNT OF OBJECTS.
  11. Entrez COUNT(OBJECT_NAME) dans Fonction.
  12. Faites glisser COUNT OF SENTIMENT sur la valeur (axe des Y) de la visualisation.
  13. Sélectionnez OBJECTS > DATE_TAKEN pour la catégorie (axe des X) de la visualisation.
  14. Sélectionnez DATE_TAKEN.
  15. Sélectionnez Afficher by...Day.
  16. Pour Couleur, sélectionnez OBJECT_NAME.
    Un graphique semblable à : Graphique à barres indiquant le nombre de voitures et de roues détectées pour chaque jour.