IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres outils décisionnels Discussion :

[Stambia] Question sur la phase de load


Sujet :

Autres outils décisionnels

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur en études décisionnelles
    Inscrit en
    Février 2013
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur en études décisionnelles

    Informations forums :
    Inscription : Février 2013
    Messages : 134
    Points : 351
    Points
    351
    Par défaut [Stambia] Question sur la phase de load
    Bonjour à tous,

    Eh oui les topics sur Stambia commencent déjà à fleurir ! J’espère que, même si cet outil est tout récent, vous pourrez quand même m’aider.

    Je suis donc un jeune apprenti en train de découvrir le monde du décisionnel… Et pour ce faire, j’ai été formé à l’ELT Stambia. Mon entreprise (qui évolue dans le domaine de la grande distribution) me demande de développer quelques flux d’alimentation, mais catastrophe, ce qui semblait enfantin en formation devient réellement très difficile en situation réelle. J’ai donc une question à vous poser concernant la phase de load, je vais essayer d’être le plus clair possible. N’hésitez pas à me demander toutes les informations que vous jugerez nécessaire car je suis vraiment dans une impasse et ce n’est pas faute d’avoir cherché la solution par moi-même.


    Mon but est donc, pour le problème considéré, d’alimenter une table de dimension qui référence tous les produits qui ont un jour été en rupture ; cette table est au format Teradata. Pour l’alimenter, je dispose de deux fichiers au format CSV : un qui est composé d’environ 7000 lignes, une ligne par produit en rupture dans tous les magasins (donc doublons possibles) ; l’autre qui référence juste les différents rayons et libellés de rayons (une quinzaine de lignes).

    J’utilise un Runtime qui permet d’utiliser des templates de load : en particulier, fastload et multiload.

    On va considérer que mes métadonnées et mon mapping ont bien été définis pour simplifier (ça a été approuvé par un de mes collègues). En outre toutes mes données source sont bien chargées. Mon mapping ressemble à cela :



    Comme vous pouvez le voir, ma table de donnée cible comporte numéro et libellé de produit, numéro de rayon (ces trois champs sont retrouvés dans le premier fichier) ; libellé de rayon (ce champ se situe dans le second fichier) ; et une date de mise à jour, que je référence dans la Target grâce à un current_timestamp.

    Les filtres sont là pour supprimer la dernière ligne des fichiers CSV qui comporte le nombre de lignes dans le premier champ texte rencontré ; ce champ se remplit sous la forme 99:nb. Le filtre est donc « champ NOT LIKE ’99:%’ »



    Maintenant que vous connaissez un peu ma situation, voici ma question :


    Concernant le template de load pour mes deux fichiers, je l’ai paramétré de telle manière qu’il soit de type « File to Teradata » et qu’il utilise « multiload » comme méthode de chargement. L’idée étant que, comme je dois alimenter une table de dimension, je dois pouvoir insérer des lignes ET en mettre à jour si le numéro de produit est le même (les numéros de rayon pouvant changer. Le fastload ne permettant que de l’insert, il n’est donc pas approprié.

    Le souci est lorsque j’exécute tout ça, je récupère le message d’erreur suivant au niveau de la phase de LOAD :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EngineExceptionI : javax.script.ScriptException: sun.org.mozilla.javascript.internal.JavaScriptException: fastload command throws an error (<Unknown source>#47) in <Unknown source> at line number 47
    Je ne comprends pas pourquoi je récupère une erreur sur fastload alors que je suis censé utiliser multiload justement…

    J’ai également essayé, par acquis de conscience, de charger les données avec le runtime localhost et de modifier le template de load pour qu’il soit de type « File to Rdbms », même si je pense que ce n’est pas forcément idéal si je veux alimenter une table Teradata. Je récupère alors le message d’erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Teradata Database] [TeraJDBC 13.10.00.32] [Error -2802] [SQLState 23000] Duplicate row error in base.L1.T_DIM_RUP_PRO


    Avez-vous une idée de ce qui me bloque ? Y a-t-il un paramétrage à revoir éventuellement ? Aussi, si vous avez des remarques à faire sur ma méthode ou si je dis des choses fausses n’hésitez pas, ça m’aidera bien pour me corriger…


    En vous remerciant d’avance.


    Emmanuel R

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur en études décisionnelles
    Inscrit en
    Février 2013
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur en études décisionnelles

    Informations forums :
    Inscription : Février 2013
    Messages : 134
    Points : 351
    Points
    351
    Par défaut
    Bonjour,

    Je poste car je ne peux plus éditer mon message.

    Au final j'ai pu réussir à me débloquer dans l'utilisation du template de load "File to Teradata". En fait, le message d'erreur "fastload command throws an error" alors que j'utilisais multiload était simplement dû à une erreur de libellé.

    Pour débugger le multiload, on m'a expliqué qu'il faut en fait se rendre directement sur le serveur où est installé le runtime et lancer le script manuellement. Dans mon cas sous le cmd sur Windows, il faut récupérer la ligne correspondant à MULTILOAD_COMMAND dans l'onglet variable du template de load, et la lancer ainsi. Avec des guillemets (") à la place des apostrophes ('). De cette manière on a un message d'erreur qui apparaît.

    Pour l'histoire, les filtres que j'ai fait directement dans le mapping ne fonctionnaient pas car ils se font en Staging Area, donc pas au niveau du load. Les filtres dans la métadonnée pour supprimer cette dernière ligne fonctionnaient en File to Rdbms (que j'ai finalement réussi à débloquer), mais pas en multiload. Au final, le support de Stambia m'a envoyé un script qui permet de supprimer la dernière ligne de mon fichier CSV. Ca fait un peu baisser les perfs mais c'est la seule solution qu'on a trouvé.

    Pour le débloquage du "file to rdbms", il est apparu qu'il y en avait en fait deux. Après vérification, je me suis aperçu que j'utilisais celui du template générique, et pas celui du template teradata. Forcément ça pouvait difficilement fonctionner...

    Bref souci résolu ! Excellente journée à vous.


    Emmanuel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. question sur load balancing apache/tomcat
    Par PaladinFr dans le forum Apache
    Réponses: 2
    Dernier message: 25/03/2011, 15h32
  2. Question sur un load de plusieurs pages SWF
    Par Coby11 dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 06/09/2010, 11h47
  3. Petite question sur le LAZY LOADING
    Par saveriu dans le forum JPA
    Réponses: 11
    Dernier message: 16/03/2010, 11h41
  4. Petite Question sur le lazy loading
    Par Arthis dans le forum ASP.NET
    Réponses: 2
    Dernier message: 19/11/2008, 11h24
  5. Réponses: 51
    Dernier message: 20/10/2006, 16h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo