Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > ETL > Talend
Talend Forum d'entraide sur Talend (Talend Open Studio, ...). Avant de poster --> FAQ Talend, Tutoriels Talend
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/02/2012, 17h51   #1
Membre du Club
 
Inscription : juin 2008
Messages : 172
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 172
Points : 56
Points : 56
Par défaut tAggregateRow avec une clause where

Bonsoir,

J'ai pour objectif de créer à partir d'une table en entrée , une table de sortie comprenant des agrégats de la table en entrée .

C' est donc tout logiquement que je me suis tourné vers le tAggregateRow .
Le problème c'est que les agrégats que je doit créer comportent des conditions.

Ex:

Table Client
ID
Nom
Adresse
Type(Régulier, occasionnel)

Admettons que je veuille le nombre total de client occasionnel
Ce qui reviendrait à faire en sql : Select count(Id) from Client where Type='occasionnel'


Et dans ma table en sortie j'aurai une colonne NbClientOccasionnel avec la valeur récupéré de la requête .

Le composant tAggregaterow ne me permet pas de faire cela,il fait un group by mais j 'ai pour contrainte de ne pas l'utiliser car le schéma de la table de sortie est déjà définie).
J'aurai pu faire ca via une requête sql , mais j 'ai pour contrainte de passer par un composant car la table de sortie dispose de milliers d'indicateurs et il faudra reproduire ce procédé pour d'autre indicateurs.

Connaissez vous un composant qui me permette de faire cela ?

Vous remerciant par avance
ulquiorra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2012, 11h53   #2
Membre émérite
 
Homme Nicolas Saumande
Architecte Décisionnel
Inscription : février 2008
Messages : 693
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Saumande
Âge : 36
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Architecte Décisionnel

Informations forums :
Inscription : février 2008
Messages : 693
Points : 879
Points : 879
Bonjour,

La problématique est assez simple à traiter.
Il faut bien utiliser un tAgregateRow, mais il faut ajouter un champ avant (en utilisant un tMap) qui contient la valeur que tu veux aggréger.

Par exemple dans ton cas, tu crées un nouveau champ qui vaut 1 si le type est égal à 'occasionnel', et 0 sinon.

Le résultat de l'agrégation sur ce champ pourra alimenter ta colonne NbClientOccasionnel.

Nicolas
DevNico est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/02/2012, 17h06   #3
Membre du Club
 
Inscription : juin 2008
Messages : 172
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 172
Points : 56
Points : 56
Je te remercie, ca marche impeccablement

J'ai mis ca dans l'éditeur d'expression de mon tMap pour info:

Code :
(row2.TypeClient.equals("Occasionnel"))?1:0
Merci encore
ulquiorra est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h23.


 
 
 
 
Partenaires

Hébergement Web