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 :

Pivot avec nombre de colonnes indéterminé


Sujet :

SSIS

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 25
    Points : 27
    Points
    27
    Par défaut Pivot avec nombre de colonnes indéterminé
    Bonjour,

    Je suis confronté à un problème de transformation de mes données dans un package SSIS. Je vous expose mon problème, voici mon entrée (OLE DB)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ANNEE | PAYS | NUM_ELEVE | VARIABLE | VALEUR
    2005   |France|        1        | EL_AGE    |    10
    2005   |France|        1        | EL_VILLE  |  Paris
    2005   |France|        1        | EL_SCORE|    15
    2005   |France|        2        | EL_AGE    |    11
    2005   |France|        2        | EL_VILLE  |  Lyon
    2005   |France|        2        | EL_SCORE|    14
    2005   |France|        3        | EL_AGE    |    9
    2005   |France|        3        | EL_VILLE  |  Marseille
    2005   |France|        3        | EL_SCORE|    17
    J'aimerais que ma sortie soit la suivante :
    Bonjour,

    Je suis confronté à un problème de transformation de mes données dans un package SSIS. Je vous expose mon problème, voici mon entrée (OLE DB)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ANNEE | PAYS | NUM_ELEVE | EL_AGE | EL_VILLE | EL_SCORE
    2005   |France|        1        |    10    |   Paris    |      15
    2005   |France|        2        |    11    |   Lyon    |      14
    2005   |France|        3        |     9     | Marseille |      17
    J'ai réussi à avoir ce résultat grâce à un pivot transormation quand je rentre en dur les colonnes EL_AGE, EL_VILLE, EL_SCORE.
    Cependant, le nombre de variables et leur nom est indéterminés donc je ne peux pas créer les variables en dur dans le pivot.
    Je ne sais pas comment faire pour que les colonnes soient créées automatiquement.
    Est-il déjà possible de réaliser cette transformation ?

    Merci de votre aide,

    Julien

  2. #2
    Membre habitué Avatar de scharly3
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Novembre 2008
    Messages : 121
    Points : 144
    Points
    144
    Par défaut
    Bonjour,

    Si je ne m'abuse il s'agit là de faire un Dynamic Pivot avec SSIS, tu peux t'appuyer sur l'article suivant : http://sqlblog.com/blogs/jamie_thoms...is-nugget.aspx
    Sauget Charles-Henri - MCITP Business Intelligence Developer 2008 - http://www.sauget-ch.fr

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 25
    Points : 27
    Points
    27
    Par défaut
    J'ai réussi à le faire avec un Pivot. Mais pour cela, il a fallu que je déclare en dur les colonnes El_AGE, EL_VILLE et EL_SCORE.

    Maintenant je voudrais que ces colonnes se créées automatiquement, car pour cet exemple j'ai mis 3 colonnes mais dans un cas concret je pourrais avoir 200 colonnes et je ne connais pas les noms des colonnes à l'avance.

  4. #4
    Membre émérite Avatar de FrancoisJehl
    Homme Profil pro
    BI Engineer
    Inscrit en
    Juillet 2009
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : BI Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 485
    Points : 2 883
    Points
    2 883
    Par défaut
    Abandonne SSIS Tu peux faire ça avec des PIVOT en T-SQL. J'avais écrit une PS immonde il y a 3 ans pour ce genre de cas qui forge du D-SQL en fonction des valeurs de colonnes. http://fjehl.blogspot.com/2009/07/sq...-standard.html
    François JEHL
    BI Engineer | MVP SQL Server
    http://fjehl.wordpress.com
    Pour me contacter, par MP ou ici, mais pas pour des questions techniques.

    /*
    Avant de poster cherchez dans la FAQ et utilisez la fonction "Rechercher" du forum.
    Au moment de poster, posez votre question dans le bon sous-forum (Débuter, SSAS, SSRS, SSIS), en utilisant les TAGs prédéfinis ([2K], [2K5], [2K8], [2K8R2]).
    */

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 25
    Points : 27
    Points
    27
    Par défaut
    Merci pour cette solution. J'ai été sur le lien mais impossible de télécharger l'exemple....
    Cependant, j'ai creusé dans cette voie et j'ai réussi grâce au code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    DECLARE @columns VARCHAR(8000)
     
    SELECT @columns = COALESCE(@columns + ',[' + cast(Name_Variable as varchar) + ']',
    '[' + cast(Name_Variable as varchar)+ ']')
    FROM variables_validees_eleves
    GROUP BY Name_Variable 
     
    DECLARE @query VARCHAR(8000)
     
    SET @query = '
    SELECT *
    FROM variables_validees_eleves
    PIVOT
    (
    MAX(Valeur)
    FOR [Name_Variable]
    IN (' + @columns + ')
    )
    AS p'
     
    EXECUTE(@query);
    maintenant, j'aimerai exporter le résultat dans un fichier Excel (.xlsx).
    Pour cela, j'ai commencé à créer une table, j'insert le résultat dans la table et ensuite avec un OPENROWSET.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    Create table MyTempTable_JF (Date INT, Name_Pays Varchar(50), Numero_SousSysteme INT, Numero_Strate INT, Numero_Ecole INT, Name_Classe VARCHAR(50), Numero_Eleve INT, EL_AGE VARCHAR(50),EL_SCORE VARCHAR(50), EL_VILLE VARCHAR(50),EL_MOBILETTE VARCHAR(50), EL_CASQUE Varchar(50))
     
    INSERT INTO MyTempTable_JF EXECUTE(@query);
     
    INSERT INTO OPENROWSET ('Microsoft.ACE.OLEDB.12.0', 'Excel 8.0;Database=D:\Classeur2.xlsx;','SELECT * FROM [Feuil1$]') Select * from MyTempTable_JF 
     
    Select * from MyTempTable_JF
     
    drop table MyTempTable_JF
    Le OPENROWSET me met cette erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Msg 7399, Level 16, State 1, Line 33
    Le fournisseur OLE DB "Microsoft.ACE.OLEDB.12.0" du serveur lié "(null)" a rapporté une erreur. Accès refusé.
    Msg 7390, Level 16, State 2, Line 33
    L'opération demandée n'a pas pu être effectuée, car le fournisseur OLE DB "Microsoft.ACE.OLEDB.12.0" du serveur lié "(null)" ne prend pas en charge l'interface de transaction requise.
    Je voulais savoir s'il y'avait un moyen d'extraire le contenu d'une table SQL de façon dynamique vers Excel.

    Merci de votre aide

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

Discussions similaires

  1. requete avec nombre de colonne inconnu
    Par pseudo88 dans le forum Développement
    Réponses: 6
    Dernier message: 03/05/2010, 13h08
  2. Comment Créer une vue avec nombre de colonnes inconnu d'avance ?
    Par masterx_goldman dans le forum Développement
    Réponses: 3
    Dernier message: 21/10/2009, 17h28
  3. Table avec nombre de colonnes en paramètre
    Par segovia dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 3
    Dernier message: 14/08/2007, 08h41
  4. JTable avec nombre de colonne dynamique
    Par fileaxfog dans le forum Composants
    Réponses: 3
    Dernier message: 17/05/2007, 14h07
  5. [VB]Excel et nombre de colonne indéterminé...
    Par Empty_body dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/02/2006, 15h06

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