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 dans une concaténation de deux tables


Sujet :

QlikView

  1. #1
    Membre régulier
    Femme Profil pro
    Stagiaire informatique décisionnelle
    Inscrit en
    Mars 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Stagiaire informatique décisionnelle
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2014
    Messages : 81
    Points : 71
    Points
    71
    Par défaut Erreur dans une concaténation de deux tables
    Bonjour,

    Toujours en train d'évoluer sur mon script Qlikview, je bloque actuellement sur la concaténation de deux tables. Le script marche mais les données à l'arrivée de sont pas cohérentes. En effet, partant d'une base de données Access je peux "vérifier" les résultats de mes tableaux via des requêtes simples (les requêtes compliquées faisant planter Access au vu du grand nombre de lignes).

    Voici mon script :

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    FAIT_HOSPIT: 
    LOAD
         FINESS & '-' & index_RSA as Id_sejour,
         FINESS & '-' & index_RSA & '-' & index_RUM AS Id_RUM,
         FINESS,
         Vers_RSA, 
         index_RSA, 
         Vers_RSS, 
         Num_sequentiel_tarifs, 
         Vers_Classif_RSS, 
         GHM_RSS, 
         Ctrl_GHM_RSS, 
         Vers_Classif_RSA, 
         GHM_RSA as GHM, 
         Ctrl_GHM_RSA, 
         Nb_RUM, 
         age_annee, 
         age_jour, 
         sexe, 
         mode_entree, 
         provenance_entree, 
         mois_sortie, 
         annee_sortie, 
         mode_sortie, 
         destination, 
         type_sejour, 
         duree_sejour, 
         code_Geo, 
         poids_entree, 
         age_gestationnel, 
         delai_date_regles_date_entree, 
         Nb_seances, 
         GHS, 
         Nb_journees_ExH, 
         type_sejour_ExB, 
         Nb_journees_ExB, 
         forfait_dialyse, 
         TOP_UHCD, 
         confirmation_codage, 
         Nb_Supp_hemodialyse, 
         Nb_Supp_Entr_dialyse_Auto, 
         Nb_Supp_Entr_dialyse_Ambu, 
         Nb_Supp_Entr_hemodialyse, 
         Nb_actes_GHS_9615, 
         Nb_Rdth, 
         filler, 
         Nb_Supp_caisson_hyperbare, 
         type_prelevement_organe, 
         Nb_Supp_REA, 
         Nb_Supp_SI_REA, 
         Nb_Supp_STF, 
         Nb_Supp_SRC, 
         Nb_Supp_NN1, 
         Nb_Supp_NN2, 
         Nb_Supp_NN3, 
         Nb_Supp_REP, 
         passage_lit_soins_palliatifs, 
         Type_radiotherapie, 
         type_dosimetrie, 
         Num_innovation, 
         Nb_faisceaux, 
         index_RUM_DP,
         'DR' as Nature, // On stocke la nature des codes DR
         DR as Code,
         Nb_DAS, 
         Nb_actes,
         'RSA' as type_hospit;
     
    SQL SELECT 
    * FROM RSA;
     
    Concatenate (FAIT_HOSPIT)
    LOAD
    	FINESS & '-' & index_RSA AS Id_sejour,
    	FINESS & '-' & index_RSA & '-' & index_RUM AS Id_RUM,
    	FINESS,
    	index_RSA,
    	index_RUM,
    	'RSA' as type_hospit,
    	'DAS' as Nature,
    	DAS as Code;
     
    SQL SELECT * FROM DAS;
    Quand j'implémente ce code, cela marche très bien sauf que je n'ai pas le même nombre quand je requête sur Access dans la table DAS (avec le nombre de ligne) et quand je requête les id_sejour sur les données de type 'DAS' dans Qlikview.

    A quoi cela peut-il être du ? Y a t-il un moyen de remédier à ça ?

    Merci d'avance.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 940
    Points : 1 409
    Points
    1 409
    Par défaut
    Peux-tu nous donner un exemple de requête qui ne donne pas le même résultat ?

  3. #3
    Membre régulier
    Femme Profil pro
    Stagiaire informatique décisionnelle
    Inscrit en
    Mars 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Stagiaire informatique décisionnelle
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2014
    Messages : 81
    Points : 71
    Points
    71
    Par défaut Exemple de requêtes
    Bien sûr , voici un exemple de requête sous Access :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select count(*) from DAS;
    Cela me retourne 2 939 099 lignes. Si je réalise une sélection sur Qlikview par Nature de code 'DAS', cela me retourne à peine 873 286 lignes.

    Je pense qu'il y a un point que je n'ai pas du comprendre dans ma concaténation.

  4. #4
    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
    Et quelle est l'expression correspondante en QlikView ?

    Parce que si c'est sur un tableau qui affiche le nombre de "Id_RUM", il suffit que plusieurs lignes aient le même "Id_RUM" pour que QlikView n'affiche qu'une seule ligne.

  5. #5
    Membre régulier
    Femme Profil pro
    Stagiaire informatique décisionnelle
    Inscrit en
    Mars 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Stagiaire informatique décisionnelle
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2014
    Messages : 81
    Points : 71
    Points
    71
    Par défaut
    Sur QlikView, la "requête" m'affichant le nombre de séjours suivant que ce soit un RUM ou un RSA dans le tableau est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If(type_hospit='RSA',Count(DISTINCT Id_sejour),Count(DISTINCT Id_RUM))

  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
    Vous avez votre réponse : vous faite un compte des valeurs distinctes de "Id_RUM" dans QlikView, alors que dans Access, vous comptez toutes les lignes...

    Si dans Access on a 15 lignes qui ont le même FINESS / index_RSA / index_RUM, ça retournera "15" là où QV retournera "1".

  7. #7
    Membre régulier
    Femme Profil pro
    Stagiaire informatique décisionnelle
    Inscrit en
    Mars 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Stagiaire informatique décisionnelle
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2014
    Messages : 81
    Points : 71
    Points
    71
    Par défaut
    Pourtant "CounT(*)" n'est pas censé supprimer les doublons ? De plus, dans le doute j'avais essayé avec la requête suivante sous Access :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT count(*) FROM DAS;
    Et cela me renvoyait le même nombre de lignes.
    J'ai un petit soucis de compréhension

    En revanche, en essayant d'enlever la close DISTINCT sous Qlikview, je retombe effectivement sur le même nombre de lignes.

    A priori, mon implémentation est donc correcte ?
    Merci encore PhunkyBob

  8. #8
    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
    Même si "count" supprime les doublons, elle supprime les doublons sur "*", pas sur "uniquement les champs FINESS / index_RSA / index_RUM".

    Quand vous faites un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT
    FINESS, 
    index_RSA,
    index_RUM,
    count(*) AS CNT
    FROM DAS
    GROUP BY FINESS, index_RSA, index_RUM
    ORDER BY CNT DESC
    toutes les lignes valent "1" ?

  9. #9
    Membre régulier
    Femme Profil pro
    Stagiaire informatique décisionnelle
    Inscrit en
    Mars 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Stagiaire informatique décisionnelle
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2014
    Messages : 81
    Points : 71
    Points
    71
    Par défaut
    Effectivement, je comprends mieux la problématique. Et non, vous avez raison, la plupart des valeurs sont en double : jusqu'à 46 doublons sur certaines lignes
    Merci encore, à chaque fois vous me résolvez mes problème et je vois que j'ai quelques lacunes sur la compréhension de certains problèmes

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

Discussions similaires

  1. Erreur dans une procédure stockée avec table mémoire
    Par Artylus dans le forum Développement
    Réponses: 4
    Dernier message: 27/01/2010, 17h57
  2. [MySQL] Faire une jointure entre deux tables qui ne sont pas dans la même base de données
    Par sandddy dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 03/04/2008, 14h18
  3. [Access] Fonction TOP dans une requête sur deux tables
    Par pc75 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 04/07/2007, 09h31
  4. [VBA][03] Erreur dans une fonction qui vide des tables
    Par NiKoTiNe dans le forum VBA Access
    Réponses: 3
    Dernier message: 20/04/2007, 14h13
  5. mettre un message d'erreur dans une table
    Par sam01 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 16/12/2006, 16h56

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