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 :

Fractionner une table SAS en fonction du nombre de lignes


Sujet :

SAS Base

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Enseignant
    Inscrit en
    Octobre 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2021
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Fractionner une table SAS en fonction du nombre de lignes
    Bonsoir,

    J'ai une question à laquelle je bloque dans mes recherches.
    J'ai une base de données avec 8 234 567 lignes.
    Je souhaite la découper en 9 autres tables.
    Table 1 de l'observation 1 à 999 999
    Table 2 de l'observation 1 000 000 à 1 999 999
    ...
    Je ne suis pas experte avec SAS et je recherche une aide à ce problème.
    Merci par avance

  2. #2
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    Bonjour Clara.
    En une étape Data, si vous ne rechignez pas à faire un peu de copier/coller, ça donnerait ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DATA work.table1 work.table2 work.table3 /* etc. */ ;
      SET grosseTable ;
      SELECT ;
        WHEN (_N_ < 999999) OUTPUT work.table1 ;
        WHEN (_N_ < 1999999) OUTPUT work.table2 ;
        WHEN (_N_ < 2999999) OUTPUT work.table3 ;
        /* etc. */
       OTHERWISE ;
      END ;
    RUN ;
    Le SELECT / WHEN fonctionne comme IF ELSE IF ELSE IF etc. et le OTHERWISE est un ELSE final (il vaut toujours mieux en laisser un).
    Bon courage.
    Olivier

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Enseignant
    Inscrit en
    Octobre 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2021
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonsoir Olivier,

    Merci beaucoup pour votre réponse.
    J'ai essayé mais j'ai un problème de taille. Les fichiers restent trop volumineux. Je voudrais ne pas depasser 30 Mo par sous fichier. Est ce que l'on peut intégrer cette condition ?
    La solution me parait plus complexe, surtout en ajoutant la taille ...

    Merci par avance

  4. #4
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    Bonjour Clara.
    Non, on ne peut pas estimer la taille de la table produite à l'intérieur de l'étape DATA et en faire une condition.
    Pour diminuer la taille des tables, deux pistes toutes simples à envisager avant de fractionner davantage :
    1) avez-vous besoin de toutes les variables ? Peut-être pouvez-vous en dropper quelques-unes
    2) la taille (LENGTH) des variables est-elle optimale ? Pour rappel les variables textes ont un LENGTH correspondant au nombre de caractères maximum d'une valeur (on les taille souvent trop grand) ; les variables numériques contenant des entiers ont un LENGTH entre 3 et 8 ; les variables numériques avec des décimales sont à 8 impérativement. S'il y a des variables avec des entiers, vous pouvez envisager de réduire la taille en vous aidant de ce tableau. Si vous voulez modifier la taille d'une variable, insérez une instruction LENGTH dans l'étape DATA, avant l'instruction SET.
    Bon courage.
    Olivier

Discussions similaires

  1. Réponses: 15
    Dernier message: 21/07/2017, 14h57
  2. Réponses: 4
    Dernier message: 03/02/2016, 16h56
  3. Réponses: 4
    Dernier message: 22/03/2010, 21h24
  4. [SQL2005] requete en fonction du nombre de ligne d'une table
    Par tehes dans le forum Développement
    Réponses: 2
    Dernier message: 21/11/2007, 14h10
  5. [SQL2005] requete en fonction du nombre de ligne d'une table
    Par tehes dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 21/11/2007, 14h10

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