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:
Validação inicial
Validação personalizada
Lógica personalizada antes da criação de um recurso
Criação de definição de ingestão de recurso e processos de ingestão
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
eresourceId
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>" }
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>" }
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.