Activer la référence de ressource¶
Objets et procédures de la base de données¶
Les objets de base de données suivants sont créés lorsque le fichier ingestion/resource_management.sql
est exécuté.
PUBLIC.ENABLE_RESOURCE(resource_ingestion_definition_id VARCHAR)¶
Procédure de point d’entrée disponible pour le rôle ADMIN
. Cette procédure appelle la fonction Java EnableResourceHandler.enableResource
.
PUBLIC.ENABLE_RESOURCE_VALIDATE(resource_ingestion_definition_id VARCHAR)¶
Procédure utilisée pour la validation spécifique à un connecteur liée au processus d’activation. Par défaut, elle renvoie 'response_code': 'OK'
. Elle est appelée par DefaultEnableResourceValidator
. Peut être écrasée à la fois en SQL et en Java.
PUBLIC.PRE_ENABLE_RESOURCE(resource_ingestion_definition_id VARCHAR)¶
Procédure utilisée pour ajouter une logique spécifique à un connecteur qui est appelée avant l’activation d’une ressource. Par défaut, elle renvoie 'response_code': 'OK'
. Elle est appelée par DefaultPreEnableResourceCallback
. Peut être écrasée à la fois en SQL et en Java.
PUBLIC.POST_ENABLE_RESOURCE(resource_ingestion_definition_id VARCHAR)¶
Procédure utilisée pour ajouter une logique spécifique à un connecteur qui est appelée après l’activation d’une ressource. Par défaut, elle renvoie 'response_code': 'OK'
. Elle est appelée par DefaultPostEnableResourceCallback
. Peut être écrasée à la fois en SQL et en Java.
Gestionnaire (handler) personnalisé¶
Le gestionnaire (handler) et ses éléments internes peuvent être personnalisés selon les approches suivantes.
Approche de remplacement de procédure¶
Les composants suivants peuvent être remplacés à l’aide de SQL.
Gestionnaire (handler)¶
Pour fournir une implémentation entièrement personnalisée de EnableResourceHandler
, la procédure PUBLIC.ENABLE_RESOURCE
doit être remplacée. Par exemple :
CREATE OR REPLACE PROCEDURE PUBLIC.ENABLE_RESOURCE(resource_ingestion_definition_id VARCHAR)
RETURNS VARIANT
LANGUAGE JAVA
RUNTIME_VERSION = '11'
PACKAGES = ('com.snowflake:snowpark:1.11.0')
IMPORTS = ('/connectors-native-sdk.jar')
HANDLER = 'com.custom.handler.CustomEnableResourceHandler.enableResource';
GRANT USAGE ON PROCEDURE PUBLIC.ENABLE_RESOURCE(VARCHAR) TO APPLICATION ROLE ADMIN;
Procédures internes¶
Les procédures internes ENABLE_RESOURCE_VALIDATE
, PRE_ENABLE_RESOURCE
et POST_ENABLE_RESOURCE
peuvent également être personnalisées par le biais de SQL. Ces procédures peuvent aussi appeler d’autres gestionnaires (handlers) Java :
CREATE OR REPLACE PROCEDURE PUBLIC.ENABLE_RESOURCE_VALIDATE(resource_ingestion_definition_id VARCHAR)
RETURNS VARIANT
LANGUAGE SQL
EXECUTE AS OWNER
AS
BEGIN
-- SOME CUSTOM LOGIC BEGIN
SELECT sysdate();
-- SOME CUSTOM LOGIC END
RETURN OBJECT_CONSTRUCT('response_code', 'OK');
END;
CREATE OR REPLACE PROCEDURE PUBLIC.ENABLE_RESOURCE_VALIDATE(resource_ingestion_definition_id VARCHAR)
RETURNS VARIANT
LANGUAGE JAVA
RUNTIME_VERSION = '11'
PACKAGES = ('com.snowflake:snowpark:1.11.0')
IMPORTS = ('/connectors-native-sdk.jar')
HANDLER = 'com.custom.handler.CustomHandler.enableResourceValidate';
L’approche du constructeur¶
EnableResourceHandler
peut être personnalisé à l’aide de EnableResourceHandlerBuilder
. Ce constructeur permet à l’utilisateur de fournir des implémentations personnalisées des interfaces suivantes :
EnableResourceValidator
PreEnableResourceCallback
PostEnableResourceCallback
ConnectorErrorHelper
Dans le cas où une fonction n’est pas fournie, l’implémentation par défaut fournie par SDK sera utilisée.
class CustomPreEnableResourceCallback implements PreEnableResourceCallback {
@Override
public ConnectorResponse execute(String resourceIngestionDefinitionId) {
// CUSTOM LOGIC
return ConnectorResponse.success();
}
}
class CustomHandler {
// Path to this method needs to be specified in the PUBLIC.ENABLE_RESOURCE procedure using SQL
public static Variant enableResource(Session session, String resourceIngestionDefinitionId) {
//Using builder
var handler = EnableResourceHandlerBuilder.builder(session)
.withPreEnableResourceCallback(new CustomPreEnableResourceCallback())
.build();
return handler.enableResource(resourceIngestionDefinitionId).toVariant();
}
}