Integrando o Vision com o Oracle Analytics Cloud (OAC)

Crie um fluxo do Data Integration que use o Vision SDK para detectar objetos em imagens e projetar essas informações em uma tabela em um data warehouse. Esses dados de saída são usados pelo Oracle Analytics Cloud para criar visualizações e encontrar padrões.

Este é o fluxo de alto nível do sistema entre o Vision e o OAC: O fluxo entre o Vision e o OAC, começando com o ativo de dados de entrada como um arquivo CSV no Data Integration. Isso é processado e transmitido como os dados de saída para uma tabela de objetos ADW que é usada como origem do OAC.

Antes de Começar

Para seguir este tutorial, você deve ser capaz de criar redes VCN, funções e gateways de API e usar o Data Integration e o Vision.

Converse com seu administrador sobre as políticas necessárias.

Configurando as Políticas Obrigatórias

Siga estas etapas para configurar as políticas necessárias.

  1. No menu de navegação da Console, selecione Identidade e Segurança.
  2. Em Identidade, selecione Políticas.
  3. Selecione Criar Política.
  4. No painel Criar Política, preencha Nome e Descrição.
    Para Nome, digite um nome sem espaços. Você só pode usar caracteres alfanuméricos, hifens, pontos e sublinhados.

    Para Descrição, digite uma descrição que ajude outros usuários a saber a finalidade desse conjunto de políticas.

  5. No Policy Builder, use o editor manual para adicionar as seguintes instruções:
    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. Selecione Criar.

1. Criar uma Rede Virtual na Nuvem

Crie uma VCN para servir como home da função sem servidor e do gateway de API criado posteriormente no tutorial.

1.1 Criando uma VCN com Acesso à Internet

Siga estas etapas para criar uma VCN com acesso à internet.

  1. No menu de navegação, selecione Networking.
  2. Selecionar Redes Virtuais na Nuvem.
  3. Clique em Start VCN Wizard.
  4. Selecione Criar VCN com Conectividade de Internet.
  5. Selecione Iniciar Assistente de VCN.
  6. Informe um nome para a VCN. Evite digitar informações confidenciais.
  7. Selecione Próximo.
  8. Selecione Criar.

1.2 Acessando a sua VCN pela Internet

Você deve adicionar uma nova regra de entrada com monitoramento de estado para a sub-rede regional pública a fim de permitir o tráfego na porta 443.

Conclua 1.1 Criando uma VCN com Acesso à Internet antes de tentar esta tarefa.

O Gateway de API se comunica na porta 443, que não é aberta por padrão.

  1. No menu de navegação, selecione Networking.
  2. Selecionar Redes Virtuais na Nuvem.
  3. Selecione a VCN criada em 1.1 Criando uma VCN com Acesso à Internet.
  4. Selecione o nome da sub-rede regional pública.
  5. Em Listas de Segurança, selecione Default Security List.
  6. Selecione Add Ingress Rules.
  7. Atualize os seguintes campos com estes valores:
    • Tipo de Origem: CIDR
    • CIDR de Origem: 0.0.0.0/0
    • Protocolo IP: TCP
    • Intervalo de Portas de Origem: All
    • Faixa de Portas de Destino: 443
  8. Selecione Adicionar Regras de Entrada para adicionar a nova regra à lista de segurança padrão.

2. Criando um Gateway de API

Um Gateway de API permite agregar todas as funções criadas em um único ponto final que pode ser consumido pelos usuários.

Complete 1. Crie uma Rede Virtual na Nuvem antes de tentar esta tarefa.

  1. No menu de navegação da Console, selecione Developer Services.
  2. Selecione Gateways.
  3. Selecione Criar Gateway.
  4. Digite um Nome para o gateway. Não insira informações confidenciais.
  5. Defina o Tipo do gateway como Public.
  6. Selecione o Compartimento para a criação dos recursos do Gateway de API.
  7. Selecione o nome da VCN a ser usada com o Gateway de API. Use o nome da VCN criada na seção 1. Crie uma Rede Virtual na Nuvem.
  8. Selecione o nome da sub-rede regional na VCN. Defina-a como a Sub-rede Pública que você alterou.
  9. Selecione Criar Gateway.

    Quando o Gateway de API é criado, ele é mostrado como Active na lista da página Gateways.

3. Criar uma Função de Enriquecimento

Siga estas etapas para criar uma função de enriquecimento que possa ser chamada no Oracle Cloud Infrastructure Data Integration.

Crie uma função sem servidor que só seja executada sob demanda. A função está em conformidade com o esquema necessário para ser consumido pelo Data Integration. A função sem servidor chama a API do Vision por meio do Python SDK.

3.1 Criando um Aplicativo

Para adicionar uma função, primeiro precisamos criar um aplicativo.

Complete 2. Criando um Gateway de API antes de tentar esta tarefa.

  1. Na Console, no menu de navegação, selecione Developer Services.
  2. Selecione Aplicativos.
  3. Selecione Criar Aplicativo.

    Você pode pensar em um aplicativo como um contexto limitado onde várias funções podem residir.

  4. Informe um Nome. Não insira informações confidenciais.
  5. Selecione a VCN criada na seção 1. Crie uma Rede Virtual na Nuvem.
  6. Selecione a sub-rede pública da VCN
  7. Selecione Criar.
  8. Quando o aplicativo for criado, abra-o e clique em Conceitos Básicos.

    Para que ele possa implantar funções no compartimento e no registro de contêiner corretos, configure a CLI.

  9. Selecione Cloud Shell Setup.
  10. Selecione Iniciar Cloud Shell.
    Isso inicia uma máquina virtual Linux com todas as configurações para configurar funções.
  11. Siga as etapas de 1 a 7 em Configurar CLI fn no Cloud Shell ou consulte o vídeo Criar Funções sem Servidor no Oracle Cloud.
    Observação

    Se a etapa 4 não estiver clara, consulte Criando um Contexto da CLI do Fn Project para Conexão com o Oracle Cloud Infrastructure na documentação do Functions. Você pode selecionar qualquer termo para OCIR-REPO, é um prefixo usado como nome do registro do contêiner para implantar a função.

3.2 Criando uma Função

Siga estas etapas para criar uma função no seu aplicativo.

Conclua 3.1 Criando um Aplicativo antes de tentar esta tarefa.

A maneira mais rápida é fazer com que o sistema gere um modelo Python.

  1. Execute o seguinte comando no cloud shell:
    fn init --runtime python object-detection
    cd object-detection
    Ele gera três arquivos:
    • func.yaml
    • requirements.txt
    • func.py
  2. Altere cada um dos três arquivos com o seguinte conteúdo:
Func.yaml

Conteúdo 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

Conteúdo 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

Conteúdo 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 Implantando a Função

Implantar a função no seu aplicativo

Conclua 3.2 Criando uma Função antes de tentar esta tarefa.

  1. Execute o seguinte comando do cloud shell:
    fn -v deploy app <app_name>
  2. Confirme se a função está registrada no seu registro de contêiner.
    1. No menu de navegação da Console, selecione Developer Services.
    2. Selecione Container Registry. A função está visível no registro do contêiner.

3.4 Chamando a Função

Teste a função chamando-a.

Conclua a 3.3 Implantando a Função antes de tentar esta tarefa.

O Oracle Cloud Infrastructure Data Integration suporta funções de chamada, em que o payload de dados é uma string codificada com base 64 única que contém os registros a serem processados e um conjunto de parâmetros. Por exemplo:
{"data":"eyJpZCI6MSwiaW5wdXRUZXh0IjoiaHR0cHM6Ly9pbWFnZS5jbmJjZm0uY29tL2FwaS92MS9pbWFnZS8xMDYxOTYxNzktMTU3MTc2MjczNzc5MnJ0czJycmRlLmpwZyJ9", "parameters":{"column":"inputText"}}
Os dados codificados são a versão codificada base 64 de um conjunto de formatos de Linhas JSON (cada linha é um JSON para cada registro). Cada registro tem um ID usado para associar a saída. A decodificação da string de exemplo fornece:
{"id":1,"inputText":"https://<server-name>/api/v1/image/106196179-1571762737792rts2rrde.jpg"}
Teste a função com o seguinte comando:
echo '{"data":"<data-payload>", "parameters":{"column":"inputText"}}' | fn invoke <application-name> object-detection
A saída é semelhante a:
[{"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. Adicionando uma Política de Funções

Crie uma política para que a função possa ser usada com o Vision.

Complete 3. Crie uma Função de Aprimoramento antes de tentar esta tarefa.

  1. No menu de navegação da Console, selecione Identity & Security.
  2. Selecione Grupos Dinâmicos.
  3. Crie um grupo dinâmico com a seguinte regra:
    ALL {resource.type = 'fnfunc', resource.compartment.id = '<compartment-id>'}
  4. Adicione as seguintes instruções à 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. Criando um Espaço de Trabalho de Integração de Dados do Oracle Cloud Infrastructure

Antes de usar o Data Integration, certifique-se de ter os direitos de usar o recurso.

Complete 4. Adicionando uma Política do Serviço Functions antes de tentar esta tarefa.

Crie as políticas que permitem usar o Data Integration.

  1. No menu de navegação da Console, selecione Análise e AI.
  2. Selecione Integração de Dados.
  3. Selecione o compartimento do seu espaço de trabalho.
  4. Selecione Criar Espaço de Trabalho.
  5. Dê ao espaço de trabalho um Nome. Evite digitar informações confidenciais.
  6. Certifique-se de que a opção Ativar rede privada esteja selecionada.
  7. Selecione uma VCN no compartimento.
  8. Certifique-se de que a sub-rede selecionada seja a sub-rede privada.
  9. Selecione Criar.
    O espaço de trabalho leva alguns minutos para ser criado.
  10. Quando o espaço de trabalho for criado, confirme se ele está no estado Active.

6. Adicionando Políticas de Integração de Dados

Atualize sua política para que você possa usar o Data Integration.

Complete 5. Criando um Espaço de Trabalho do Oracle Cloud Infrastructure Data Integration antes de tentar esta tarefa.

  1. Siga as etapas em Configurando as Políticas Obrigatórias para abrir o Criador de Políticas.
  2. Adicione as seguintes instruções à 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. Preparar as Origens de Dados e os Links

Você está usando imagens de estacionamento de carro junto com a data em que as imagens foram tiradas como dados de amostra.

Reúna 10 imagens (ou mais) de carros estacionados como a fonte de dados na qual você executa a análise de detecção de objetos usando o Data Integration e o Vision.

7.1 Carregando Dados de Amostra

Carregue os dados de amostra das imagens do carro estacionado no seu bucket.

Complete 6. Adicionando Políticas do Serviço Data Integration antes de tentar esta tarefa.

  1. Encontre 10 imagens de carros estacionados, localmente ou on-line.
  2. No menu de navegação da Console, selecione Armazenamento.
  3. Selecione Buckets.
  4. Selecione um bucket existente ou crie um novo.
  5. Na página de detalhes Buckets, em Objetos, selecione Fazer Upload.
  6. Arraste para a zona de soltura os 10 arquivos de imagem reunidos na etapa 1.
  7. Selecione Fazer Upload.
  8. Crie um arquivo CSV com uma tabela de quatro colunas e 10 linhas. Os nomes das colunas são ID do registro, Nome da imagem, Data de obtenção e Local da imagem. Preencha a coluna ID do Registro de 1 a 10.
    Arquivo de Dados de Amostra Tabela de quatro colunas e dez linhas. Os nomes das colunas são ID do registro, Nome da imagem, Data de obtenção e Local da imagem.
  9. Atribua o nome cars.csv ao arquivo.
  10. Preencha a tabela fornecendo os nomes das imagens, a data de obtenção e o local da imagem.
    O local da imagem pode ser encontrado selecionando o menu Ações (três pontos) da imagem na Console ao exibir o bucket. Selecione Exibir Detalhes do Objeto e copie o caminho do URL para cars.csv.
  11. Faça upload de cars.csv para o bucket.
  12. Selecione Fechar.

7.2 Criando um Bucket de Preparação

O Data Integration precisa de um local de preparação para fazer dump de arquivos intermediários, antes de publicar dados em um data warehouse.

Conclua 7.1 Carregando Dados de Amostra antes de tentar esta tarefa.

  1. No menu de navegação da Console, selecione Armazenamento.
  2. Selecione Buckets.
  3. Selecione Criar Bucket.
  4. Dê a ele um Nome adequado, por exemplo, data-staging. Evite digitar informações confidenciais.
  5. Selecione Criar.
  6. Aceite todos os valores padrão.

7.3 Preparando o Banco de Dados de Destino

Configure o banco de dados de destino do Autonomous Data Warehouse para adicionar um esquema e uma tabela.

Conclua 7.2 Criando um Bucket de Preparação antes de tentar esta tarefa.

  1. No menu de navegação da Console, selecione Oracle Database.
  2. Selecione Autonomous Data Warehouse.
  3. Selecione o seu Compartimento.
  4. Selecione Create Autonomous Database.
  5. Insira um Nome para Exibição. Evite digitar informações confidenciais.
  6. Informe o Nome do Banco de Dados. Evite digitar informações confidenciais.
  7. Defina Tipo de carga de trabalho como Data warehouse.
  8. Crie o nome de usuário e a senha para o administrador do banco de dados.
  9. Defina Tipo de acesso como Secure access from anywhere.
  10. Defina Autenticação como mTLS.
  11. Defina Tipo de licença como BYOL.
  12. Selecione Create Autonomous Database.
  13. Quando seu banco de dados tiver sido provisionado, na página de detalhes do Banco de Dados, selecione Database Actions.
  14. Faça log-in com as credenciais fornecidas na etapa 8.
  15. Selecione Development.
  16. Selecione SQL.
  17. Crie um usuário Colaborador executando o seguinte SQL:
    CREATE USER USER1 IDENTIFIED BY "<enter user1 password here>";
    GRANT DWROLE TO USER1;
    ALTER USER USER1 QUOTA 200M ON DATA;

    Os Autonomous Databases vêm com uma atribuição de banco de dados predefinida chamada DWROLE. Ele fornece os privilégios comuns para um desenvolvedor de banco de dados ou cientista de dados executar análises em tempo real. Dependendo dos requisitos de uso, você também pode precisar conceder privilégios a outros usuários.

7.4 Criando uma Tabela para Projetar os Dados Analisados

Crie uma tabela para armazenar todas as informações sobre os objetos detectados.

Conclua a 7.3 Preparando o Banco de Dados de Destino antes de tentar esta tarefa.

  1. Navegue até o painel de controle Database Actions se ainda não estiver lá.
  2. Execute o seguinte script:
    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. Usar um Fluxo de Dados no Data Integration

Crie os componentes necessários para criar um fluxo de dados no Data Integration.

O fluxo de dados é: O fluxo começa com o arquivo cars.csv, uma expressão e uma função de detecção de objetos funcionam nele e a saída é enviada para o armazenamento de objetos de destino.

Todos os recursos de armazenamento subjacentes foram criados em capítulos anteriores. No Data Integration, você cria os ativos de dados para cada um dos elementos do fluxo de dados.

8.1 Criando um Ativo de Dados para sua Origem e Tabela Intermediária

Crie um ativo de dados para seus dados de origem e de preparação.

Conclua 7. Prepare as Origens de Dados e os Sinks antes de tentar esta tarefa.

  1. No menu de navegação da Console, selecione Análise e AI.
  2. Selecione Integração de Dados.
  3. Na home page do espaço de trabalho criado em 5. Criando um Espaço de Trabalho do Oracle Cloud Infrastructure Data Integration, selecione Criar Ativo de Dados no mosaico Ações Rápidas.
  4. Na página Criar Ativo de Dados, preencha os seguintes campos:
    1. Em Nome, digite cars-data-source.
    2. Para Descrição, digite algum texto que ajude você ou outros usuários a encontrar o ativo de dados.
    3. Selecione Oracle Object Storage como o Tipo.
    4. Informe o OCID do Tenant. Se você precisar localizar as informações da sua tenancy, elas estarão disponíveis se você selecionar o ícone Perfil da Console.
    5. Especifique a Região do OCI.
  5. Selecione Testar Conexão.
  6. Selecione Criar.
  7. (Opcional) Se a localização do seu bucket de preparação for diferente, repita as etapas de 3 a 6 para criar um ativo de dados para preparação.
    Observação

    O nome do local de preparação deve estar em maiúsculas.

8.2 Criando um Ativo de Dados para seu Destino

Crie um ativo de dados para o data warehouse de destino.

Conclua 8.1 Criando um Ativo de Dados para sua Origem e Tabela Intermediária antes de tentar esta tarefa.

  1. No menu de navegação da Console, selecione Análise e AI.
  2. Selecione Integração de Dados.
  3. Na home page do espaço de trabalho criado em 5. Criando um Espaço de Trabalho do Oracle Cloud Infrastructure Data Integration, selecione Criar Ativo de Dados no mosaico Ações Rápidas.
  4. Na página Criar Ativo de Dados, preencha os seguintes campos:
    1. Para Nome, digite data-warehouse.
    2. Embora o Identificador seja gerado automaticamente com base no Nome, você pode alterar o valor.
    3. Para Descrição, digite algum texto que ajude você ou outros usuários a encontrar o ativo de dados.
    4. Selecione Oracle Autonomous Data Warehouse como o Tipo.
    5. Selecione Selecionar Banco de Dados.
    6. Informe o OCID do Tenant. Se você precisar localizar as informações da sua tenancy, elas estarão disponíveis se você selecionar o ícone Perfil da Console.
    7. Selecione o Compartimento.
    8. Selecione o ADW criado em 7.3 Preparando o Banco de Dados de Destino.
    9. Especifique o Nível TNS. Defina-o como o valor apropriado.
    10. Selecione o Nome do Serviço para estabelecer conexão com o ADW.
  5. Na seção Conexão, adicione as seguintes informações:
    1. Para Nome, selecione o valor padrão, embora você possa renomeá-lo.
    2. Para Descrição, digite algum texto que ajude você ou outros usuários a encontrar o ativo de dados.
    3. Defina Nome do Usuário como USER1.
    4. Informe a Senha do usuário.
  6. Selecione Testar Conexão para verificar as credenciais informadas.
  7. Se a etapa 6 for bem-sucedida, selecione Criar.

8.3 Criando um Fluxo de Dados

Crie um fluxo de dados no serviço Data Integration para ingerir os dados do arquivo.

Conclua 8.2 Criando um Ativo de Dados para seu Destino antes de tentar esta tarefa.

  1. Na página de detalhes do projeto de laboratório visual, selecione Fluxos de Dados.
  2. Selecione Criar Fluxo de Dados.
  3. No designer de fluxo de dados, selecione o painel Propriedades.
  4. Para Nome, digite lab-data-flow.
  5. Selecione Criar.

8.4 Adicionando uma Origem de Dados

Agora adicione uma origem de dados ao seu fluxo de dados.

Conclua a 8.3 Criando um Fluxo de Dados antes de tentar esta tarefa.

Depois de criar o fluxo de dados em 8.3 Criando um Fluxo de Dados, o designer permanece aberto e você pode adicionar uma origem de dados a ele usando as seguintes etapas:

  1. Arraste o ícone de origem para a área de espaço de trabalho do fluxo de dados.
  2. Selecione a origem.
  3. Em Propriedades, selecione a guia Detalhes.
  4. Atualize as propriedades da seguinte forma:
    1. Em Identificador, digite CARS_CSV.
    2. Em Detalhes, selecione o ativo de dados de origem que você criou em 8.1 Criando um Ativo de Dados para sua Origem e Tabela Intermediária.
    3. Defina Conexão como padrão.
    4. Em Esquema, selecione o bucket que contém o arquivo de dados cars.csv.
    5. Em Entidade de dados, selecione o arquivo de dados cars.csv.
    6. Defina Tipo de arquivo como CSV.
  5. Navegue até Dados. Os dados aparecem depois de um ou dois minutos.

8.5 Adicionando uma Expressão

Adicione uma expressão para alterar o formato de ID para inteiro e o formato do campo date_taken para uma data.

Conclua 8.4 Adicionando uma Origem de Dados antes de tentar esta tarefa.

  1. Clique com o botão direito do mouse no ícone do menu de ação do campo <data source name>.id.
  2. Selecione Alterar Tipo de Dados.
  3. Informe ID.
  4. Em Tipo de Dados, selecione integer.
  5. Selecione Aplicar.
    Uma nova etapa de expressão é criada no fluxo de dados do usuário.
  6. Clique com o botão direito do mouse no ícone do menu de ação do campo <data source name>.date_taken.
  7. Selecione Alterar Tipo de Dados.
  8. Em Tipo de Dados, selecione Date.
  9. Certifique-se de que a formatação da data corresponda ao que está no arquivo CSV (yyyy-MM-dd).
  10. Defina Nome como DATE_TAKEN.
  11. Selecione a guia Dados da expressão para ver os novos campos.
    Campos de Dados Os quatro campos de dados para a expressão com células preenchidas.

8.6 Adicionando uma Função

Adicione uma função ao Fluxo de Dados para extrair objetos das imagens de entrada.

Conclua 8.5 Adicionando uma Expressão antes de tentar esta tarefa.

  1. Na barra de ferramentas de operadores, arraste o operador de Função (fn) para a tela.
  2. Conecte a saída da sua expressão como entrada para a função.
  3. Selecione a função.
  4. No painel Propriedades, navegue até Detalhes.
  5. Altere o identificador para OBJECT_DETECTION.
  6. Selecione Selecionar para selecionar uma função.
  7. Selecione o aplicativo criado em 3.1 Criando um Aplicativo.
  8. Selecione a função object-detection.
  9. Selecione OK para confirmar as alterações.
  10. Adicione ou edite as propriedades. Selecione Adicionar Propriedade para adicionar uma propriedade. Use os seguintes valores:
    Atributos de Função
    Nome Tipo Tipo de Dados Tamanho Dimensionar Valor
    dados Atributo de entrada VARCHAR 2,000
    coluna Configuração da Função VARCHAR dados
    BATCH_SIZE Configuração da Função NUMERIC/VARCHAR (padrão) 1
    nome Atributo de saída VARCHAR 200
    confiança Atributo de saída DECIMAL 8 7
    x0 Atributo de saída FLOAT 64
    y0 Atributo de saída FLOAT 64
    x1 Atributo de saída FLOAT 64
    y1 Atributo de saída FLOAT 64
    x2 Atributo de saída FLOAT 64
    y2 Atributo de saída FLOAT 64
    x3 Atributo de saída FLOAT 64
    y3 Atributo de saída FLOAT 64

8.7 Mapeando a Saída para a Tabela do Data Warehouse

Mapeie a saída da análise de sentimento para a Tabela de Data Warehouse.

Conclua 8.6 Adicionando uma Função antes de tentar esta tarefa.

  1. Navegue até a guia Mapear.
  2. Arraste image_location na tabela de atributos de origem para a entrada da função de campo data.
  3. Na barra de ferramentas do operador, arraste o operador Destino para a tela.
  4. Conecte a saída da função de detecção de objetos à entrada do operador de destino.
  5. Na guia de propriedades de detalhes do destino, defina os seguintes campos para os valores fornecidos:
    Identificador
    TARGET_OBJECT_DETECTION
    Estratégia de Integração
    Inserir
    Ativo de Dados
    Selecione o ativo de data warehouse criado em 8.2 Criando um Ativo de Dados para seu Destino.
    Conexão
    Conexão padrão
    Esquema
    USER1
    Entidade de Dados
    OBJETOS
    Localização de Teste
    Forneça um local de armazenamento de objetos no qual os arquivos intermediários possam ser criados quando o fluxo de dados for executado:
    Ativo de Dados
    fonte de dados de carros
    Conexão
    Conexão padrão
    No Esquema
    Selecione o local do armazenamento de objetos data-staging
  6. Mapeie a saída da função para os campos corretos na tabela do banco de dados de destino. Use os mapeamentos na seguinte tabela:
    Mapa de Saída da Função
    Nome Mapeamento
    RECORD_ID RECORD_ID
    IMAGE_NAME Image_Name
    DATE_TAKEN DATE_TAKEN
    IMAGE_LOCATION Image_Location
    OBJECT_NAME nome
    OBJECT_CONFIDENCE confiança
    VÉRTICE X1 x0
    VÉRTICE Y1 y0
    VÉRTICE X2 x1
    VÉRTICE Y2 y1
    VÉRTICE X3 x2
    VÉRTICE Y3 y2
    VÉRTICE X4 x3
    VÉRTICE Y4 y3
    Os mapeamentos devem ter a seguinte aparência:

    Mapeamentos de Um a Quatro Os primeiros quatro mapeamentos mostrados no aplicativo

    Mapeamentos de Cinco a Oito Os quatro segundos mapeamentos mostrados no aplicativo

    Mapeamentos Nove para Doze Os três quatro mapeamentos mostrados no aplicativo

    Mapeamentos Treze e Quatorze Os dois últimos mapeamentos mostrados no aplicativo

8.8 Executando o Serviço Data Flow

Execute o fluxo de dados para preencher o banco de dados de destino.

Conclua a 8.7 Mapeando a Saída para a Tabela do Data Warehouse antes de tentar esta tarefa.

  1. No menu Ações Rápidas do seu espaço de trabalho (três pontos), selecione Criar Tarefa de Integração.

    Como parte do processo de criação, selecione o projeto e o fluxo de dados que você criou em 8.3 Creating a Data Flow.

  2. No espaço de trabalho, selecione Aplicativos.
  3. Selecione Criar Aplicativo.
  4. Informe um Nome.
  5. Selecione Criar.
  6. No espaço de trabalho, selecione Projetos.
  7. Selecione o projeto criado em 8.3 Creating a Data Flow.
  8. No menu Detalhes, selecione Tarefas.
  9. Para a tarefa criada na etapa 1, selecione Executar no menu do ícone de ação.
  10. Selecione Publicar no Aplicativo.
  11. Selecione o aplicativo criado na etapa 3.
  12. No aplicativo, selecione a tarefa de integração.
  13. Selecione Executar no menu do ícone de ação.
    Você pode seguir o andamento da execução na página Execuções. Se ocorrer algum erro, verifique os logs para ajudar a entender o motivo.
  14. Quando a execução terminar com sucesso, procure no banco de dados para ver se as tabelas estão preenchidas corretamente. execute o seguinte SQL:
    SELECT * FROM USER1.OBJECTS;

9. Visualizar os Dados no Analytics Cloud

Exiba os dados criados usando o Analytics Cloud.

Você precisa de acesso ao Analytics Cloud e criar uma instância do Analytics Cloud.

9.1 Criando uma Instância do Analytics Cloud

Siga estas etapas para criar uma instância do Analytics Cloud.

Complete o 8. Use um Fluxo de Dados no Data Integration antes de tentar esta tarefa.

  1. No menu de navegação da Console, selecione Análise e AI.
  2. Selecione Analytics Cloud.
  3. Selecione o Compartimento,
  4. Selecione Criar Instância.
  5. Informe um Nome. Não inserir informações confidenciais
  6. Selecione 2 OCPUs. Os outros parâmetros de configuração são mantidos como valores padrão.
  7. Selecione Criar.

9.2 Criando uma Conexão com o Data Warehouse

Siga estas etapas para configurar uma conexão da sua instância do Analytics Cloud com seu data warehouse.

Conclua 9.1 Criando uma Instância do Analytics Cloud antes de tentar esta tarefa.

  1. Na página de detalhes, clique em Home Page do Analytics. Acesse sua instância do Analytics Cloud.
  2. Selecione Criar Conjunto de Dados.
  3. Selecione Criar Conexão.
  4. Selecione Oracle Autonomous Data Warehouse.
  5. Informe as credenciais de log-in do banco de dados de destino criado em 7.3 Preparando o Banco de Dados de Destino.
    Se você não se lembrar de como obter a wallet, veja como Fazer Download de uma Wallet para obter mais informações.

9.3 Criando um Conjunto de Dados

Siga estas etapas para criar um conjunto de dados:

Conclua 9.2 Criando uma Conexão com o Data Warehouse antes de tentar esta tarefa.

  1. Selecione Dados.
  2. Selecione Criar.
  3. Selecione Create a New Dataset.
  4. Selecione seu data warehouse.
  5. No banco de dados USER1, arraste a tabela OBJECTS para a tela.
  6. Salve seu conjunto de dados.

9.4 Criando uma Visualização

Siga estas etapas para exibir seus dados no Analytics Cloud.

Conclua 9.3 Creating a Dataset antes de tentar esta tarefa.

  1. Selecione Criar.
  2. Selecione Pasta de Trabalho.
  3. Selecione o conjunto de dados criado em 9.3 Creating a Dataset.
  4. Selecione Adicionar à Pasta de Trabalho.
  5. Selecione a guia Visualizações.
  6. Arraste uma visualização de barra para a tela.
  7. Vá para os dados.
  8. Clique com o botão direito do mouse na tabela Meus cálculos.
  9. Selecione Adicionar Cálculo....
  10. Defina Nome como COUNT OF OBJECTS.
  11. Digite COUNT(OBJECT_NAME) em Função.
  12. Arraste COUNT OF SENTIMENT no Valor (eixo Y) da visualização.
  13. Selecione OBJECTS > DATE_TAKEN para a Categoria (eixo X) da visualização.
  14. Selecione DATE_TAKEN.
  15. Selecione Mostrar by...Day.
  16. Para Cor, selecione OBJECT_NAME.
    Você verá um gráfico semelhante a: Gráfico de barras mostrando o número de carros e rodas detectados para cada dia.