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

QlikView Discussion :

Erreur de conversion du type de données varchar en numeric.


Sujet :

QlikView

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 64
    Points : 37
    Points
    37
    Par défaut Erreur de conversion du type de données varchar en numeric.
    Bonjour,

    Dans mon fichier extract :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    Humidite_moyenne :
    
    LOAD 	        dateliv
    		, humidite
          	        ,'Humidite_moyenne' as Humidite_moyenne;
    
    SQL SELECT 		(Year(DAT_LIV) & '-' & Month(DAT_LIV)) as dateliv
    				, avg(CAST( Replace( Replace( REF2_F, 'Humidité: ', '' ), '%', '' ) as decimal)) as humidite
    				=> Erreur de conversion du type de données varchar en numeric.
    				
    				
    FROM base.table N
    GROUP BY (Year(DAT_LIV) & '-' & Month(DAT_LIV))
    ;
                               
    STORE Humidite_moyenne INTO $(QVD_EXTRACT_DIR)Humidite_moyenne.QVD;
    DROP TABLE Humidite_moyenne;
    
    
    /* AUTRES SYNTAXES DÉJA TESTÉES :
    /* avg(CAST( Replace( Replace( REF2_F, 'Humidité: ', '' ), '%', '' ) as decimal)) as humidite */
    /* avg(CONVERT(decimal(10,5), Replace( Replace( REF2_F, 'Humidité: ', '' ), '%', '' ))) as humidite */
    /* avg(CONVERT(decimal(10,5), Replace( Replace( Replace( REF2_F, 'Humidité: ', '' ), '%', '' ), '.', ',' ))) as humidite */
    /* avg( CAST( Replace( Replace( Replace( REF2_F, 'Humidité: ', '' ), '%', '' ), '.', ',' ) as DECIMAL(9,2) ) ) as humidite */
    /* avg(CAST(Replace(Replace(REF2_F, 'Humidité: ', ''), '%', '') as float)) as humidite */
    /* avg(Replace(Replace(REF2_F, 'Humidité: ', ''), '%', '')) as humidite */
    /* date(DAT_LIV,'MM-YYYY') as dateliv */
    /* avg(SubField(SubField(REF2_F, ' ', 2), '%', 1)/100) as humidite */
    /* DATEADD(MONTH, DATEDIFF(MONTH, 0, DAT_LIV), 0) as dateliv */
    /* avg(STRING_SPLIT(STRING_SPLIT(REF2_F , ' ')[1] , '%')[0]/100) as humidite */
    Cordialement

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 64
    Points : 37
    Points
    37
    Par défaut
    Bonjour,

    Personne pour m'aider ?

  3. #3
    Modérateur

    Inscrit en
    Octobre 2006
    Messages
    1 649
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 649
    Points : 2 529
    Points
    2 529
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Etant donné que c'est dans la requête SQL qu'il y a une erreur, je vous conseille de regarder dans le forum de votre moteur SQL.

    Sinon, récupérez toutes les valeurs dans votre requête SQL, et faites l'agrégation en QlikView.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 64
    Points : 37
    Points
    37
    Par défaut
    Bonjour,

    Mon champs REF2_F enregistre une donnée sous la forme 'Humidité: 23.3%'.
    Je dois donc récupérer les humidités (dans l'exemple 23.3), les grouper selon les dates de livraison puis me servir du résultat dans le load qlikview.
    Je ne vois donc pas du tout comment faire l'inverse. Si je sélectionne juste les données en SQL, je ne pourrais pas faire de group by dans le load et en plus mes humidités seront toujours au format varchar 'Humidité: 23.3%'.

    Suis-je passé à côté de quelquechose ?

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 64
    Points : 37
    Points
    37
    Par défaut
    La commande suivante me donne un "Échec de lecture ODBC" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    LOAD 	(Year(DAT_LIV) & '-' & Month(DAT_LIV)) as dateliv
    		, avg(SubField(SubField(REF2_F, ' ', 2), '%', 1)/100) as humidite
          	,'Humidite_Moyenne' as Humidite_Moyenne;
     
    SQL SELECT 		DAT_LIV
    				, REF2_F
     
    FROM mabase.dbo.NEGOCE N
    GROUP BY DAT_LIV, REF2_F
    ;

  6. #6
    Modérateur

    Inscrit en
    Octobre 2006
    Messages
    1 649
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 649
    Points : 2 529
    Points
    2 529
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par CodeWalker Voir le message
    Je ne vois donc pas du tout comment faire l'inverse. Si je sélectionne juste les données en SQL, je ne pourrais pas faire de group by dans le load et en plus mes humidités seront toujours au format varchar 'Humidité: 23.3%'.

    Suis-je passé à côté de quelquechose ?
    Pourquoi ne pouvez-vous pas faire le GROUP BY dans le LOAD ?

    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
    data:
    SQL SELECT 
    	(Year(DAT_LIV) & '-' & Month(DAT_LIV)) as dateliv, 
    	Replace( Replace( REF2_F, 'Humidité: ', '' ), '%', '' ) as humidite
    FROM base.table N
    ;
     
    grouped_data:
    NOCONCATENATE 
    LOAD
    	dateliv, 
    	avg(humidite) AS humidite
    RESIDENT data
    GROUP BY dateliv
    ;
     
    DROP TABLE data;

    "Échec de lecture ODBC", c'est qu'il y a un problème de connexion à votre ODBC.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 64
    Points : 37
    Points
    37
    Par défaut
    J'ai appris beaucoup de choses aujourd'hui.

    Merci beaucoup, mon problème est résolu.

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

Discussions similaires

  1. Erreur de conversion du type de données varchar en bigint
    Par lacigale dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 29/01/2013, 10h03
  2. [Débutant] Erreur de conversion du type de données varchar en float
    Par nanox dans le forum C#
    Réponses: 2
    Dernier message: 02/12/2011, 11h53
  3. erreur de conversion de type de donnée
    Par sunwind dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 05/05/2008, 10h44
  4. Réponses: 2
    Dernier message: 05/06/2007, 23h07
  5. Erreur 3421, Erreur de conversion de type de données
    Par khorn dans le forum VBA Access
    Réponses: 13
    Dernier message: 01/06/2007, 10h52

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