Integrar o Oracle Analytics com o OCI Functions

Integre as funções do Oracle Cloud Infrastructure (OCI) ao Oracle Analytics para que possa utilizá-las em fluxos de dados e transformar dados.

Sobre o Uso das Funções do OCI no Oracle Analytics

Você pode transformar dados no Oracle Analytics usando as funções criadas no OCI. Por exemplo, você poderá usar uma função de conversão de idioma para converter texto em inglês para espanhol ou alemão.

Registre as funções do OCI no Oracle Analytics primeiro e depois qualquer usuário do Oracle Analytics com privilégios de Administrador de Serviços do BI ou Autor de Conteúdo do DV poderá utilizá-las em fluxos de dados.

Sobre a Configuração de Funções do OCI para uso no Oracle Analytics

Crie funções na Console do OCI para que possa usá-las para transformar dados nos fluxos de dados do Oracle Analytics.

Sobre o Registro das Funções do OCI no Oracle Analytics

Ao registrar uma função do OCI no Oracle Analytics, se ela estiver desabilitada na caixa de diálogo Selecionar uma Função, verifique se ela está configurada com a tag oac-compatible e foi chamada com o valor funcMode correto.
Descrição de GUID-6FE05B2C-5352-4953-998F-D967B6BA1891-default.png segue
.png

Sobre a Configuração de Funções do OCI para uso no Oracle Analytics

As funções do OCI que você deseja usar no Oracle Analytics devem ter uma tag oac-compatible e o código de função deve incluir a variável funcMode. Configure estas definições na Console do OCI:

  • oac-compatible - Adicione uma tag de formato livre à função com o nome oac-compatible e defina o valor como true.Descrição de GUID-6DDD2A98-7F8D-45D7-9110-9643C2128A84-default.png segue
    .png
  • funcMode - Inclui a variável funcMode no código de função. O Oracle Analytics envia uma solicitação para registrar uma função do OCI com funcMode=describeFunction e uma solicitação para chamar uma função do OCI com funcMode=executeFunction. A função de handler em func.py deve operar no modo describeFunction ou executeFunction. Isso pode ser feito com base no valor da variável de entrada funcMode da solicitação conforme mostrado abaixo.

    Descrição de GUID-0C335709-DEDC-4655-8A29-F544608DA8B3-default.png segue
    .png

    Aqui está o formato de solicitação e resposta das Funções do OCI no exemplo de Contagem de Palavras em python.

    funcMode = describeFunction

    { "funcMode": "describeFunction"}

    Quando funcMode na solicitação é 'describeFunction', a função deve retornar a definição de função com o status (returnCode e errorMessage), saídas (nome, tipo de dados da coluna de saída), parâmetros (nome, descrição, tipo etc. do parâmetro de entrada), bucketName etc. como objeto JSON no seguinte formato (exemplo de contagem de palavras):

    funcDefinition = {
        "status": {
            "returnCode": 0,
            "errorMessage": ""
        },
        "funcDescription": {
            "outputs": [
                {"name": "word_count", "dataType": "integer"}
            ],
            "parameters": [
                {"name": "textColumn", "displayName": "Text Column",
                 "description": "Choose column to count words", "required": True,
                 "value": {"type": "column"}}
            ],
            "bucketName": "bucket-OCI-FAAS",
            "isOutputJoinableWithInput": True
        }
    }

    Adicione o código a seguir em func.py para retornar funcDefinition quando funcMode na solicitação for 'describeFunction'.

    def handler(ctx, data: io.BytesIO = None):
        response_data = ""
        try:
            body = json.loads(data.getvalue())
            funcMode = body.get("funcMode")
            if funcMode == 'describeFunction':
               response_data = json.dumps(funcDefinition)
        except (Exception, ValueError) as ex:
            response_data = json.dumps(
                {"error": "{0}".format(str(ex))})
        return response.Response(
            ctx, response_data,
            headers={"Content-Type": "application/json"}
        )

    funcMode = executeFunction - Quando funcMode é 'executeFunction', a lógica da função real deve ser executada e a resposta deve ser enviada de volta para o Oracle Analytics com a saída. Quando a função registrada for chamada do fluxo de dados no Oracle Analytics, o objeto de solicitação estará no formato a seguir com o nome da coluna nos argumentos, input(bucketName, fileName, fileExtension, fileName, method & rowID) e output(bucketName, fileName & fileExtension).

    {
        "args":
        {
            "textColumn": "REVIEW"
        },
        "funcMode": "executeFunction",
        "input":
        {
            "bucketName": "bucket-OCI-FAAS",
            "fileExtension": ".csv",
            "fileName": "oac-fn-e99cd4fddb3844be89c7af6ea4bbeb76-input",
            "method": "csv",
            "rowID": "row_id"
        },
        "output":
        {
            "bucketName": "bucket-OCI-FAAS",
            "fileExtension": ".csv",
            "fileName": "oac-fn-e99cd4fddb3844be89c7af6ea4bbeb76-output"
        }
    }

Sobre a Criação de Funções no OCI

Você pode criar funções usando a Console do OCI, a linha de comando (CLI do Projeto Fn) ou a API. Por exemplo, na Console do OCI, clique em Serviços do Desenvolvedor depois em Funções e siga as instruções na tela para criar aplicativos e uma ou mais funções. Para obter detalhes, consulte Criando Funções na Documentação do OCI. Se você estiver criando funções pela primeira vez, siga as etapas no exemplo completo Criando, Implantando e Chamando uma Função Helloworld. Qualquer função que você quiser usar no Oracle Analytics deverá incluir a tag de formato livre oac-compatible=true (consulte Sobre a Configuração de Funções do OCI para uso no Oracle Analytics acima).

Dicas de Criação de Funções na Console do OCI

  • Ativar Logs - Por padrão, os logs são desativados para funções. Para ativar logs para funções, na página Aplicativos, clique em Logs e ative o log fornecido para o Nome do Log. Em Recursos, agora você pode selecionar Explorar Log e fazer drill das entradas de log para depurar e diagnosticar problemas de função.
  • Incluir Dependências - Inclua pacotes dependentes no arquivo requirements.txt para a função.
  • Seguir Regras de Indentação- Siga as regras de indentação do Python ao codificar funções Python.
  • Usar Erros de Resposta de Função - Use os detalhes de erro listados na página Fluxo de Dados para diagnosticar problemas.
  • Testar Funções Localmente Primeiro - Antes de criar uma função no OCI, teste a função localmente no ambiente de desenvolvimento para assegurar que ela esteja correta do ponto de vista sintático e lógico.
  • Testar funções no OCI - Antes de integrar funções com o Oracle Analytics, certifique-se de que você possa implantá-las e chamá-las com sucesso como funções standalone no OCI.
  • Aumentar o Timeout- Por padrão, as funções têm um timeout de 30 segundos. Se necessário, aumente a definição de timeout (por exemplo, altere-a para 300 segundos) na página Editar Função na Console do OCI.
  • Aumentar a Memória- Por padrão, as funções têm um limite de memória de 1024 MB. Se necessário, aumente o limite de memória na página Editar Função na Console do OCI.
  • Otimizar Espaço - Exclua os arquivos não utilizados imediatamente após o uso.
  • Lembre-se da Latência de Rede - Tenha em mente que a latência de rede pode causar um pequeno atraso no processamento geral.

Políticas Obrigatórias para Integrar o OCI Functions com o Oracle Analytics

Para integrar o Oracle Analytics com o OCI Functions, certifique-se de ter as políticas de segurança necessárias.

O usuário do OCI que você especificar na conexão entre o Oracle Analytics Cloud e sua tenancy do OCI deverá ter permissões de leitura, gravação e exclusão no compartimento que contém os recursos do OCI que você deseja usar. Certifique-se de que o usuário do OCI pertença a um grupo de usuários com as seguintes políticas de segurança mínimas do OCI. Ao se conectar a uma tenancy do OCI pelo Oracle Analytics, você pode usar uma chave de API do OCI ou um controlador de recursos.

Observação: No controlador de recursos, para incluir todas as instâncias do Analytics em um compartimento, especifique {request.principal.type='analyticsinstance', request.principal.compartment.id='<compartmentA_ocid> '}, em vez de {request.principal.id='<analytics_instance_ocid>'}.

Tabela 32-1 Políticas de segurança necessárias para a integração do OCI Functions

Políticas da Chave de API Políticas do Controlador de Recursos
Allow group <group_name> to use functions-family in compartment <compartment_name> Allow any-user to use functions-family in compartment <compartment_name> where all {request.principal.id='<analytics_instance_ocid>'}
Allow group <group_name> to read buckets in compartment <compartment_name> Allow any-user to read buckets in compartment <compartment_name> where all {request.principal.id='<analytics_instance_ocid>'}
Allow group <group_name> to manage objects in compartment <compartment_name> where target.bucket.name='<staging_bucket_name>' Allow any-user to manage objects in compartment <compartment_name> where all {request.principal.id='<analytics_instance_ocid>', target.bucket.name='<staging_bucket_name>'}
Allow group <group_name> to read objectstorage-namespaces in tenancy Allow any-user to read objectstorage-namespaces in tenancy where all {request.principal.id='<analytics_instance_ocid>'}

Tabela 32-2 OCI Functions - Políticas de Grupo dinâmico

Política Descrição
Allow dynamic-group <dynamic_group> to manage objects in compartment <compartment_name> where target.bucket.name='<staging_bucket_name>' Fornece acesso ao bucket de preparação para o grupo dinâmico.

Exemplo de regra de correspondência para <dynamic_group>.{resource.type = 'fnfunc', resource.compartment.id = '<compartment_ocid>'}

Observação: <compartment_id> é o OCID do compartimento que contém as funções.

Workflow Típico para Transformar Dados Usando as Funções do OCI

Siga estas tarefas de alto nível na ordem listada abaixo para transformar dados no Oracle Analytics usando as funções do OCI.

Tarefa Descrição Mais Informações

Criar funções no OCI (exige privilégios de desenvolvedor de funções)

Na tenancy do OCI, crie suas funções e certifique-se de que elas estejam em conformidade com os pré-requisitos especificados para uso com o Oracle Analytics.

Sobre a Configuração de Funções do OCI para uso no Oracle Analytics

Atribuir políticas de OCI Certifique-se de que tem as políticas de OCI necessárias para se conectar usando a chave de API ou o controlador de recursos. Políticas Obrigatórias para Integrar o OCI Functions com o Oracle Analytics
Conectar o Oracle Analytics à tenancy do OCI (exige privilégios de administrador ou autor do DV) No Oracle Analytics, crie uma conexão com a tenancy do OCI.

Criar uma Conexão com a Tenancy do OCI

Registrar as funções do OCI no Oracle Analytics (exige privilégios de administrador ou autor do DV) No Oracle Analytics, registre as funções do OCI para que você possa chamá-las nos fluxos de dados.

Registrar as Funções do OCI no Oracle Analytics

Transformar seus dados usando as funções do OCI (exige privilégios de administrador ou autor do DV) Crie um fluxo de dados e use a etapa Aplicar Script Personalizado para chamar uma função do OCI.

Transformar Dados Usando as Funções do OCI

Registrar as Funções do OCI no Oracle Analytics

Registre as funções do OCI no Oracle Analytics para que possa utilizá-las em fluxos de dados para transformar dados. Por exemplo, você poderá registrar uma função de conversão de idioma para que os analistas de dados possam converter texto em inglês para espanhol ou alemão.

  1. No Oracle Analytics, na home page, clique no Menu Página, depois em Registrar Modelo/Função e depois em Funções do OCI.
  2. Na caixa de diálogo Registrar uma Função Personalizada, selecione uma conexão com a tenancy do OCI na qual suas funções estão localizadas.
  3. Na caixa de diálogo Selecionar Aplicativo, selecione o aplicativo que contém as funções do OCI.
    Se não tiver certeza, pergunte à pessoa que criou as funções no OCI.
  4. Na caixa de diálogo Selecionar uma Função, selecione uma função e clique em Registrar.
    Se a função que você quiser usar estiver desabilitada, pergunte ao administrador para ter certeza de que ela esteja configurada para o Oracle Analytics. Consulte Sobre a Configuração de Funções do OCI para uso no Oracle Analytics.
Você pode usar as funções registradas do OCI em fluxos de dados para transformar dados. Para verificar quais funções são registradas, você pode exibir as funções registradas na guia Scripts da página Aprendizado de Máquina (na Home page, clique em Navegador; em seguida, Aprendizado de Máquina e depois Scripts).