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 :

Appeler des variables d'une autre table SAS


Sujet :

SAS Base

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Appeler des variables d'une autre table SAS
    Bonjour à toutes et tous,

    Je suis débutant sur SAS et j'ai un petit soucis de manipulation de données. En effet j'ai 2 tables SAS, la première contient des adresses IP et la deuxième contient des plages d'adresses IP ( IP from et IP to) ainsi que les Pays associés à ces plages, et donc je cherche à associer chaque adresse IP de la première table au pays qui convient.
    Merci par avance.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Dataminer
    Inscrit en
    Septembre 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Dataminer
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 29
    Points : 38
    Points
    38
    Par défaut Fusion
    Un fusion par un merge ou via SQL ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Salut (je me permet je suis étudiant moi aussi)

    Ton problème n'est pas simple pour un débutant. As-tu déjà utilisé des macros SAS ?

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    @Skewness, Ce n'est pas possible de faire une jointure entre les 2 tables ( pas de clé).
    @Phrynee29, Oui j'ai déjà crée une macro qui m'affiche le pays en rentrant son adresse IP, mais le soucis c'est que je ne peux pas stocker les valeurs de cette macro dans une variable.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Avril 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2018
    Messages : 9
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    As-tu la possibilité de créer une clé identique en extrayant une racine commune pouvant servir de clé pour un merge dans une étape suivante ?
    par exemple extraction d'une partie des adresse IP qui pourra être utilisé par la suite pour un merge entre tes 2 tables ?

    Bien à vous

  6. #6
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    Juillet 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 461
    Points : 1 119
    Points
    1 119
    Billets dans le blog
    14
    Par défaut
    Bonjour,

    Même sujet


    https://blogs.sas.com/content/sasdum...cal-ip-values/

    Cordialement
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    @RomainTruillet Je pense pas qu'il y ait une clé commune pouvant servir de clé de jointure entre les 2 tables, j'ai pensé à une proc format qui pourrais m'aider éventuellement à stocker les plages d'adresses IP en tant que format.
    @m.brahim Merci beaucoup.

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3 064
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 064
    Points : 4 605
    Points
    4 605
    Par défaut
    Bonjour ,

    Pour résoudre ton problème c'est relativement simple pourtant

    Un exemple de données CSV brute :

    Table 1 :

    Code csv : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    IP;pays;info1;info2
    0.0.0.0;FR;truc;bidule
    1.1.1.1;BE;mahcin;chose
    2.2.2.2;DE;chouette;bazar
    3.3.3.3;FR;michu;tartanpion

    Table 2 :

    Code csv : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    plage;pays;longueurplage;longueurchaine;infoA;infoB
    0.0;FR;3;12;XXXX;YYYY
    0.1;FR;3;9;XXX1;YYY1
    1.;BE;2;10;AAA1;BBB1
    4.4.4;GB;11;ZZZ1;TTT1

    Pour identifier tes plages il te faudra comparer la longueur de chaine d'un ip lambda avec celui des ip de référence .

    Il te faut 3 critères indissociable :

    * comparer le début chaine si il est identique aux plages de références
    * comparer que la longueur total de la chaine doit être identique aux longueurs autoriser par les plages couvertes
    * s'assurer que les pays ou les régions sont bien attribuer .

    Voici une requête sql :

    Code SQL SAS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    proc sql ;
     
    create table resultat as
     
    select *
    from work.table1
    inner join work.table2 on substr(table1.ip,1,length(table2.longueurplage)) like table2.plage and length(table1.ip) = table2.longueurchaine and table1.pays = table2.pays
    ;
     
    run;

    Inner join va te renvoyer l'ensemble des conditions exclusivement possible. Tu peux jouer avec un left ou rigth join pour voir si des combinaisons ne sont pas remontées. Mauvaise attribution , erreur de saisie , ip invalide ...

    Attention les temps de traitement pour ce type de projection sont assez conséquent. Il arrive que SAS mettent 1 à 2 h de traitement . On projette tout sur tout . Mais le résultat est garanti .

    A toi de jouer

Discussions similaires

  1. Réponses: 5
    Dernier message: 11/07/2017, 09h46
  2. Réponses: 6
    Dernier message: 16/01/2014, 11h21
  3. Réponses: 7
    Dernier message: 29/04/2011, 13h20
  4. Réponses: 2
    Dernier message: 28/11/2006, 15h20
  5. [Conception] Rerchercher des informations sur une autre table
    Par tilou dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/05/2006, 19h35

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