Incompatibilité Talend avec Java 7

Après plusieurs discussions ouvertes sur le forum de DVP dans la catégorie ETL/Talend, les versions Talend for Data Integration antérieures à 5.2 ne sont pas compatibles avec la version 7 de java.
C’était déjà le cas pour pour la version entreprise concernant la Web Application de gestion « Administration Center » (en tout cas pour l’avoir tester avec la version 4.1.3). Mais après pour ce problème c’était surtout dû à la non compatibilité Tomcat/Talend.
Lire la suite

Jointures BETWEEN dans les tMap avec Talend

Avec les versions inférieures à la version 5 de Talend for Data Integration, on ne pouvait faire que des jointures égalitaires dans les tMap :

Mais avec la version 5, il est maintenant possible de faire des jointures >, < =. Un vrai plus surtout quand très peu d’ETL le propose :

Between Tmap

Attention Maintenant après l’avoir testé sur la version 5.1.1 (TOS for Data Integration), cela ne fonctionne pas. En regardant le code on comprend mieux pourquoi : on a beau mettre autre chose que « = », le code généré continue à mettre « = »… en espérant que cette option marchera dans les prochaines versions…

Parallélisation des lookups dans Talend

La version 5 de Talend Enterprise for Data Intregration propose la parallélisation du chargement des lookups dans les composants tMap. (Non disponible dans TOS for Data Integration).

Le gros avantage étant bien évidement un gain de temps significatif sur des sous-jobs ayant de multiples lookups. Par contre l’option est intéressante uniquement si votre serveur d’exécution comporte plusieurs processeurs.

En attente de tests approfondis mais cette option fait rêver !

processeurs

Compter les lignes des tables d’un schéma en PL/SQL

Pour compter le nombre de lignes de toutes les tables d’un schéma Oracle il est nécessaire d’utiliser le bloc anonyme suivant :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
DECLARE
    nbLignes NUMBER := 0;
BEGIN
 
    FOR C1 IN (
        select TABLE_NAME
        from user_tables
    ) LOOP
     
    EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM ' || C1.TABLE_NAME INTO nbLignes;
     
    DBMS_OUTPUT.PUT_LINE(C1.TABLE_NAME || ': ' || nbLignes);
             
    END LOOP;
END;

Il est bien évidement possible de filtrer les tables en ajoutant une instruction WHERE dans la requête du curseur C1

Création et alimentation d’une dimension DATE

Lors de la création d’un entrepôt de données, bien souvent, il contient une dimension DATE contenant la liste des dates depuis l’année 1900 jusqu’à l’année 2999. Cette table contenant plusieurs attributs comme par exemple :

  • La date au format date
  • La date au format chaine de caractère sous la forme DD/MM/YYYY
  • La date au format numérique sous la forme YYYYMMDD
  • Le jour de l’année

Voici donc un exemple de création de DIM_DATE en Oracle.
Lire la suite

Modification d’une séquence Oracle en PL/SQL

Pour modifier une séquence existante il est nécessaire de la supprimer puis de la recréer. Pour effectuer cela facilement, il est possible de tester son existence dans un bloc PL/SQL anonyme et en fonction de son existence de la supprimer puis la créer :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
DECLARE
    existe NUMBER(1) := 0;
    seqName VARCHAR2(30) := 'MA_SEQUENCE';

BEGIN
 
    select COUNT(*) INTO existe
    from user_sequences
    WHERE SEQUENCE_NAME = seqName;
     
    IF existe = 1 THEN
     
        EXECUTE IMMEDIATE 'DROP SEQUENCE ' || seqName;
     
    END IF;
     
    EXECUTE IMMEDIATE 'create sequence ' || seqName || ' increment by 1 start with 1 minvalue -2 nocycle noorder nocache';
             
END;