Criação de recurso

A criação de um recurso é necessária para definir e agendar a ingestão de dados de um sistema de origem. O procedimento PUBLIC.CREATE_RESOURCE é o ponto de entrada da UI ou da planilha para criar um novo recurso.

Chamar este procedimento requer que o usuário tenha a função do aplicativo ADMIN atribuída.

O processo de criação de recurso consiste em várias fases. Várias das quais são personalizáveis, mas incluem padrões razoáveis. As fases são:

  1. Validação inicial

  2. Validação personalizada

  3. Lógica personalizada antes da criação de um recurso

  4. Criação de definição de ingestão de recurso e processos de ingestão

  5. Lógica personalizada após a criação de um recurso

Validação inicial

A validação inicial é realizada no início do processo de criação do recurso e verifica:

  • Se os dados de entrada fornecidos representam um objeto de definição de ingestão de recurso válido.

  • Se um recurso com id e resourceId não existe.

Validação personalizada

A validação personalizada é executada após a validação inicial e foi projetada para oferecer suporte à lógica específica do conector personalizado. Por exemplo, ele pode ser usado para verificar se um determinado recurso existe em um sistema de origem.

Por padrão, ele invoca PUBLIC.CREATE_RESOURCE_VALIDATE(resource VARIANT), que retorna 'response_code': 'OK'. Ele pode ser substituído usando um script SQL ou usando um CreateResourceHandlerBuilder para fornecer uma implementação personalizada da interface CreateResourceValidator.

Se a validação personalizada retornar um erro, as etapas a seguir não serão executadas e a resposta de erro será retornada do procedimento CREATE_RESOURCE.

Lógica personalizada antes da criação de um recurso

É possível implementar lógica personalizada antes que um recurso seja criado e agendado. Por exemplo, ele pode ser usado para criar uma nova tabela de destino onde os dados de ingestão serão salvos.

Por padrão, ele invoca PUBLIC.PRE_CREATE_RESOURCE(resource VARIANT), que retorna 'response_code': 'OK'. Pode ser sobrescrito através do script SQL ou usando um CreateResourceHandlerBuilder para fornecer implementação personalizada da interface PreCreateResourceCallback.

Se a lógica personalizada retornar um erro, as etapas seguintes não serão executadas e a resposta de erro fornecida será retornada do procedimento CREATE_RESOURCE.

Criação de definição de ingestão de recurso e processos de ingestão

Durante esta etapa, um novo registro é adicionado à tabela STATE.RESOURCE_INGESTION_DEFINITION. Além disso, quando um recurso deve ser habilitado inicialmente (parâmetro enabled igual a true), um novo processo de ingestão é adicionado para cada configuração de ingestão fornecida. Os processos de ingestão são criados com status SCHEDULED, o que significa que a ingestão começará mais tarde. Se o sinalizador enabled for definido como false, nenhum processo de ingestão será criado e o procedimento ENABLE_RESOURCE deverá ser chamado para habilitar a ingestão.

Lógica personalizada após a criação de um recurso

A lógica personalizada pode ser especificada depois que um recurso for criado e agendado. Por exemplo, ele pode ser usado para criar uma nova tabela de destino onde os dados de ingestão serão salvos.

Por padrão, ele invoca PUBLIC.POST_CREATE_RESOURCE(id VARCHAR), que retorna 'response_code': 'OK'. Pode ser sobrescrito através do script SQL ou usando um CreateResourceHandlerBuilder para fornecer implementação personalizada da interface PostCreateResourceCallback.

Se a lógica personalizada retornar um erro, a resposta de erro fornecida será retornada do procedimento CREATE_RESOURCE, mas a criação da definição de ingestão de recurso e os processos de ingestão não serão revertidos.

Resposta

Resposta bem-sucedida

Quando bem-sucedido, o procedimento retorna uma resposta semelhante a:

{
  "response_code": "OK",
  "id": "<new resource ingestion definition id>"
}
Copy

O id retornado na resposta é um ID de definição de ingestão de recurso e pode ser usado para habilitar, desabilitar ou atualizar o recurso posteriormente.

Resposta de erro

Em caso de erro, o procedimento retorna uma resposta semelhante a:

{
  "response_code": "<ERROR_CODE>",
  "message": "<error message>"
}
Copy

Possíveis códigos de erro incluem:

  • INVALID_INPUT – Os argumentos do procedimento fornecido são inválidos e não é possível criar um objeto de recurso válido ou um recurso com o ID fornecido já existe.

  • CREATE_RESOURCE_ERROR – Algo inesperado aconteceu ao criar a nova definição de ingestão de recurso ou ao criar processos de ingestão. Todas as alterações são revertidas.