Integración de Vision con Oracle Analytics Cloud (OAC)

Cree un flujo de Data Integration que utilice Vision SDK para detectar objetos en imágenes y proyectar esa información en una tabla de un almacén de datos. A continuación, Oracle Analytics Cloud utiliza estos datos de salida para crear visualizaciones y buscar patrones.

Este es el flujo de alto nivel del sistema entre Vision y OAC: Flujo entre Vision y OAC, que comienza con el activo de datos de entrada como un archivo CSV en Data Integration. Se procesa y transfiere como datos de salida a una tabla de objetos ADW que se utiliza como origen para OAC.

Antes de empezar

Para seguir este tutorial, debe ser capaz de crear redes, funciones y gateways de API de VCN y utilizar Data Integration y Vision.

Hable con el administrador sobre las políticas necesarias.

Configuración de las políticas necesarias

Siga estos pasos para configurar las políticas necesarias.

  1. En el menú de navegación de la consola, seleccione Identidad y seguridad.
  2. En Identidad, seleccione Políticas.
  3. Seleccione Crear política.
  4. En el panel Crear política, rellene los campos Nombre y Descripción.
    En Nombre, introduzca un nombre sin espacios. Solo puede utilizar caracteres alfanuméricos, guiones, puntos y guiones bajos.

    En Descripción, introduzca una descripción para ayudar a otros usuarios a conocer la finalidad de este juego de políticas.

  5. En Creador de política, utilice el editor manual para agregar las siguientes sentencias:
    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. Haga clic en Crear.

1. Creación de una red virtual en la nube

Cree una VCN para que sirva como directorio raíz para la función sin servidor y el gateway de API creado más adelante en el tutorial.

1.1 Creación de una VCN con acceso a Internet

Siga estos pasos para crear una VCN con acceso a Internet.

  1. En el menú de navegación, seleccione Networking.
  2. Seleccione Redes virtuales en la nube.
  3. Iniciar asistente de VCN rápido.
  4. Seleccione Crear una VCN con conexión a Internet.
  5. Seleccione Iniciar asistente de VCN.
  6. Introduzca un nombre para la VCN. Evite introducir información confidencial.
  7. Seleccione Siguiente.
  8. Haga clic en Crear.

1.2 Acceso a la VCN desde Internet

Debe agregar una nueva regla de entrada con estado a la subred regional pública para permitir el tráfico en el puerto 443.

Complete 1.1 Creación de una VCN con acceso a Internet antes de intentar esta tarea.

El gateway de API se comunica en el puerto 443, que no está abierto por defecto.

  1. En el menú de navegación, seleccione Networking.
  2. Seleccione Redes virtuales en la nube.
  3. Seleccione la VCN que ha creado en 1.1 Creación de una VCN con acceso a Internet.
  4. Seleccione el nombre de la subred regional pública.
  5. En Listas de seguridad, seleccione Default Security List.
  6. Seleccione Add Ingress Rules.
  7. Actualice los siguientes campos con estos valores:
    • Tipo de origen: CIDR
    • CIDR de origen: 0.0.0.0/0
    • Protocolo IP: TCP
    • Rango de puertos de origen: All
    • Rango de puertos de destino: 443
  8. Seleccione Agregar reglas de entrada para agregar la nueva regla a la lista de seguridad por defecto.

2. Creación de una puerta de enlace de API

Un gateway de API permite agregar todas las funciones que ha creado en un único punto final que pueden consumir sus usuarios.

Complete 1. Cree una red virtual en la nube antes de intentar esta tarea.

  1. En el menú de navegación de la consola, seleccione Developer Services.
  2. Seleccione Gateways.
  3. Seleccione Crear gateway.
  4. Introduzca un nombre para el gateway. No introduzca información confidencial.
  5. Defina el tipo del gateway en Public.
  6. Seleccione el compartimento en el que crear los recursos de API Gateway.
  7. Seleccione el nombre de la VCN que desea utilizar con el gateway de API. Utilice el nombre de la VCN que ha creado en la sección 1. Cree una red virtual en la nube.
  8. Seleccione el nombre de la subred regional en la VCN. Defínalo en la subred pública que haya cambiado.
  9. Seleccione Crear gateway.

    Cuando se crea el gateway de API, se muestra como Active en la lista de la página Gateways.

3. Creación de una función de enriquecimiento

Siga estos pasos para crear una función de enriquecimiento a la que se pueda llamar desde Oracle Cloud Infrastructure Data Integration.

Cree una función sin servidor que solo se ejecute bajo demanda. La función cumple con el esquema necesario para que la integración de datos la consuma. La función sin servidor llama a la API de Vision a través del SDK de Python.

3.1 Creación de Aplicaciones

Para agregar una función, primero tenemos que crear una aplicación.

Complete 2. Creación de un gateway de API antes de intentar esta tarea.

  1. En el menú de navegación de la consola, seleccione Developer Services.
  2. Seleccione Aplicaciones.
  3. Seleccione Crear aplicación.

    Puede pensar en una aplicación como un contexto delimitado en el que pueden residir varias funciones.

  4. Introducir un Nombre. No introduzca información confidencial.
  5. Seleccione la VCN creada en la sección 1. Cree una red virtual en la nube.
  6. Seleccione la subred pública de la VCN
  7. Haga clic en Crear.
  8. Una vez creada la aplicación, ábrala y haga clic en Introducción.

    Para que pueda desplegar funciones en el compartimento y el registro de contenedores correctos, configure CLI.

  9. Seleccione Configuración de Cloud Shell.
  10. Seleccione Iniciar Cloud Shell.
    Esto inicia una máquina virtual Linux con todas las configuraciones para configurar funciones.
  11. Siga los pasos del 1 al 7 en Configuración de la CLI de fn en Cloud Shell o consulte el vídeo Creación de funciones sin servidor en Oracle Cloud.
    Nota

    Si el paso 4 no está claro, consulte Creación de un contexto de la CLI de Fn Project para conectarse a Oracle Cloud Infrastructure en la documentación de Functions. Puede seleccionar cualquier término para OCIR-REPO, es un prefijo que se utiliza como nombre del registro de contenedor para desplegar la función.

3.2 Creación de una función

Siga estos pasos para crear una función en la aplicación:

Complete 3.1 Creación de una aplicación antes de intentar esta tarea.

La forma más rápida es que el sistema genere una plantilla de Python.

  1. Ejecute el siguiente comando en Cloud Shell:
    fn init --runtime python object-detection
    cd object-detection
    Genera tres archivos:
    • func.yaml
    • requirements.txt
    • func.py
  2. Cambie cada uno de los tres archivos con el siguiente contenido:
Func.yaml

Contenido recomendado para 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

Contenido recomendado para 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

Contenido recomendado para 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 Despliegue de la función

Desplegar la función en la aplicación

Complete 3.2 Creación de una función antes de intentar esta tarea.

  1. Ejecute el siguiente comando de Cloud Shell:
    fn -v deploy app <app_name>
  2. Confirme que la función está registrada en el registro de contenedores.
    1. En el menú de navegación de la consola, seleccione Developer Services.
    2. Seleccione Container Registry. La función está visible en el registro de contenedor.

3.4 Llamada a la función

Pruebe la función llamándola.

Complete 3.3 Despliegue de la función antes de intentar esta tarea.

Oracle Cloud Infrastructure Data Integration soporta funciones de llamada, donde la carga útil de datos es una sola cadena codificada base 64 que contiene los registros que se van a procesar y un juego de parámetros. Por ejemplo:
{"data":"eyJpZCI6MSwiaW5wdXRUZXh0IjoiaHR0cHM6Ly9pbWFnZS5jbmJjZm0uY29tL2FwaS92MS9pbWFnZS8xMDYxOTYxNzktMTU3MTc2MjczNzc5MnJ0czJycmRlLmpwZyJ9", "parameters":{"column":"inputText"}}
Los datos codificados son la versión codificada base 64 de un juego de formato de líneas JSON (cada línea es un JSON para cada registro). Cada registro tiene un ID que se utiliza para asociar la salida. La descodificación de la cadena de ejemplo proporciona:
{"id":1,"inputText":"https://<server-name>/api/v1/image/106196179-1571762737792rts2rrde.jpg"}
Pruebe la función con el siguiente comando:
echo '{"data":"<data-payload>", "parameters":{"column":"inputText"}}' | fn invoke <application-name> object-detection
La salida es similar a la siguiente:
[{"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. Adición de una política de funciones

Cree una política para que la función se pueda utilizar con Vision.

Complete 3. Cree una función de enriquecimiento antes de intentar esta tarea.

  1. En el menú de navegación de la consola, seleccione Identity & Security.
  2. Seleccione Grupos dinámicos.
  3. Cree un grupo dinámico con la siguiente regla:
    ALL {resource.type = 'fnfunc', resource.compartment.id = '<compartment-id>'}
  4. Agregue las siguientes sentencias a la política:
    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. Creación de un espacio de trabajo de integración de datos de Oracle Cloud Infrastructure

Antes de utilizar Data Integration, asegúrese de que tiene los derechos para utilizar la capacidad.

Complete 4. Adición de una política de Functions antes de intentar esta tarea.

Cree las políticas que le permitan utilizar Data Integration.

  1. En el menú de navegación de la consola, seleccione Análisis y AI.
  2. Seleccione Data Integration.
  3. Seleccione el compartimento para el espacio de trabajo.
  4. Seleccione Crear espacio de trabajo.
  5. Asigne al espacio de trabajo un nombre. Evite introducir información confidencial.
  6. Asegúrese de que la opción Activar red privada esté seleccionada.
  7. Seleccione una VCN en el compartimento.
  8. Asegúrese de que la subred que seleccione es su subred privada.
  9. Haga clic en Crear.
    El espacio de trabajo tarda unos minutos en crearse.
  10. Cuando se cree el espacio de trabajo, confirme que tiene el estado Active.

6. Adición de políticas de integración de datos

Actualice la política para que pueda utilizar Data Integration.

Complete 5. Creación de un espacio de trabajo de Oracle Cloud Infrastructure Data Integration antes de intentar esta tarea.

  1. Siga los pasos de Configuración de las políticas necesarias para abrir el creador de políticas.
  2. Agregue las siguientes sentencias a la política:
    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. Preparación de orígenes y receptores de datos

Está utilizando imágenes de aparcamiento junto con la fecha en que se tomaron las imágenes como datos de muestra.

Reúna 10 imágenes (o más) de vehículos estacionados como origen de datos en el que realiza análisis de detección de objetos mediante Data Integration y Vision.

7.1 Cargando datos de muestra

Cargue los datos de muestra de las imágenes de automóviles estacionados en su cubo.

Complete 6. Adición de políticas de Data Integration antes de intentar esta tarea.

  1. Encuentra 10 imágenes de coches estacionados, ya sea localmente o en línea.
  2. En el menú de navegación de la consola, seleccione Almacenamiento.
  3. Seleccione Cubos.
  4. Seleccione un cubo existente o cree uno nuevo.
  5. En la página Detalles de cubos, en Objetos, seleccione Cargar.
  6. Arrastre a la zona de colocación los 10 archivos de imagen recopilados en el paso 1.
  7. Seleccione Cargar.
  8. Cree un archivo CSV con una tabla de cuatro columnas y 10 filas. Los nombres de columna son ID de registro, Nombre de imagen, Fecha de toma y Ubicación de imagen. Rellene la columna ID de registro del 1 al 10.
    Archivo de Datos de muestra Tabla de cuatro columnas y diez filas. Los nombres de columna son ID de registro, Nombre de imagen, Fecha de toma y Ubicación de imagen.
  9. Asigne al archivo el nombre cars.csv.
  10. Rellene la tabla proporcionando los nombres de imagen, la fecha de toma y la ubicación de la imagen.
    La ubicación de la imagen se puede encontrar seleccionando el menú Acciones Menú Acciones para la imagen en la consola al ver el cubo. Seleccione View Object Details y copie la ruta de acceso de URL en cars.csv.
  11. Cargue cars.csv en el cubo.
  12. Seleccione Cerrar.

7.2 Creación de un cubo temporal

Data Integration necesita una ubicación temporal en la que volcar archivos intermedios antes de publicar datos en un almacén de datos.

Complete 7.1 Loading Sample Data antes de realizar esta tarea.

  1. En el menú de navegación de la consola, seleccione Almacenamiento.
  2. Seleccione Cubos.
  3. Seleccione Crear cubo.
  4. Dale un nombre adecuado, por ejemplo, data-staging. Evite introducir información confidencial.
  5. Haga clic en Crear.
  6. Acepte todos los valores por defecto.

7.3 Preparación de la base de datos de destino

Configure la base de datos de destino de Autonomous Data Warehouse para agregar un esquema y una tabla.

Complete 7.2 Creación de un cubo temporal antes de intentar esta tarea.

  1. En el menú de navegación de la consola, seleccione Oracle Database.
  2. Seleccione Autonomous Data Warehouse.
  3. Seleccione el compartimento.
  4. Seleccione Create Autonomous Database.
  5. Introduzca el nombre mostrado. Evite introducir información confidencial.
  6. Introduzca un Nombre de la base de datos. Evite introducir información confidencial.
  7. Defina Tipo de carga de trabajo en Data warehouse.
  8. Cree el nombre de usuario y la contraseña para el administrador de la base de datos.
  9. Defina Tipo de acceso en Secure access from anywhere.
  10. Defina Autenticación en mTLS.
  11. Defina Tipo de licencia en BYOL.
  12. Seleccione Create Autonomous Database.
  13. Cuando la base de datos se haya aprovisionado, en la página de detalles de la base de datos, seleccione Database Actions.
  14. Conéctese con las credenciales que ha proporcionado en el paso 8.
  15. Seleccione Development.
  16. Seleccione SQL.
  17. Cree un usuario contribuyente ejecutando el siguiente SQL:
    CREATE USER USER1 IDENTIFIED BY "<enter user1 password here>";
    GRANT DWROLE TO USER1;
    ALTER USER USER1 QUOTA 200M ON DATA;

    Las bases de datos autónomas incluyen un rol de base de datos predefinido denominado DWROLE. Proporciona los privilegios comunes para que un desarrollador de bases de datos o un científico de datos realice análisis en tiempo real. En función de los requisitos de uso, puede que también necesite otorgar privilegios a otros usuarios.

7.4 Creación de una Tabla para Proyectar los Datos Analizados

Cree una tabla para almacenar cualquier información sobre los objetos detectados.

Complete 7.3 Preparación de la base de datos de destino antes de intentar esta tarea.

  1. Vaya al panel de control de Database Actions si aún no está allí.
  2. Ejecute el siguiente archivo de comandos:
    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. Uso de un flujo de datos en Data Integration

Cree los componentes necesarios para crear un flujo de datos en Data Integration.

El flujo de datos es: El flujo comienza con el archivo cars.csv, una función de detección de expresiones y objetos que funciona en él y la salida se envía al almacenamiento de objetos de destino.

Todos los recursos de almacenamiento subyacentes se crearon en capítulos anteriores. En Data Integration, puede crear los activos de datos para cada uno de los elementos del flujo de datos.

8.1 Creación de un activo de datos para el origen y la ubicación temporal

Cree un activo de datos para los datos de origen y temporales.

Complete 7. Prepare los orígenes y receptores de datos antes de intentar esta tarea.

  1. En el menú de navegación de la consola, seleccione Análisis y AI.
  2. Seleccione Data Integration.
  3. En la página inicial del espacio de trabajo que ha creado en 5. Al crear un espacio de trabajo de Oracle Cloud Infrastructure Data Integration, seleccione Crear activo de datos en el mosaico Acciones rápidas.
  4. En la página Crear activo de datos, rellene los siguientes campos:
    1. En Nombre, introduzca cars-data-source.
    2. En Descripción, introduzca texto que le ayude, o a otros usuarios, a buscar el activo de datos.
    3. Seleccione Oracle Object Storage como Tipo.
    4. Introduzca el OCID de inquilino. Si necesita encontrar la información de su arrendamiento, estará disponible si selecciona el icono Perfil de la consola.
    5. Especifique la región de OCI.
  5. Seleccione Probar conexión.
  6. Haga clic en Crear.
  7. (Opcional) Si la ubicación del bloque temporal es diferente, repita los pasos del 3 al 6 para crear un activo de datos para el almacenamiento temporal.
    Nota

    El nombre de la ubicación temporal debe estar en mayúsculas.

8.2 Creación de un Activo de Datos para el Destino

Cree un activo de datos para el almacén de datos de destino.

Complete 8.1 Creación de un activo de datos para su origen y ubicación temporal antes de intentar esta tarea.

  1. En el menú de navegación de la consola, seleccione Análisis y AI.
  2. Seleccione Data Integration.
  3. En la página inicial del espacio de trabajo que ha creado en 5. Al crear un espacio de trabajo de Oracle Cloud Infrastructure Data Integration, seleccione Crear activo de datos en el mosaico Acciones rápidas.
  4. En la página Crear activo de datos, rellene los siguientes campos:
    1. Para Nombre, introduzca data-warehouse.
    2. Aunque el Identificador se genera automáticamente a partir del Nombre, puede cambiar el valor.
    3. En Descripción, introduzca texto que le ayude, o a otros usuarios, a buscar el activo de datos.
    4. Seleccione Oracle Autonomous Data Warehouse como Tipo.
    5. Seleccione Seleccionar base de datos.
    6. Introduzca el OCID de inquilino. Si necesita encontrar la información de su arrendamiento, estará disponible si selecciona el icono Perfil de la consola.
    7. Seleccione el compartimento.
    8. Seleccione el almacén de datos autónomo que ha creado en 7.3 Preparing the Target Database.
    9. Especifique el nivel de TNS. Defínalo en el valor que sea adecuado.
    10. Seleccione el nombre de servicio para conectarse al almacén de datos autónomo.
  5. En la sección Conexión, agregue la siguiente información:
    1. En Nombre, seleccione el valor por defecto, aunque puede cambiarle el nombre.
    2. En Descripción, introduzca texto que le ayude, o a otros usuarios, a buscar el activo de datos.
    3. Defina User Name (Nombre de usuario) en USER1.
    4. Introduzca la contraseña para el usuario.
  6. Seleccione Probar Conexión para verificar las credenciales introducidas.
  7. Si el paso 6 es correcto, seleccione Crear.

8.3 Creación de un flujo de datos

Cree un flujo de datos en Data Integration para ingerir los datos del archivo.

Complete 8.2 Creación de un activo de datos para el destino antes de intentar esta tarea.

  1. En la página de detalles del proyecto del laboratorio de visión, seleccione Flujos de datos.
  2. Seleccione Crear flujo de datos.
  3. En el diseñador de flujos de datos, seleccione el panel Propiedades.
  4. En Nombre, introduzca lab-data-flow.
  5. Haga clic en Crear.

8.4 Adición de un Origen de Datos

Ahora, agregue un origen de datos al flujo de datos.

Complete 8.3 Creación de un flujo de datos antes de intentar esta tarea.

Una vez creado el flujo de datos en 8.3 Creación de un flujo de datos, el diseñador permanece abierto y puede agregarle un origen de datos mediante los siguientes pasos:

  1. Arrastre el icono de origen al área del espacio de trabajo del flujo de datos.
  2. Seleccione el origen.
  3. En Propiedades, seleccione el separador Detalles.
  4. Actualice las propiedades de la siguiente manera:
    1. En Identificador, introduzca CARS_CSV.
    2. En Detalles, seleccione el activo de datos de origen que ha creado en 8.1 Creación de un activo de datos para el origen y la ubicación temporal.
    3. Establezca Conexión en el valor predeterminado.
    4. En Esquema, seleccione el cubo que contiene el archivo de datos cars.csv.
    5. En Entidad de datos, seleccione el archivo de datos cars.csv.
    6. Defina Tipo de archivo en CSV.
  5. Vaya a Datos. Los datos aparecen allí después de uno o dos minutos.

8.5 Adición de una expresión

Agregue una expresión para cambiar el formato de ID a entero y el formato del campo date_taken a una fecha.

Complete 8.4 Adición de un origen de datos antes de intentar esta tarea.

  1. Haga clic con el botón derecho en el icono de menú de acción del campo <nombre de origen de datos>.id.
  2. Seleccione Change Data Type.
  3. Introduzca ID.
  4. En Tipo de datos, seleccione integer.
  5. Seleccione Aplicar.
    Se crea un nuevo paso de expresión en el flujo de datos de salida.
  6. Haga clic con el botón derecho en el icono de menú de acción del campo <nombre de origen de datos>.date_taken.
  7. Seleccione Change Data Type.
  8. En Tipo de datos, seleccione Date.
  9. Asegúrese de que el formato de fecha coincide con el del archivo CSV (yyyy-MM-dd).
  10. Defina Nombre en DATE_TAKEN.
  11. Seleccione el separador Datos de la expresión para ver los nuevos campos.
    Campos de Datos Los cuatro campos de datos para la expresión con celdas rellenas.

8.6 Adición de una función

Agregue una función al flujo de datos para extraer objetos de las imágenes de entrada.

Complete 8.5 Adición de una expresión antes de intentar esta tarea.

  1. En la barra de herramientas de operadores, arrastre el operador Función (fn) al lienzo.
  2. Conecte la salida de la expresión como entrada a la función.
  3. Seleccionar la función.
  4. En el panel Propiedades, vaya a Detalles.
  5. Cambie el identificador a OBJECT_DETECTION.
  6. Seleccione Seleccionar para seleccionar una función.
  7. Seleccione la aplicación que ha creado en 3.1 Creating an Application.
  8. Seleccione la función object-detection.
  9. Seleccione Aceptar para confirmar los cambios.
  10. Agregue o edite las propiedades. Seleccione Agregar propiedad para agregar una propiedad. Utilice los valores siguientes:
    Atributos de Función
    Nombre Escribir Tipo de dato Longitud Escalar Valor
    datos Atributo de Entrada VARCHAR 2.000
    columna Configuración de función VARCHAR datos
    BATCH_SIZE Configuración de función NUMERIC/VARCHAR (valor por defecto) 1
    nombre Atributo de Salida VARCHAR 200
    confianza Atributo de Salida DECIMAL 8 7
    x0 Atributo de Salida FLOAT 64
    y0 Atributo de Salida FLOAT 64
    x1 Atributo de Salida FLOAT 64
    y1 Atributo de Salida FLOAT 64
    x2 Atributo de Salida FLOAT 64
    y2 Atributo de Salida FLOAT 64
    x3 Atributo de Salida FLOAT 64
    y3 Atributo de Salida FLOAT 64

8.7 Asignación de la Salida a la Tabla del Almacén de Datos

Asigne la salida del análisis de sentimiento a la tabla del almacén de datos.

Complete 8.6 Agregación de una función antes de intentar esta tarea.

  1. Vaya al separador Mapa.
  2. Arrastre image_location en la tabla de atributos de origen a la entrada de la función de campo data.
  3. En la barra de herramientas del operador, arrastre el operador Destino al lienzo.
  4. Conecte la salida de la función de detección de objetos a la entrada del operador de destino.
  5. En el separador Details Properties del destino, defina los siguientes campos en los valores proporcionados:
    Identificador
    TARGET_OBJECT_DETECTION
    Estrategia de integración
    Insertar
    Activo de datos
    Seleccione el activo de almacén de datos que ha creado en 8.2 Creación de un activo de datos para el destino.
    Conexión
    Conexión por Defecto
    Esquema
    USER1
    Entidad de datos
    OBJETOS
    Ubicación de Almacenamiento en Zona Intermedia
    Proporcione una ubicación de almacenamiento de objetos en la que se puedan crear los archivos intermedios cuando se ejecute el flujo de datos:
    Activo de datos
    autos-fuente de datos
    Conexión
    Conexión por Defecto
    En Esquema
    Seleccione la ubicación de Object Storage data-staging
  6. Asigne la salida de la función a los campos correctos en la tabla de la base de datos de destino. Utilice las asignaciones de la siguiente tabla:
    Asignación de salida de función
    Nombre Asignación
    RECORD_ID RECORD_ID
    IMAGE_NAME Image_Name
    DATE_TAKEN DATE_TAKEN
    IMAGE_LOCATION Image_Location
    OBJECT_NAME nombre
    OBJECT_CONFIDENCE confianza
    VERTEX X1 x0
    VERTEX Y1 y0
    VERTEX X2 x1
    VERTEX Y2 y1
    VERTEX X3 x2
    VERTEX Y3 y2
    VERTEX X4 x3
    VERTEX Y4 y3
    Las asignaciones deben ser similares:

    Asignaciones de uno a cuatro Las cuatro primeras asignaciones que se muestran en la aplicación

    Asignaciones de cinco a ocho Las cuatro segundas asignaciones que se muestran en la aplicación

    Asignaciones de nueve a doce Las cuatro terceras asignaciones que se muestran en la aplicación

    Asignaciones trece y catorce Las dos asignaciones finales que se muestran en la aplicación

8.8 Ejecución de Data Flow

Ejecute el flujo de datos para rellenar la base de datos de destino.

Complete la 8.7 Asignación de la salida a la tabla del almacén de datos antes de realizar esta tarea.

  1. En el menú Acciones rápidas del espacio de trabajo Menú Acciones, seleccione Crear tarea de integración.

    Como parte del proceso de creación, seleccione el proyecto y el flujo de datos que ha creado en 8.3 Creating a Data Flow.

  2. En el espacio de trabajo, seleccione Aplicaciones.
  3. Seleccione Crear aplicación.
  4. Introduzca un Nombre.
  5. Haga clic en Crear.
  6. En el espacio de trabajo, seleccione Proyectos.
  7. Seleccione el proyecto que ha creado en 8.3 Creating a Data Flow.
  8. En el menú Detalles, seleccione Tareas.
  9. Para la tarea que ha creado en el paso 1, seleccione Ejecutar en el menú del icono de acción.
  10. Seleccione Publicar en aplicación.
  11. Seleccione la aplicación que ha creado en el paso 3.
  12. En la aplicación, seleccione la tarea de integración.
  13. Seleccione Ejecutar en el menú del icono de acción.
    Puede seguir el progreso de la ejecución desde la página Ejecuciones. Si se produce algún error, compruebe los logs para comprender el motivo.
  14. Cuando la ejecución finalice correctamente, busque en la base de datos si las tablas se han rellenado correctamente. ejecute el siguiente SQL:
    SELECT * FROM USER1.OBJECTS;

9. Visualización de datos en Analytics Cloud

Muestre los datos que ha creado con Analytics Cloud.

Necesita acceso a Analytics Cloud y crear una instancia de Analytics Cloud.

9.1 Creación de una instancia de Analytics Cloud

Siga estos pasos para crear una instancia de Analytics Cloud.

Complete 8. Utilice un flujo de datos en Data Integration antes de intentar esta tarea.

  1. En el menú de navegación de la consola, seleccione Análisis y AI.
  2. Seleccione Analytics Cloud.
  3. Seleccione el compartimento,
  4. Seleccione Crear instancia.
  5. Introducir un Nombre. No introducir información confidencial
  6. Seleccione 2 OCPUs. Los demás parámetros de configuración se mantienen como valores por defecto.
  7. Haga clic en Crear.

9.2 Creación de una Conexión al Almacén de Datos

Siga estos pasos para configurar una conexión de la instancia de Analytics Cloud al almacén de datos.

Complete 9.1 Creación de una instancia de Analytics Cloud antes de intentar esta tarea.

  1. En la página de detalles, haga clic en la Página inicial de Analytics. Conéctese a la instancia de Analytics Cloud.
  2. Seleccione Crear juego de datos.
  3. Seleccione Crear conexión.
  4. Seleccione Oracle Autonomous Data Warehouse.
  5. Introduzca las credenciales de conexión para la base de datos de destino que ha creado en 7.3 Preparing the Target Database.
    Si no recuerda cómo obtener la cartera, consulte cómo descargar una cartera para obtener más información.

9.3 Creación de un juego de datos

Siga estos pasos para crear un conjunto de datos.

Complete 9.2 Creación de una Conexión al Almacén de Datos antes de intentar esta tarea.

  1. Seleccione Datos.
  2. Haga clic en Crear.
  3. Seleccione Crear nuevo juego de datos.
  4. Seleccione el almacén de datos.
  5. Desde la base de datos USER1, arrastre la tabla OBJECTS al lienzo.
  6. Guarde el juego de datos.

9.4 Creación de una visualización

Siga estos pasos para mostrar los datos en Analytics Cloud.

Complete 9.3 Creación de un conjunto de datos antes de realizar esta tarea.

  1. Haga clic en Crear.
  2. Seleccione Libro de Trabajo.
  3. Seleccione el juego de datos que creó en 9.3 Creating a Dataset.
  4. Seleccione Agregar a libro de trabajo.
  5. Seleccione el separador Visualizaciones.
  6. Arrastre una visualización de barra al lienzo.
  7. Vaya a los datos.
  8. Haga clic con el botón derecho en la tabla Mis cálculos.
  9. Seleccione Agregar Cálculo....
  10. Defina Nombre en COUNT OF OBJECTS.
  11. Introduzca COUNT(OBJECT_NAME) en Función.
  12. Arrastre COUNT OF SENTIMENT en el valor (eje Y) de la visualización.
  13. Seleccione OBJECTS > DATE_TAKEN para la categoría (eje X) de la visualización.
  14. Seleccione DATE_TAKEN.
  15. Seleccione Mostrar by...Day.
  16. En Color, seleccione OBJECT_NAME.
    Verá un gráfico similar a: Gráfico de barras que muestra el número de vehículos y ruedas detectados para cada día.