Intégration du service de visualisation avec Oracle Analytics Cloud (OAC)

Créez un flux d'intégration de données qui utilise la trousse SDK Vision pour détecter des objets dans des images et projeter ces informations dans une table d'un entrepôt de données. Ces données de sortie sont ensuite utilisées par Oracle Analytics Cloud pour créer des visualisations et trouver des modèles.

Voici le flux de haut niveau du système entre Vision et OAC : Flux entre Vision et OAC, commençant par la ressource de données d'entrée sous forme de fichier CSV dans le service d'intégration de données. 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, des fonctions et des passerelles d'API VCN, et d'utiliser le service d'intégration de données et le service de visualisation.

Parlez à votre administrateur des politiques requises.

Configuration des politiques requises

Suivez ces étapes pour configurer les politiques requises.

  1. Dans le menu de navigation de la console, sélectionnez Identité et sécurité.
  2. Sous identité, sélectionnez Politiques.
  3. Sélectionnez Créer une politique.
  4. Dans le panneau Créer une politique, alimentez Nom et Description.
    Dans le champ Nom, entrez un nom sans aucune espace. Vous ne pouvez utiliser que des caractères alphanumériques, des traits d'union, des points et des traits de soulignement.

    Dans le champ Description, entrez une description qui aidera les autres utilisateurs à connaître la fonction de ce jeu de politiques.

  5. Dans le générateur de politiques, utilisez l'éditeur manuel pour ajouter les énoncés suivants :
    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éer un réseau en nuage virtuel

Créez un VCN pour servir de répertoire de base à 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 Réseau.
  2. Sélectionner des réseaux en nuage virtuels.
  3. Cliquez sur Démarrer l'assistant VCN.
  4. Sélectionnez Créer un réseau VCN avec connectivité Internet.
  5. Sélectionnez Démarrer l'assistant VCN.
  6. Entrez un nom pour le VCN. Évitez d'entrer 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 de trafic entrant avec état pour le sous-réseau régional public afin de permettre le trafic sur le port 443.

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

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

  1. Dans le menu de navigation, sélectionnez Réseau.
  2. Sélectionner des réseaux en nuage 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 de trafic entrant.
  7. Mettez à jour les champs suivants avec les valeurs suivantes :
    • Type de source : CIDR
    • CIDR source : 0.0.0.0/0
    • Protocole IP : TCP
    • Intervalle de ports sources : All
    • Intervalle 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 en un seul point d'extrémité qui peut être utilisé par vos utilisateurs.

Remplissez 1. Créez un réseau en nuage virtuel avant d'essayer cette tâche.

  1. Dans le menu de navigation de la console, sélectionnez Services de développement.
  2. Sélectionnez Passerelles.
  3. Sélectionnez Créer une passerelle.
  4. Entrez un nom pour la passerelle. N'entrez pas d'informations confidentielles.
  5. Réglez le type de la passerelle à Public.
  6. Sélectionnez le compartiment dans lequel créer les ressources du service de passerelle d'API.
  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éez un réseau en nuage virtuel.
  8. Sélectionnez le nom du sous-réseau régional dans le VCN. Réglez-le au sous-réseau public que vous avez modifié.
  9. Sélectionnez Créer une passerelle.

    Lorsque la passerelle d'API est créée, elle est affichée en tant que Active dans la liste de la page Passerelles.

3. Créer 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 sur demande. La fonction est conforme au schéma requis pour le service d'intégration de données. La fonction sans serveur appelle l'API de Vision au moyen de la trousse SDK Python.

3.1 Création d'une application

Pour ajouter une fonction, il faut d'abord créer une application.

Remplissez 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éveloppement.
  2. Sélectionner des 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. Entrer un nom. N'entrez pas d'informations confidentielles.
  5. Sélectionnez le VCN créé dans la section 1. Créer un réseau en nuage 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 Démarrage.

    Pour qu'il puisse déployer des fonctions dans 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 Configurer l'interface de ligne de commande fn sur Cloud Shell ou regardez la vidéo Créer des fonctions sans serveur sur Oracle Cloud.
    Note

    Si l'étape 4 n'est pas claire, voir Création d'un contexte d'interface de ligne de commande Fn Project pour se connecter à Oracle Cloud Infrastructure dans la documentation sur les fonctions. Vous pouvez sélectionner n'importe quel terme pour OCIR-REPO, c'est un préfixe utilisé comme nom du registre de conteneur pour déployer la fonction.

3.2 Création d'une fonction

Suivez ces étapes pour créer une fonction dans votre application.

Terminez 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 l'interpréteur de commandes en nuage :
    fn init --runtime python object-detection
    cd object-detection
    Il génère trois fichiers :
    • func.yaml
    • 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 votre application

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

  1. Exécutez la commande d'interpréteur de commandes en nuage suivante :
    fn -v deploy app <app_name>
  2. Vérifiez que la fonction est enregistrée dans le registre de conteneurs.
    1. Dans le menu de navigation de la console, sélectionnez Services de développement.
    2. Sélectionnez Registre de conteneurs. La fonction est visible dans le registre de conteneurs.

3.4 Appelez la fonction

Testez la fonction en l'appelant.

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

Oracle Cloud Infrastructure Data Integration prend en charge les fonctions d'appel, où les données utiles sont une chaîne codée de base 64 unique qui contient les enregistrements à traiter et un jeu de paramètres. Exemple :
{"data":"eyJpZCI6MSwiaW5wdXRUZXh0IjoiaHR0cHM6Ly9pbWFnZS5jbmJjZm0uY29tL2FwaS92MS9pbWFnZS8xMDYxOTYxNzktMTU3MTc2MjczNzc5MnJ0czJycmRlLmpwZyJ9", "parameters":{"column":"inputText"}}
Les données encodées sont la version encodée de base 64 d'un jeu de lignes JSON (chaque ligne est un JSON pour chaque enregistrement). Chaque enregistrement a un code 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
La sortie ressemble à celle-ci :
[{"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. Ajouter une politique de fonctions

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

Remplissez 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électionner des groupes dynamiques.
  3. Créez un groupe dynamique en utilisant la règle suivante :
    ALL {resource.type = 'fnfunc', resource.compartment.id = '<compartment-id>'}
  4. Ajoutez les énoncés suivants à la politique :
    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éer un espace de travail d'intégration de données pour Oracle Cloud Infrastructure

Avant de pouvoir utiliser le service d'intégration de données, assurez-vous de disposer des droits nécessaires pour utiliser cette capacité.

Remplissez 4. Ajout d'une politique de fonctions avant d'essayer cette tâche.

Créez les politiques qui vous permettent d'utiliser le service d'intégration de données.

  1. Dans le menu de navigation de la console, sélectionnez Analyse et intelligence artificielle.
  2. Sélectionnez Intégration de données.
  3. Sélectionnez le compartiment de votre espace de travail.
  4. Sélectionnez Créer un espace de travail.
  5. Donnez un nom à l'espace de travail. Évitez d'entrer des informations confidentielles.
  6. Assurez-vous que l'option Activer un réseau privé est sélectionnée.
  7. Sélectionnez un réseau VCN dans le compartiment.
  8. Assurez-vous que le sous-réseau que vous sélectionnez est votre sous-réseau privé.
  9. Sélectionnez Créer.
    La création de l'espace de travail prend quelques minutes.
  10. Lorsque l'espace de travail est créé, vérifiez qu'il est à l'état Active.

6. Ajouter des politiques d'intégration de données

Mettez à jour votre politique pour pouvoir utiliser le service d'intégration de données.

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

  1. Suivez les étapes sous Configuration des politiques requises pour ouvrir le générateur de politiques.
  2. Ajoutez les énoncés suivants à la politique :
    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éparer les sources et les récepteurs de données

Vous utilisez des images de stationnement de voiture ainsi que la date à laquelle les images ont été prises comme données-échantillons.

Collectez 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 du service d'intégration de données et du service de visualisation.

7.1 Chargement des données-échantillons

Chargez les images de voiture stationnée dans votre seau.

Remplissez 6. Ajout de politiques d'intégration de données avant d'essayer cette tâche.

  1. Trouvez 10 images de voitures garées, que ce soit localement ou en ligne.
  2. Dans le menu de navigation de la console, sélectionnez Stockage.
  3. Sélectionnez Seaux.
  4. Sélectionnez un seau existant ou créez-en un nouveau.
  5. Dans la page Détails des seaux, sous objets, cliquez sur Charger.
  6. Faites glisser vers la zone de dépôt les 10 fichiers d'image que vous avez collectés à l'étape 1.
  7. Sélectionnez Charger.
  8. Créez un fichier CSV avec une table de quatre colonnes et 10 rangées. Les noms de colonne sont Record ID (ID enregistrement), Image Name (Nom de l'image), Date Taken (Date prise) et Image Location (Emplacement de l'image). Remplissez la colonne ID enregistrement de 1 à 10.
    Exemple de fichier de données Table de quatre colonnes et dix rangées. Les noms de colonne sont Record ID, Image Name, Date Taken et Image Location.
  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.
    L'emplacement de l'image peut être trouvé en sélectionnant le menu Actions (trois points) pour l'image dans la console lors de la consultation du seau. Sélectionnez Voir les détails de l'objet et copiez le chemin de l'URL vers cars.csv.
  11. Chargez cars.csv dans le seau.
  12. Sélectionnez Fermer.

7.2 Création d'un seau intermédiaire

Le service d'intégration de données a besoin d'un emplacement temporaire pour vider les fichiers intermédiaires avant de publier les données dans un entrepôt de données.

Terminez 7.1 Chargement des données-échantillons avant d'essayer cette tâche.

  1. Dans le menu de navigation de la console, sélectionnez Stockage.
  2. Sélectionnez Seaux.
  3. Sélectionnez Créer un seau.
  4. Donnez-lui un nom approprié, par exemple data-staging. Évitez d'entrer 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 7.2 Création d'un seau intermédiaire avant d'essayer cette tâche.

  1. Dans le menu de navigation de la console, sélectionnez Oracle Database.
  2. Sélectionnez Base de données Autonomous Data Warehouse.
  3. Sélectionnez votre compartiment.
  4. Sélectionnez Créer une base de données Autonomous Database.
  5. Entrer un nom d'affichage. Évitez d'entrer des informations confidentielles.
  6. Entrez un nom de base de données. Évitez d'entrer des informations confidentielles.
  7. Réglez Type de charge de travail à Data warehouse.
  8. Créez le nom utilisateur et le mot de passe de l'administrateur de la base de données.
  9. Réglez le type d'accès à Secure access from anywhere.
  10. Réglez Authentification à mTLS.
  11. Réglez le type de licence à BYOL.
  12. Sélectionnez Créer une base de données Autonomous Database.
  13. Une fois votre base de données provisionnée, dans la page Détails de la base de données, sélectionnez Database Actions.
  14. Connectez-vous avec les données d'identification que vous avez fournies à l'étape 8.
  15. Sélectionnez Development (Développement).
  16. Sélectionnez SQL.
  17. Créez un utilisateur Contributor en exécutant l'instruction SQL suivante :
    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 dotées d'un rôle de base de données prédéfini nommé DWROLE. Il fournit les privilèges communs à un développeur de base de données ou à un spécialiste des données pour effectuer des analyses en temps réel. Vous devrez peut-être accorder des privilèges à d'autres utilisateurs, selon leurs exigences d'utilisation.

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

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

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

  1. Naviguez jusqu'au tableau de bord Database Actions si vous n'y êtes pas déjà.
  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. Utiliser un flux de données pour l'intégration de données

Créez les composants nécessaires pour créer un flux de données dans le service d'intégration de données.

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

Toutes les ressources de stockage sous-jacentes ont été créées dans les chapitres précédents. Dans le service d'intégration de données, 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 votre source et votre table intermédiaire

Créez une ressource de données pour vos données sources et intermédiaires.

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

  1. Dans le menu de navigation de la console, sélectionnez Analyse et intelligence artificielle.
  2. Sélectionnez Intégration de données.
  3. Dans 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 vignette Actions rapides.
  4. Dans la page Créer une ressource de données, alimentez les champs suivants :
    1. Pour Nom, entrez cars-data-source.
    2. Pour Description, entrez du texte qui vous aide, vous ou d'autres utilisateurs, à trouver la ressource de données.
    3. Sélectionnez Stockage d'objets Oracle comme type.
    4. Entrez l'OCID du client. Si vous devez trouver les informations sur votre location, elles sont disponibles si vous sélectionnez l'icône Profil de la console.
    5. Spécifiez la région OCI.
  5. Sélectionnez Tester la connexion.
  6. Sélectionnez Créer.
  7. (Facultatif) Si l'emplacement de votre seau intermédiaire est différent, répétez les étapes 3 à 6 pour créer une ressource de données pour le stockage temporaire.
    Note

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

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

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

Terminez 8.1 Création d'une ressource de données pour la source et l'emplacement temporaire avant d'essayer cette tâche.

  1. Dans le menu de navigation de la console, sélectionnez Analyse et intelligence artificielle.
  2. Sélectionnez Intégration de données.
  3. Dans 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 vignette Actions rapides.
  4. Dans la page Créer une ressource de données, alimentez les champs suivants :
    1. Pour Nom, entrez data-warehouse.
    2. Bien que l'identificateur soit généré automatiquement à partir du nom, vous pouvez modifier la valeur.
    3. Pour Description, entrez du 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 du client. Si vous devez trouver les informations sur votre location, elles sont disponibles si vous sélectionnez l'icône Profil de la console.
    7. Sélectionnez le compartiment.
    8. Sélectionnez le ADW que vous avez créé dans 7.3 Préparation de la base de données cible.
    9. Spécifiez le niveau TNS. Réglez-le à la valeur appropriée.
    10. Sélectionnez le nom du service pour vous connecter à votre 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. Pour Description, entrez du texte qui vous aide, vous ou d'autres utilisateurs, à trouver la ressource de données.
    3. Réglez Nom d'utilisateur à USER1.
    4. Entrez le mot de passe de l'utilisateur.
  6. Sélectionnez Tester la connexion pour vérifier les données d'identification que vous avez entrées.
  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 le service d'intégration de données pour ingérer les données à partir d'un fichier.

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

  1. Dans la page des 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. Pour 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 à un flux de données.

Terminez 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 lui ajouter une source de données en suivant les étapes suivantes :

  1. Faites glisser l'icône source dans 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'affectation physique.
    3. Réglez Connexion à la valeur par défaut.
    4. Dans le schéma, sélectionnez le seau 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. Réglez Type de fichier à CSV.
  5. Naviguez jusqu'à Données. Les données s'y trouvent après une minute ou deux.

8.5 Ajout d'une expression

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

Terminez 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 du champ <nom de la source de données>.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 du champ <nom de la source de données>.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 date correspond à ce qui se trouve dans le fichier CSV (yyyy-MM-dd).
  10. Réglez Nom à DATE_TAKEN.
  11. Sélectionnez l'onglet Données de l'expression pour voir les nouveaux champs.
    Champs de données Quatre champs de données pour l'expression avec des cellules alimentées.

8.6 Ajout d'une fonction

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

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

  1. À partir de la barre d'outils des opérateurs, faites glisser l'opérateur Fonction (fn) sur le canevas.
  2. Connectez la sortie de votre expression en tant qu'entrée à la fonction.
  3. Sélectionnez la fonction.
  4. Dans le volet Propriétés, naviguez jusqu'à 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 de détection d'objet.
  9. Sélectionnez OK pour confirmer vos 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 la fonction
    Le nom Type Type de données Longueur Ajuster Valeur
    données Attribut d'entrée VARCHAR 2,000
    colonne Configuration de la fonction VARCHAR données
    BATCH_SIZE Configuration de la fonction NUMERIC/VARCHAR (par défaut) 1
    name 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 Mappage de la sortie à la table d'entrepôt de données

Mappez la sortie de l'analyse de sentiment à la table d'entrepôt de données.

Terminez 8.6 Ajout d'une fonction avant d'essayer cette tâche.

  1. Naviguez jusqu'à l'onglet Carte.
  2. Faites glisser image_location dans la table des attributs sources vers l'entrée de la fonction de champ données.
  3. Dans la barre d'outils de l'opérateur, faites glisser l'opérateur Cible 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, réglez les champs suivants aux valeurs indiquées :
    Identificateur
    TARGET_OBJECT_DETECTION
    Stratégie d'intégration
    Insert
    Ressource de données
    Sélectionnez la ressource d'entrepôt de données que vous avez créée dans 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 temporaire
    Indiquez un emplacement de stockage d'objets où les fichiers intermédiaires peuvent être créés lors de l'exécution du flux de données :
    Ressource de données
    voitures-source de données
    Connexion
    Connexion par défaut
    Dans le schéma
    Sélectionner l'emplacement de stockage d'objets data-staging
  6. Mappez la sortie de la fonction sur les champs appropriés de la table de base de données cible. Utilisez les mappages du tableau suivant :
    Mappage de sortie de fonction
    Le nom Mappage
    RECORD_ID RECORD_ID
    IMAGE_NAME Image_Name
    DATE_TAKEN DATE_TAKEN
    IMAGE_LOCATION Image_Location
    OBJECT_NAME name
    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 mappages doivent se présenter comme suit :

    Mappages 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 derniers mappings affichés dans l'application

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

8.8 Exécuter le flux de données

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

Terminez 8.7 Mappage de la sortie à la table d'entrepôt de données avant d'essayer cette tâche.

  1. Dans le menu Actions rapides 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 d'icône d'action.
  10. Sélectionnez Publier dans 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. Lorsque l'exécution s'est terminée avec succès, examinez la base de données pour voir si les tables sont alimentées correctement. Exécutez le code SQL suivant :
    SELECT * FROM USER1.OBJECTS;

9. Visualiser les 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.

Entrez 8. Utilisez un service de flux de données pour l'intégration de données avant d'essayer cette tâche.

  1. Dans le menu de navigation de la console, sélectionnez Analyse et intelligence artificielle.
  2. Sélectionnez Analytics Cloud.
  3. Sélectionnez le compartiment,
  4. Sélectionnez Créer une instance.
  5. Entrer un nom. N'entrez pas 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 de votre instance Analytics Cloud à votre entrepôt de données.

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

  1. Dans la page de détails, cliquez sur Page d'accueil Analytics. Connectez-vous à votre instance Analytics Cloud.
  2. Sélectionnez Créer un jeu de données.
  3. Sélectionnez Créer une connexion.
  4. Sélectionnez Base de données Oracle Autonomous Data Warehouse.
  5. Entrez les données 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, voir comment télécharger un portefeuille pour plus d'informations.

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

Suivez ces étapes pour créer un jeu de données.

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

  1. Sélectionner des données.
  2. Sélectionnez Créer.
  3. Sélectionnez Créer un jeu de données.
  4. Sélectionnez votre entrepôt de données.
  5. À partir de la base de données USER1, faites glisser la table OBJECTS sur 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 9.3 Création d'un jeu de données avant d'essayer cette tâche.

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