Integre as funções do Oracle Cloud Infrastructure (OCI) ao Oracle Analytics para que possa utilizá-las em fluxos de dados e transformar dados.
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.
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.
.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
e defina o valor como true
.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.
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
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.
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. | |
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. | |
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. |
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.