Dans cet article


Offres d'emploi

Tags

Talend et MySql GROUP_CONCAT

Talend et MySql GROUP_CONCAT

Introduction

Lors d’une mission récente, je me suis retrouvé confronté à un problème de configuration Mysql avec Talend : la limite du nombre de caractères de la fonction GROUP_CONCAT.

De quoi s’agit t-il ? Comment augmenter cette taille maximale ? Quelle est la bonne pratique ? C’est ce que nous allons voir rapidement dans cet article.

Rappel sur la fonction GROUP_CONCAT de MySql

La fonction GROUP_CONCAT() permet de regrouper les valeurs non nulles d’un groupe en une chaîne de caractère.

Par exemple, là où la requête suivante ramènerait 5 lignes (un nom par ligne)

FROM client

 

La requête suivante, elle, ramènerait une seule ligne, concaténation des 5 noms

FROM client

(Note : Si aucun SEPARATOR n’est renseigné, le caractère de séparation par défaut est la virgule)

 

La chaîne de caractères résultante est cependant limitée en nombre de caractères (par défaut, à 1024 caractères d’après la documentation MySql, mais de mon expérience avec Talend, 342 caractères)

Pour contourner ce problème, il est possible de modifier ce paramètre par l’une des requêtes suivantes :

SET SESSION group_concat_max_len = 1000000;

(Pour appliquer le paramètre jusqu’à que la session courant se termine)

 

SET GLOBAL group_concat_max_len = 1000000;

(Pour appliquer le paramètre jusqu’au prochain redémarrage du serveur)

Pour modifier le paramètre de version définitive, rendez vous dans le fichier de configuration de MySql

La fonction GROUP_CONCAT de MySql en détails sur http://sql.sh/fonctions/group_concat

 

Appliquer le paramètre avec Talend

Pour appliquer ce paramètre avec Talend, il est nécessaire de lancer la requête de paramétrage avant toute autre requête MySql. Pour ce faire, utiliser le composant tMysqlRow.

Le but d’un job Talend n’étant pas de modifier de manière définitive la configuration et le paramétrage du serveur MySql, je recommande l’utilisation du SET SESSION (et non du SET GLOBAL).

Pour que ce paramètre soit appliqué à l’ensemble du job, il est obligatoire de créer une connexion MySql en début de job et de l’utiliser pour chacune des requêtes concernées (et non pas, de fait, de créer une nouvelle connexion à chaque tMysqlInput).

 

Voici en image à quoi devrait ressembler votre job (hors traitements)

talend_group_concat_mysql

L'équipe AXOPEN

Voir aussi les articles suivants

Comment comparer 2 schemas Mysql ?

Comment comparer 2 schemas Mysql ?

Le 05/08/2014 par Robin Chauvin

Qui n’a jamais eu le besoin de comparer 2 schemas de base de données Mysql après avoir oublier de noter l’ensemble des modifications apportées à un environnement ? Outil gratuit pour comparer 2 schemas Mysql Pour comparer 2 schemas Mysql, beaucoup d’outils plus ou moins évolués existent sur Internet. Parmi eux, j’ai pu tester un outil très simple nommé mysqldiff et disponible gratuitement. L’avantage de cet outil est qu’il est codé en PHP: il ne nécessite donc pas à ce titre d’installation.
Lire l'article

Talend – Exécuter un job de façon autonome

Le 06/06/2014 par Robin Chauvin

Dans cet article, nous allons voir comment exécuter un job de façon autonome. Tout est présenté dans la vidéo ci-joint, le détail des étapes est résumé dans cet article. Pré-requis: Avoir un projet Talend avec un job fonctionnel. La machine sur laquelle sera exécutée le job doit disposer d’une jvm java 1.5 mimium (pour vérifier : Exécuter -> cmd -> taper : java -version). Export du job Faire un clic droit sur le job à exporter et choisir « Exporter le job » Choisir un répertoire et un nom pour le job qui sera exporté.
Lire l'article

Dans cet article, nous allons voir comment importer un fichier Excel vers une base de données en utilisant l’ETL Talend. Tout est présenté dans la vidéo ci-joint, le détail des étapes est grossièrement résumé dans cet article. Cette vidéo est vraiment une introduction à l’utilisation des jobs et des composants sous Talend Open Studio for Data Integration Pré-requis: Avoir installé Talend Open Studio For Data Integration Avoir une base de données MySql avec une table déjà créée Et un fichier Excel à importer Dans un premier temps, nous allons créer un projet Talend vide qui va nous servir d’exemple.
Lire l'article