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

SSIS Discussion :

Fractionnement conditionnel vers Excel, restitution incomplète


Sujet :

SSIS

  1. #1
    Membre à l'essai
    Femme Profil pro
    Formatrice
    Inscrit en
    Avril 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Formatrice
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2016
    Messages : 20
    Points : 18
    Points
    18
    Par défaut Fractionnement conditionnel vers Excel, restitution incomplète
    Bonjour,
    je tente de faire un import depuis une base SQL server clients avec fractionnement conditionnel sur le statut marital vers 2 tables Excel.
    2 problèmes :
    - la table a 18000 enregistrements et il n'y en a en moyenne que 7000 qui passent. Message d'erreur :
    SSIS DTS_E_OLDBERROR. Code erreur 0x80004005. Un enregistrement OLE DB est disponible. Source : "Microsoft Access database engine" Hresult: 0x80004005 "impossible d'agrandir la plage nommée
    Pourtant je ne travaille pas sur Access ?
    - des clients celibataires se retrouvent dans la table des Mariés et vice et versa.
    Dans flux de contrôle j'ai rajouter un cache de transformation et Groupe by + Ordre by sur Maritalstatus.
    Dans flux de données conversion de données après la source ado.net puis fractionnement
    J'ai un avertissement pour " rajouter de nouvelles transformations". J'ai augmenter le defaultbuffermaxrows à 20000.
    Est-ce un problème de volume de données ?

  2. #2
    Membre éclairé Avatar de Bernardos
    Homme Profil pro
    Consultant Senior dba sql server & Microsoft Business Intelligence
    Inscrit en
    Avril 2008
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant Senior dba sql server & Microsoft Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 332
    Points : 723
    Points
    723
    Par défaut
    pourquoi ne fais tu pas une requete pour ta source avec un clause where sur le statut marital? si c'est pour splitter en 2 flux, tu fais 2 sources qui vont chacune vers la bonne destination. ce sera nettement plus performant.
    Evidemment si tu as X statut, tu feras x soursces, X flux et X destination.
    par contre, je ne te garantis pas que tu n'auras pas l'erreur que tu as, c'est peut être du à comment tu as configurer tes composants sources et/ou destination.
    Cordialement,

    Loïc
    Loïc BERNARD
    Consultant Senior dba sql server & Microsoft Business Intelligence



    Il n'y a jamais de problèmes, il n'y a que des solutions!

  3. #3
    Membre à l'essai
    Femme Profil pro
    Formatrice
    Inscrit en
    Avril 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Formatrice
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2016
    Messages : 20
    Points : 18
    Points
    18
    Par défaut Script clause Where ne fonctionne pas
    Bonjour,
    Dans flux de contrôle j'ai intégré une clause Where sur "M"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     [ATTACH=CONFIG]218297[/ATTACH]
    Je n'ai pas compris comment utiliser l'outil script SQL dans flux de données.
    Je ne comprends pas non plus pourquoi quand dans la destination je créé la feuille Excel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [ATTACH=CONFIG]218298[/ATTACH]
    Et au mappage tous les champs destination sont en DT_WSTR ?
    J'ai inclus une conversion sur ma source pour mettre le même type même pour remplacer date et numérique.
    Toutes les lignes sont bien chargées mais pas de sélection sur "M". Je suppose que le script doit se faire dans flux de données ?

    Cordialement,

  4. #4
    Membre à l'essai
    Femme Profil pro
    Formatrice
    Inscrit en
    Avril 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Formatrice
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2016
    Messages : 20
    Points : 18
    Points
    18
    Par défaut Clause Where sur double sources ne restitue pas toutes les lignes
    Bonjour,

    J'ai enfin compris qu'il fallait paramétrer chaque source avec le code SQL au lieu de sélectionner la table. J'ai donc 2 sources SQLServer avec script suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    select CUSTOMERKEY,
    BIRTHDATE,
    MARITALSTATUS,
    GENDER,
    YEARLYINCOME,
    TOTALCHILDREN,
    NUMBERCHILDRENATHOME,
    EDUCATION,
    OCCUPATION,
    NUMBERCARSOWNED
    from dbo.DIM_CUSTOMER
    WHERE MARITALSTATUS = 'M';
    et 'S' pour la destination célibataire.
    Il y a des champs numériques et date mais dans la destination tous les champs passe en DT_WSTR lenght 255.
    J'ai donc rajouté la transformation conversion pour convertir tous les champs ci-dessus comme la destination.

    Erreurs sur débogage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Erreur*: 0xC0202009 à Tâche de flux de données, Destination Excel Clients Mariés [122]: Code d'erreur SSIS DTS_E_OLEDBERROR. Une erreur OLE DB s'est produite. Code d'erreur*: 0x80004005.
    Un enregistrement OLE DB est disponible. Source*: «*Microsoft Office Access Database Engine*» Hresult*: 0x80004005 Description*: «*Impossible d'agrandir la plage nommée.*».
    Erreur*: 0xC0209029 à Tâche de flux de données, Destination Excel Clients Mariés [122]: Code d'erreur SSIS DTS_E_INDUCEDTRANSFORMFAILUREONERROR. Échec de l'objet «*Destination Excel Clients Mariés.Entrées[Entrée de destination Excel]*» en raison du code d'erreur*0xC020907B. En outre, la disposition de la ligne d'erreur sur*«*Destination Excel Clients Mariés.Entrées[Entrée de destination Excel]*» spécifie un échec sur l'erreur. Une erreur s'est produite sur l'objet spécifié du composant spécifié. Des messages d'erreur peuvent être envoyés au préalable avec des informations indiquant la raison de l'échec.
    Erreur*: 0xC0047022 à Tâche de flux de données, SSIS.Pipeline: Code d'erreur SSIS DTS_E_PROCESSINPUTFAILED. La méthode ProcessInput du composant «*Destination Excel Clients Mariés*» (122) a échoué avec le code d'erreur 0xC0209029 pendant le traitement de l'entrée «*Entrée de destination Excel*» (133). Le composant identifié a retourné une erreur de la méthode ProcessInput. Cette erreur, spécifique au composant, est irrécupérable et provoquera l'arrêt de la tâche de flux de données. Des messages d'erreur peuvent être envoyés au préalable avec des informations indiquant la raison de l'échec.
    Erreur*: 0xC02090F5 à Tâche de flux de données, Source ADO NET SQL Server DIM CUSTOMER MARIES [197]: Source ADO NET SQL Server DIM CUSTOMER MARIES n'a pas pu traiter les données. Exception de HRESULT : 0xC0047020
    Erreur*: 0xC0047038 à Tâche de flux de données, SSIS.Pipeline: Code d'erreur SSIS DTS_E_PRIMEOUTPUTFAILED. La méthode PrimeOutput sur Source ADO NET SQL Server DIM CUSTOMER MARIES a retourné le code d'erreur 0xC02090F5. Le composant a retourné un code d'erreur lorsque le moteur du pipeline a appelé PrimeOutput(). La signification du code d'erreur est définie par le composant. Cependant, l'erreur est irrécupérable et le pipeline ne s'exécute plus. Des messages d'erreur peuvent être envoyés au préalable avec des informations indiquant la raison de l'échec.
    La totalité des lignes ressources n'est pas chargée et il y a encore de la perte sur le fichier Excel, j'ai bien mes 2 feuilles, 'M' et 'S' sont disséminés sur "Mariés" et sur "Célibataires" je n'ai que des 'M'

    je n'y comprends rien. Une nouvelle idée de paramétrage ?

    Bien cordialement,

  5. #5
    Membre éclairé Avatar de Bernardos
    Homme Profil pro
    Consultant Senior dba sql server & Microsoft Business Intelligence
    Inscrit en
    Avril 2008
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant Senior dba sql server & Microsoft Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 332
    Points : 723
    Points
    723
    Par défaut
    Salut,
    sais tu ce que c'est DT_WSTR par rapport à DT_STR?
    DT_WSTR : c'est de l'unicode --> Nchar, Nvarchar
    DT_STR : c'est pas de l'unicode --> Char, varchar

    Pour Aller plus loin dans le débat, j'ai besoin que tu mettes tes script create table de création de ta table source et de tes table destinations. utilises la balise code
    Cordialement,
    Loïc BERNARD
    Consultant Senior dba sql server & Microsoft Business Intelligence



    Il n'y a jamais de problèmes, il n'y a que des solutions!

  6. #6
    Membre à l'essai
    Femme Profil pro
    Formatrice
    Inscrit en
    Avril 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Formatrice
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2016
    Messages : 20
    Points : 18
    Points
    18
    Par défaut Script création de tables
    Salut,

    Citation Envoyé par Bernardos Voir le message
    sais tu ce que c'est DT_WSTR par rapport à DT_STR?
    DT_WSTR : c'est de l'unicode --> Nchar, Nvarchar
    DT_STR : c'est pas de l'unicode --> Char, varchar

    Pour Aller plus loin dans le débat, j'ai besoin que tu mettes tes script create table de création de ta table source et de tes table destinations.
    Oui je connais la différence, c'est pour cette raison que j'utilise l'outil de conversion.

    Script table source dans SQLServer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE TABLE IF NOT EXISTS `dim_customer` (
      `CUSTOMERKEY` int(11) NOT NULL,
      `BIRTHDATE` datetime DEFAULT NULL,
      `MARITALSTATUS` varchar(1) DEFAULT NULL,
      `GENDER` varchar(1) DEFAULT NULL,
      `YEARLYINCOME` decimal(15,3) DEFAULT NULL,
      `TOTALCHILDREN` tinyint(4) DEFAULT NULL,
      `NUMBERCHILDRENATHOME` tinyint(4) DEFAULT NULL,
      `EDUCATION` varchar(40) DEFAULT NULL,
      `OCCUPATION` varchar(100) DEFAULT NULL,
      `NUMBERCARSOWNED` tinyint(4) DEFAULT NULL,
       PRIMARY KEY (`CUSTOMERKEY`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    Au chargement de la table dans la source le Varchar devient un DT_WSTR

    Script table de destination qui se fait automatiquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TABLE `CLIENTS_MARIES` (
        `CUSTOMERKEY` INT,
        `BIRTHDATE` DATETIME,
        `MARITALSTATUS` NVARCHAR(1),
        `GENDER` NVARCHAR(1),
        `YEARLYINCOME` NUMERIC (15,3),
        `TOTALCHILDREN` SMALLINT,
        `NUMBERCHILDRENATHOME` SMALLINT,
        `EDUCATION` NVARCHAR(40),
        `OCCUPATION` NVARCHAR(100),
        `NUMBERCARSOWNED` SMALLINT
    )
    Mais au Mappage, le type de la destination change et devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    `BIRTHDATE` NVARCHAR(255),
        `MARITALSTATUS` NVARCHAR(255),
        `GENDER` NVARCHAR(255),
        `YEARLYINCOME` NVARCHAR(255),
        `TOTALCHILDREN` NVARCHAR(255),
        `NUMBERCHILDRENATHOME` NVARCHAR(255),
        `EDUCATION` NVARCHAR(255),
        `OCCUPATION` NVARCHAR(255),
        `NUMBERCARSOWNED` NVARCHAR(255),
        `CUSTOMERKEY` NVARCHAR(255)
    )
    J'ai mis un outil de conversion pour tout mettre en DT_WSTR(255), mais les mariés et célibataires sont mélangés, toutes les tables ne se chargent pas et elles n'arrivent pas toutes à destination.

    cordialement,

  7. #7
    Membre éclairé Avatar de Bernardos
    Homme Profil pro
    Consultant Senior dba sql server & Microsoft Business Intelligence
    Inscrit en
    Avril 2008
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant Senior dba sql server & Microsoft Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 332
    Points : 723
    Points
    723
    Par défaut
    Là par contre y a un truc que je comprend pas. Pour birthdate par exemple, si tu as un datetime dans ta source et ta destination il n' y a aucun besoin de conversion...
    as tu fait d'autre manip sur tes objets ou table. est ce qu' à l'origine ton birthdate de destination n'était pas un varchar?
    refais un nouveau flux de données.
    dans celui ci tu vas mettre un ole db source qui pointe sur ta table ou via une requete.
    ensuite, tu crées directement un ole db destination.
    tu lies les 2.
    tu fais ton mapping.
    Qu'est ce que ca raconte?

    Donc là c'était pour répondre à ton problème technique de conversion mais peux tu me dire quel est l’intérêt de splitter ta table en plusieurs selon le statut Marital?
    cordialement,

    Loïc
    Loïc BERNARD
    Consultant Senior dba sql server & Microsoft Business Intelligence



    Il n'y a jamais de problèmes, il n'y a que des solutions!

  8. #8
    Membre à l'essai
    Femme Profil pro
    Formatrice
    Inscrit en
    Avril 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Formatrice
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2016
    Messages : 20
    Points : 18
    Points
    18
    Par défaut Source Ole DB au lieu de ADO.NET
    Bonjour,

    J'ai supprimé tous les flux pour refaire une source OLE DB, fractionnement et destination Excel (l'intérêt pour moi est de faire un transfert sur Excel)
    A la création de la table Excel toujours pas de soucis pour les types que se déversent bien mais arrivé au Mappage... Catastrophe !!
    Nom : Mappage BIRTHDATE TYPE.jpg
Affichages : 574
Taille : 32,7 Ko

    le DT_WSTR revient sur tous les champs.

    Pour répondre à ta 2° question Bernados, je pense qu'il n'y a aucun intérêt. C'est une application pour un projet d'étudiant.
    Vu ma dextérité je pensai faire simple

    cordialement,

  9. #9
    Membre éclairé Avatar de Bernardos
    Homme Profil pro
    Consultant Senior dba sql server & Microsoft Business Intelligence
    Inscrit en
    Avril 2008
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant Senior dba sql server & Microsoft Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 332
    Points : 723
    Points
    723
    Par défaut
    tu me diras tout.
    Maintenant que je sais que la destination est un fichier EXCEL, je coprend mieux
    je sais pas si on peut configurer le type des données pour un fichier XLS.
    en règle général, sauf obligation moi je génère des CSV, nettement plus simple à l'utilisation.
    Cordialement,

    Loïc
    Loïc BERNARD
    Consultant Senior dba sql server & Microsoft Business Intelligence



    Il n'y a jamais de problèmes, il n'y a que des solutions!

  10. #10
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 101
    Points : 187
    Points
    187
    Par défaut
    Bonjour,

    Ci-joint quelques explications sur la gestion par Excel des types de données. L'article est basé sur l'importation de data mais celui-ci permet de comprendre ce qui se passe en interne et les types autorisés coté Excel.

    https://www.simple-talk.com/sql/ssis...to-ask/#second

Discussions similaires

  1. Forme conditionnelle vers Excel
    Par Line dans le forum VBA Access
    Réponses: 3
    Dernier message: 15/11/2008, 00h44
  2. Access vers excel
    Par tiopan dans le forum Access
    Réponses: 6
    Dernier message: 05/12/2003, 08h43
  3. [CR] Exportation vers Excel
    Par djamel64 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 01/12/2003, 14h52
  4. exportation vers excel
    Par Pm dans le forum XMLRAD
    Réponses: 3
    Dernier message: 24/01/2003, 14h48
  5. [] [Excel] Exporter un graphe MSChart vers Excel
    Par Gonzo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/12/2002, 17h49

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