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

SAS Base Discussion :

Optimisation sous SAS : Alternative aux jointures (Call execute par exemple ?)


Sujet :

SAS Base

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Optimisation sous SAS : Alternative aux jointures (Call execute par exemple ?)
    Bonjour,

    J'ai jamais eu l'occasion de le dire mais ce forum m'a beaucoup aidé dans mon travail Et j’espère qu'il continuera longtemps à nous éclairer !!

    Je vous écris par rapport à une problématique d'optimisation.

    J'ai 2 tables : Une table de périmètre data_Perim (100 000 lignes) et une table de prime data_Prime (47 million de lignes). Je développe un outil d'automatisation dans le cadre de mon travail. Mais la jointure entre les 2 tables me prends un temps fou et le temps de traitement est important pour mon chef.

    J'ai 2 clefs entre les deux, le numéro d'entreprise et la catégorie de risque.

    L'idée est de prendre le nom d'entreprise qui m’intéresse dans la table data_Perim (réduit la table data_perim a maximum 100 lignes). Puis de faire un Left Join entre la table data_Prime et data_Perim filtrée. Mais ça prends un temps conséquent.

    J'ai vue que peut être un "call execute" pourrai m'aider mais je n'ai pas saisie comment fonctionne cette fonctionnalité.

    Si vous avez des orientations à me donner ça serai top !

    Merci,

  2. #2
    Membre expérimenté
    Homme Profil pro
    Attaché statisticien
    Inscrit en
    Mai 2011
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Attaché statisticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2011
    Messages : 687
    Points : 1 581
    Points
    1 581
    Par défaut
    Bonsoir,


    pourrais tu expliquer plus clairement ce que tu cherche à faire et ce qui te prend du temps ?

    Quand à la call execute dans le cadre de ton application ma première impression est qu'elle aurait plus un côté gadget qu'un réel intérêt en terme de temps de traitement.
    Mais je peux me tromper car j'ai du mal à saisir ce qui te prend du temps...
    Si tu avais un exemple de code ? Cela serait peut-être plus clair.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci JeromeMATHIAS pour ton retour.

    Pour être précis : Avant de développer mon outil je me prépare une base de calcul. Et lors de cette préparation je fais une jointure qui me coute beaucoup de temps de traitement entre une base de périmètre ou j'ai une (liste de groupe avec filiales et numéro de contrats..) et une table de prime détaillé (47M de lignes).

    Pour être précis j'ai comme unique clef entre ces deux tables le numéro de Siren. Pour alléger les temps de traitement j'isole d'abord le groupe que je veux prendre (Sortie table de maximum 100 lignes), puis je fais une jointure avec la table de 47M de lignes.

    Le code ci dessous est peut être plus clair :

    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
    PROC SQL;
     CREATE TABLE WORK.PERIM AS SELECT DISTINCT CC0_TREF_PERIMETRE_JOUR.ID_GROUPE,
    	 PERIMETRE_JOUR.NOM_GROUPE,
    	 PERIMETRE_JOUR.ID_ENTREPRISE,
    	 PERIMETRE_JOUR.SIREN,
    	 PERIMETRE_JOUR.CONTRAT,
    	 PERIMETRE_JOUR.RAISON_SOCIALE,
    	 PERIMETRE_JOUR.CRISQ2,
    	 PERIMETRE_JOUR.DT_ENTREE_GROUPE,
    	 PERIMETRE_JOUR.DT_SORTIE_GROUPE 
     FROM PERIMETRE_JOUR AS PERIMETRE_JOUR
     WHERE PERIMETRE_JOUR.NOM_GROUPE = "GROUPE 1";
    QUIT;
     
    PROC SQL;
     CREATE TABLE WORK.Jointure AS SELECT DISTINCT PRIMES.ACT_DSOIN_MMAA,
    	 PRIMES.OCC_NIV1,
    	 PRIMES.OCC_NIV2,
    	 PRIMES.OCC_NIV3,
    	 PRIMES.BENEF_LIEN1,
    	 PRIMES.BENEF_LIEN2,
    	 PRIMES.MONT_RC,
    	 PRIMES.ACT_NB,
    	 PERIM.NOM_GROUPE,
    	 PERIM.CRISQ2,
    	 PERIM.RAISON_SOCIALE,
    	 PERIM.DT_ENTREE_GROUPE,
    	 PERIM.DT_SORTIE_GROUPE 
     FROM PRIMES AS PRIMES 
    	  LEFT JOIN WORK.PERIMETRE_JOUR AS PERIMETRE_JOUR ON (PRIMES.AFFIL_SIREN = PERIM.SIREN);
    QUIT;
    L'idée est de trouver une astuce pour diminuer les temps de traitement.

    Merci encore.

Discussions similaires

  1. Alternatives aux applets sous Android ?
    Par azias dans le forum Android
    Réponses: 3
    Dernier message: 24/07/2012, 12h01
  2. Remplacer les sous requêtes grâce aux jointures
    Par onizuka_metal dans le forum Requêtes
    Réponses: 6
    Dernier message: 25/09/2009, 16h48
  3. jointure sous SAS proc sql
    Par id301077 dans le forum SAS Base
    Réponses: 3
    Dernier message: 15/05/2009, 17h08
  4. Alternative aux jointures, ça existe ?
    Par FrontLine dans le forum Requêtes
    Réponses: 5
    Dernier message: 18/03/2008, 20h56
  5. alternatives aux propriétés filter sous mozilla
    Par rol666 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 29/08/2005, 19h23

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