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
ideresourceIdnã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.