Connecteurs de base de données

Modifié

Le connecteur de base de données est utilisé pour extraire des données de bases de données prenant en charge Open Database Connectivity (ODBC).

Ce connecteur n'est pas disponible par défaut. Veuillez contacter Opendatasoft pour l'activation de ce connecteur sur un espace de travail Opendatasoft donné.

Les bases de données supportées par Opendatasoft sont :

Base de données

Ressources du fournisseur

Version de base de données prise en charge

Snowflake

Site Internet

Tous

Denodo

Site Internet

>= 8.0 mise à jour 20220126

Databricks

site Internet

Azure SQL

Site Internet

Si vous souhaitez qu'Opendatasoft supporte d'autres bases de données, n'hésitez pas à contacter votre équipe de support locale pour partager vos retours et cas d'utilisation.

Le connecteur de base de données fonctionne au niveau de la base de données. Pour configurer une source de données à l'aide de ce connecteur, vous devrez rassembler :

  • Les détails de connexion (comme login et mot de passe, adresse du serveur, nom de la base de données)

  • La requête SQL pour extraire les données pertinentes de votre base de données

Comme ce connecteur prend en charge les connexions réutilisables, vous aurez la possibilité de réutiliser facilement les détails de connexion d'un jeu de données à un autre jeu de données.

Création

Vous pouvez configurer une source à l'aide du connecteur de base de données en créant un nouveau jeu de données ou en ajoutant une nouvelle source à un jeu de données existant.

  1. Sélectionnez l'une des bases de données prises en charge sur l'écran de création de la source.

  2. Configurez les détails de connexion pour connecter Opendatasoft à votre base de données. Si vous avez déjà créé et enregistré une connexion à la base de données, vous souhaiterez peut-être la réutiliser.

  3. Dans Requête , configurez la requête SQL personnalisée à utiliser pour extraire les données de votre base de données. Cette requête peut être arbitrairement complexe.

  4. Dans Requête d'aperçu [facultatif] , configurez la requête SQL personnalisée à utiliser pour extraire les données de votre base de données en mode aperçu, lors de la configuration du jeu de données dans le back-office Opendatasoft.

  5. Dans Requête incrémentielle [facultatif] , configurez la requête SQL personnalisée à utiliser pour extraire les données en mode incrémentiel. Voir ci-dessous pour plus de détails sur le mode d'extraction incrémentielle.

  6. Dans Champ incrémentiel [facultatif] , configurez le nom du champ de résultat de la requête utilisé pour créer la clause de mise à jour incrémentielle. Voir ci-dessous pour plus de détails sur le mode d'extraction incrémentielle.

Détails de connexion

Base de données

Configuration des détails de connexion

Snowflake

Configuration

Denodo

Configuration

Databricks

Configuration

Azure SQL

Configuration

Utilisation d'une requête d'aperçu pour les ensembles de résultats volumineux

Il peut arriver que la requête que vous configurez mette du temps à s'exécuter et ralentisse considérablement (voire détériore) les écrans de configuration dans le back-office d'Opendatasoft.

Disons par exemple que vous souhaitez interroger une table de base de données cities_in_the world table listant toutes les villes du monde. Le schéma de la base de données contient les champs city_name , city_country et number_of_inhabitants .

La requête que vous utiliseriez dans le paramètre Query serait :

SELECT city_name, city_country, number_of_inhabitants FROM cities_in_the_world;

Cependant, pour diverses raisons dépendant du moteur de base de données utilisé en arrière-plan, cette requête peut prendre du temps à s'exécuter. Dans ce cas, utilisez le paramètre de requête Aperçu et définissez une requête plus légère dont vous savez qu'elle sera exécutée en temps opportun :

SELECT city_name, city_country, number_of_inhabitants FROM cities_in_the_world LIMIT 20;

Les requêtes de requête et de prévisualisation doivent générer des ensembles de résultats avec un schéma de table identique (liste de champs et types de champs).

Mise à jour incrémentielle d'un jeu de données avec une source de base de données

Lorsqu'un jeu de données avec une source de base de données est à nouveau publié manuellement ou via la planification, le contenu du jeu de données précédent est effacé et tout le contenu de la table de base de données est à nouveau traité. Cependant, il existe de nombreux cas d'utilisation où cette approche ne convient pas. Vous pouvez, par exemple, créer un ensemble de données à partir d'une table de base de données contenant une mesure de température quotidienne pour des emplacements spécifiés.

Les temperatures de la table de la base de données contiendraient les champs :

Nom de domaine

Type de champ

location

VARCHAR

date

DATE

temperature

FLOTTANT

Vous configurerez ensuite le paramètre Query suivant :

SELECT location, date, temperature FROM temperatures;

Vous configurez ensuite le jeu de données pour qu'il soit mis à jour quotidiennement grâce au planificateur interne d'Opendatasoft. La première mise à jour récupère toutes les données historiques. Et tous les deux jours, au moment de la mise à jour, le contenu de l'ensemble de données est nettoyé et tout le contenu de la table est à nouveau récupéré. Ce n'est probablement pas ce à quoi vous vous attendez, car cette approche n'est certainement pas adaptée à la consommation de ressources.

Pour minimiser le volume de données synchronisées à chaque mise à jour, vous pouvez paramétrer le connecteur en mode incrémentiel. Pour ce faire, vous devez configurer les paramètres Requête incrémentielle et Champ incrémentiel .

Le paramètre de requête incrémentielle contient une requête basée sur un modèle, utilisée par le connecteur lors de la deuxième exécution de la mise à jour et des autres. Il doit contenir un espace réservé {INCR_CONDITION} qui est automatiquement rempli par le connecteur. Par exemple:

SELECT location, date, temperature FROM temperatures WHERE {INCR_CONDITION};

Le paramètre Champ incrémentiel contient un nom de champ, dont la valeur est utilisée pour créer l'espace réservé {INCR_CONDITION} . Ici, vous définiriez la date de valeur . Par conséquent, le connecteur va scanner les valeurs de ce champ, garder la valeur la plus élevée en mémoire et l'utiliser pour la prochaine exécution du connecteur.

Considérons que les valeurs initiales dans la base de données sont :

emplacement

date

température

Paris

2023-04-01

25

Londres

2023-04-01

22

Boston

2023-04-01

29

Paris

2023-04-02

24

Londres

2023-04-02

23

Boston

2023-04-02

22

Pour le traitement initial, le connecteur de base de données exécutera la requête SQL définie dans le paramètre Query :

SELECT location, date, temperature FROM temperatures;

Il ira donc chercher les 6 enregistrements ci-dessus.

Disons que l'ensemble de données est configuré pour être mis à jour quotidiennement. Et que le 2023-04-03, 3 nouveaux enregistrements sont ajoutés au tableau :

emplacement

date

température

Paris

2023-04-03

21

Londres

2023-04-03

19

Boston

2023-04-03

18

Lors du second traitement, le connecteur base de données récupère la valeur la plus élevée du champ date identifié lors du premier traitement (2023-04-02) et l'utilise pour réécrire la requête Incrémentale :

SELECT location, date, temperature FROM temperatures WHERE date >= '2023-04-02';

De cette façon, seuls les enregistrements du 2023-04-02 et du 2023-04-02 seront récupérés.

Les types pris en charge pour le champ de paramètre Incrémental sont : INT, DOUBLE, DATE et DATETIME.

Le connecteur de base de données utilise une condition greater or equals pour s'assurer que les enregistrements qui ont été ajoutés récemment (après l'exécution du connecteur précédent) ne sont pas manqués.

Base de données Snowflake

Les détails de connexion à remplir pour une base de données Snowflake sont décrits dans le tableau ci-dessous.

Le nom du paramètre

Description

Serveur

Compte Snowflake auquel se connecter, sous la forme account_identifier .snowflakecomputing.com

Identifiant de l'utilisateur

Identifiant d'utilisateur Snowflake

Mot de passe

Mot de passe utilisateur Snowflake

Rôle

Rôle Snowflake utilisé par Opendatasoft lors de l'exécution de requêtes (doit être un rôle valide pour l'utilisateur sélectionné)

Base de données

Nom de la base de données à laquelle se connecter

Schéma

Schéma de base de données

Entrepôt

Entrepôt Snowflake (ressource de calcul) utilisé pour exécuter des requêtes effectuées par Opendatasoft

Base de données Denodo

Les détails de connexion à renseigner pour une base de données Denodo sont décrits dans le tableau ci-dessous.

Le nom du paramètre

Description

Serveur

Nom d'hôte du serveur qui héberge votre Denodo Virtual DataPort

Port

Numéro de port du serveur qui héberge votre Denodo Virtual DataPort

SSL requis

Si une connexion SSL doit être requise (définie uniquement si SSL est configuré sur le serveur Virtual DataPort)

Identifiant de l'utilisateur

Identifiant utilisateur Denodo

Mot de passe

Mot de passe utilisateur Denodo

Base de données

Nom de la base de données à laquelle se connecter

Base de données Azure SQL

Les détails de connexion à renseigner pour une base de données Azure SQL sont décrits dans le tableau ci-dessous.

Parameter name

Description

Serveur

Nom d'hôte du serveur qui héberge votre Azure SQL Virtual DataPort

Identifiant de l'utilisateur

Identifiant utilisateur Azure SQL

Base de données

Nom de la base de données à laquelle se connecter

Mot de passe

Mot de passe utilisateur Azure SQL