Configuration du connecteur¶
La configuration du connecteur est la première étape obligatoire de la phase de l’assistant. Elle garantit que le connecteur possède la configuration des objets communs à tous les types de connecteurs, quels que soient le système source et le domaine réels. La procédure appelée PUBLIC.CONFIGURE_CONNECTOR(config VARIANT)
est le point d’entrée à partir de l’UI ou de la feuille de calcul pour ce faire. Lorsque vous remplacez la procédure par une logique personnalisée, gardez à l’esprit que cette procédure doit être remplacée, car elle renvoie à la méthode statique ConfigureConnectorHandler.configureConnector
en Java en tant que gestionnaire (handler).
Pour lancer cette procédure, l’utilisateur doit avoir le rôle d’application ADMIN
.
L’étape de configuration du connecteur se déroule en interne en plusieurs phases. Certaines d’entre elles sont entièrement personnalisables et, par défaut, n’ont pas d’impact. Les phases sont les suivantes :
Validation du statut
Validation des champs
Validation des entrées
Mise à jour de la configuration
Rappel interne
Mise à jour du statut
Exigences¶
La configuration du connecteur nécessite au moins les fichiers SQL suivants pour être exécutés lors de l’installation de l’application native :
core.sql
configuration/app_config.sql
configuration/connector_configuration.sql
Validation du statut¶
Pour effectuer la configuration du connecteur, le statut interne du connecteur doit être CONFIGURING
. Cette validation ne peut pas être écrasée par l’utilisation de ConfigureConnectorHandlerBuilder
ni par l’écrasement d’une procédure stockée. Toutefois, il est possible d’implémenter un gestionnaire (handler) personnalisé, qui n’aura pas ce type de validation.
Validation des champs¶
La configuration du connecteur doit contenir un ensemble de champs spécifiques. Tous ces champs sont facultatifs, mais tout autre champ entraîne la levée d’une exception. Les clés autorisées sont les suivantes :
warehouse
destination_database
destination_schema
operational_warehouse
global_schedule
data_owner_role
agent_username
agent_role
Entrepôt¶
L’entrepôt est utilisé par le connecteur pour faire fonctionner la planification, exécuter des tâches et des requêtes.
Base_donnees_de_destination¶
La base de données de destination est utilisée pour stocker les données ingérées par le connecteur. Cette base de données doit se trouver à l’extérieur du connecteur. Il peut s’agir d’une base de données existante, mais le connecteur doit disposer de privilèges d’écriture sur celle-ci. Il peut également s’agir d’une base de données nouvellement créée, mais cela ne se fait pas automatiquement et doit être mis en œuvre dans le cadre du rappel interne lors de la configuration du connecteur ou de la finalisation de la configuration.
schema_destination¶
Le schéma de destination sera le schéma utilisé dans la base de données de destination ci-dessus.
entrepot_operationnel¶
Il arrive que le connecteur ait besoin de séparer les processus d’ingestion proprement dits nécessitant un entrepôt des processus liés aux opérations internes du connecteur. La spécification de ce deuxième entrepôt permet de répartir la charge entre eux.
calendrier_global¶
Cette propriété définit la planification d’exécution de la tâche du planificateur. Actuellement, le planificateur ne traite que les ressources ayant leur propre scheduleType=GLOBAL
. La valeur de cette propriété doit être similaire à celle indiquée ci-dessous :
"global_schedule": {
"scheduleType": "CRON",
"scheduleDefinition": "*/10 * * * *"
}
role_proprietaire_donnees¶
Rôle qui peut être utilisé pour donner la propriété de la base de données de synchronisation afin de conserver les données lors de la désinstallation du connecteur.
nom_utilisateur_agent¶
Nom d’utilisateur utilisé par l’agent du connecteur basé sur le push lors de la connexion avec Snowflake.
role_agent¶
Rôle utilisé par l’agent du connecteur basé sur le push lors de la connexion avec Snowflake.
Validation des entrées¶
L’entrée doit être un Variant
valide. En outre, le SDK fournit une procédure stockée interne appelée : PUBLIC.CONFIGURE_CONNECTOR_VALIDATE(config VARIANT)
. Par défaut, cette procédure renvoie simplement 'response_code': 'OK'
, mais elle peut être modifiée en écrasant cette procédure stockée. Il est également possible de la personnaliser en utilisant ConfigureConnectorHandlerBuilder
et en fournissant une implémentation personnalisée de l’interface ConfigureConnectorValidator
.
Mise à jour de la configuration¶
Une fois les validations transmises avec succès, la configuration est sauvegardée dans la table interne APP_CONFIG
. Le service responsable de cette opération enregistre le Variant
fourni sous la clé connector_configuration
.
Rappel interne¶
Le rappel interne est une autre étape personnalisable. Par défaut, il appelle PUBLIC.CONFIGURE_CONNECTOR_INTERNAL(config VARIANT)
, qui renvoie 'response_code': 'OK'
. Il peut être remplacé par le script SQL ou en utilisant un ConfigureConnectorHandlerBuilder
pour fournir une implémentation personnalisée de l’interface ConfigureConnectorCallback
.
Mise à jour du statut¶
Lorsque toutes les phases ci-dessus sont achevées avec succès, le statut interne du connecteur est mis à jour :
{
"status": "CONFIGURING",
"configurationStatus": "CONFIGURED"
}
Pour un diagramme des transitions d’état, voir Débit du connecteur.
Réponse¶
Réponse aboutie¶
Si la procédure se termine avec succès, elle renvoie une réponse au format suivant :
{ "response_code": "OK", }
Erreur de réponse¶
En cas d’erreur, la réponse suivra le format ci-dessous :
{ "response_code": "<ERROR_CODE>", "message": "<error message>" }
Les codes d’erreur possibles sont les suivants :
INVALID_CONNECTOR_STATUS
- La procédure a été appelée sur un connecteur déjà configuréCONNECTOR_CONFIGURATION_PARSING_ERROR
- La configuration donnée n’est pas une configuration JSON valideCONNECTOR_STATUS_NOT_FOUND
- L’enregistrement du statut du connecteur n’existe pas dans la base de donnéesCONNECTOR_STATUS_PARSING_ERROR
- La valeur stockée dans la tableAPP_STATE
sous la cléconnector_status
a un format incorrect et ne peut pas être analysée par l’application