Entretien développeur SAS : DATA step, macros et lecture du journal

Le développeur SAS maintient des chaînes de traitement, produit des études ou reprend des programmes écrits par d'autres. De SAS Base à Viya, cinq questions montrent vite si la personne lit un journal SAS avec méfiance et sait où s'exécute son code.

Recevoir la fiche complète

Mis à jour le Par l'équipe Delectus5 min de lecture

La fiche Développeur SAS / chargé d'études SAS : technologies, chaîne du poste, une question et la grille d'évaluation

Une bonne question d'entretien SAS fait parler le candidat de code qu'il a écrit ou repris. Le développeur SAS, aussi appelé chargé d'études SAS ou programmeur SAS, écrit des DATA steps, des requêtes PROC SQL et des macros, souvent dans Enterprise Guide, pour alimenter des tables, des reportings ou des études. Les offres viennent de banques, d'assurances, de mutuelles, d'organismes publics et d'ESN, et de nombreuses missions portent sur le passage vers SAS Viya ou vers Python.

Le langage est ancien et les CV se ressemblent. Beaucoup de profils ont appris SAS en école ou en stage et savent lancer des procédures. Moins nombreux sont ceux qui expliquent le PDV, la portée d'une variable macro ou la raison pour laquelle un filtre ne part pas vers Oracle. Les certifications SAS valident les bases du langage. Les réflexes de maintenance se mesurent en entretien.

Un programme repris d'un collègue fait un meilleur support qu'un exercice d'école. Un junior doit maîtriser le DATA step et PROC SQL. Un senior doit expliquer ses macros et ses choix de performance sur base distante. Dans le PDF, le cas porte sur un suivi mensuel des impayés.

De SAS Base à Viya, les outils d'un développeur SAS

SAS Base et le DATA step

Le cœur du langage. Le DATA step lit les données ligne à ligne, les transforme et écrit des tables. Sa logique (le PDV, les variables conservées d'une ligne à l'autre, FIRST. et LAST.) explique la plupart des erreurs silencieuses. Un développeur SAS confirmé la décrit sans hésiter.

Procédures SAS

PROC SORT, MEANS ou SUMMARY, FREQ, TRANSPOSE, FORMAT, REPORT ou TABULATE couvrent le tri, les agrégats, les tableaux croisés et la mise en forme. Le savoir-faire porte sur le choix de la bonne procédure et sur la lecture de sa sortie.

PROC SQL

Le SQL intégré à SAS, pratique pour les jointures et les agrégats. Il ne se comporte pas comme un MERGE de DATA step quand une clé est en double, et un candidat solide sait expliquer la différence.

Macro-langage

Il génère du code SAS : paramètres, boucles, dates calculées à l'exécution. Indispensable pour les traitements récurrents, il devient vite illisible chez un développeur peu rigoureux. La portée des variables et le débogage avec MPRINT se vérifient en entretien.

SAS Enterprise Guide

L'interface de travail la plus répandue, en version 8.6, qui se connecte à SAS 9.4 comme à SAS Viya. On y organise des projets, des flux de processus et des invites. Un projet qui ne tourne que sur le poste de son auteur est un risque à repérer.

SAS/ACCESS et pass-through

Les modules qui relient SAS à Oracle, DB2, Teradata, SQL Server ou PostgreSQL. La question décisive est l'endroit où s'exécute le calcul : un filtre transmis à la base prend quelques secondes, le même filtre appliqué après rapatriement peut coûter des heures.

ODS et sorties Excel

ODS envoie les résultats des procédures vers Excel, PDF ou HTML avec une mise en forme. ODS EXCEL produit des classeurs à plusieurs onglets sans retouche, ce qui occupe une bonne part du travail d'un chargé d'études.

SAS Viya, CAS et SAS Studio

La plateforme actuelle de SAS, sur Kubernetes. Le moteur CAS calcule en mémoire et en parallèle, SAS Studio sert d'interface web. Les missions de passage de SAS 9 vers Viya sont fréquentes et demandent de connaître les différences de comportement du DATA step.

Python, PySpark et Altair SLC

Les destinations des sorties de SAS. Python et PySpark imposent une réécriture. Altair SLC, désormais distribué par Siemens sous le nom Rapidminer SLC, exécute le langage SAS sans licence SAS. Certaines offres le citent déjà à côté de SAS.

Le poste prend des formes variées. Chargé d'études SAS dans une direction marketing, actuarielle ou statistique, le profil produit des analyses et des tableaux à la demande. Développeur SAS dans une DSI ou en ESN, il maintient des chaînes ordonnancées qui tournent chaque nuit. Une grande partie du travail consiste à reprendre des programmes écrits par d'autres, parfois sur plusieurs milliers de lignes, sans documentation. Les missions de migration vers SAS Viya, Python ou un environnement compatible SAS se multiplient et demandent de connaître les pièges du langage. Ce profil se distingue du développeur SAS DI, qui conçoit ses flux dans DI Studio, et du programmeur statistique des essais cliniques, soumis aux standards CDISC.

Ce qu'un développeur SAS doit démontrer

  • DATA step et logique du PDV
  • Procédures et PROC SQL
  • Macro-langage et paramétrage
  • Performance et exécution en base
  • Mise en production et contrôles
  • Migration vers Viya ou Python

Questions d'entretien pour un développeur SAS

Chaque question vient avec ce qu'une bonne réponse contient et le signal qui doit vous alerter. Pas besoin d'être technique pour les poser : écoutez si le candidat raconte du vécu.

  1. Question 1 · junior à confirmé

    Une table de mouvements contient plusieurs lignes par client, triées par date. Comment obtenez-vous, en un seul DATA step, le dernier solde de chaque client et le cumul de ses mouvements ?

    Une bonne réponseUn tri par client et date, puis un DATA step avec SET et BY client. Le cumul se calcule avec une instruction de somme (cumul + montant), qui conserve sa valeur d'une ligne à l'autre et ignore les valeurs manquantes. Il est remis à zéro sur FIRST.client, et la ligne est écrite avec OUTPUT sur LAST.client. La personne explique pourquoi cumul = cumul + montant, sans RETAIN, ne marche pas.

    Signal d'alerteUne requête PROC SQL avec une sous-requête par indicateur, ou l'ignorance de FIRST. et LAST. pour un poste où le DATA step est quotidien.

  2. Question 2 · confirmé

    Vous fusionnez une table de clients et une table de contrats avec un MERGE. Comment repérez-vous les clients sans contrat et les contrats sans client ?

    Une bonne réponseLes deux tables triées sur la clé, l'option IN= sur chacune dans le MERGE, puis des tests sur ces indicateurs : IF a AND NOT b pour les clients sans contrat, IF b AND NOT a pour les contrats orphelins, écrits dans des tables séparées. Elle surveille la NOTE du journal qui signale des valeurs de BY répétées dans plusieurs tables, signe d'une fusion plusieurs-à-plusieurs que le MERGE ne traite pas comme une jointure SQL. Elle cite l'alternative PROC SQL avec une jointure externe et un test IS NULL.

    Signal d'alerteUn MERGE sans BY, ou sans tri préalable, et aucune idée de ce que fait SAS quand une clé est en double des deux côtés.

  3. Question 3 · confirmé

    Un programme doit tourner chaque mois sur les douze derniers mois, sans que personne ne modifie le code. Comment l'écrivez-vous ?

    Une bonne réponseDes variables macro calculées à l'exécution à partir de la date du jour : INTNX avec l'intervalle month et l'alignement sur le début ou la fin du mois, appelé dans %SYSFUNC ou dans un DATA _NULL_ avec CALL SYMPUTX. Le filtre utilise ces bornes sous forme de littéraux de date ("&debut"d). Si un traitement par mois est nécessaire, une boucle %DO dans une macro avec des paramètres. La personne active MPRINT pour relire le code généré.

    Signal d'alerteDes dates écrites en dur et changées à la main chaque mois, ou une macro que la personne ne sait pas déboguer.

  4. Question 4 · confirmé à senior

    Un traitement de nuit lit une table Oracle de 80 millions de lignes, la trie dans SAS puis ne garde que l'année en cours. Il dure trois heures. Que changez-vous ?

    Une bonne réponseFiltrer et réduire dans la base avant de rapatrier : une clause WHERE que SAS/ACCESS transmet à Oracle (l'option SASTRACE montre le SQL réellement envoyé) ou une requête explicite en pass-through avec CONNECT TO. Seules les colonnes utiles sont lues (KEEP=), le tri est fait par Oracle ou évité, et une table de correspondance passe par un objet hash plutôt qu'un tri suivi d'un MERGE. La personne mesure chaque étape dans le journal avec FULLSTIMER.

    Signal d'alerte« Il faut un serveur plus puissant », ou ignorer si le filtre s'exécute dans Oracle ou dans SAS.

  5. Question 5 · confirmé

    Un projet Enterprise Guide lancé à la main chaque mois doit tourner seul, la nuit. Qu'est-ce qui doit changer ?

    Une bonne réponseLe code sort du projet .egp en programmes .sas lancés en batch par l'ordonnanceur de l'entreprise (Control-M, $Universe, LSF ou cron). Les invites deviennent des paramètres ou des variables macro calculées, les chemins locaux et les bibliothèques affectées dans la session EG sont remplacés par un autoexec ou des LIBNAME communs. Le programme renvoie un code retour exploitable (SYSCC), le journal est archivé, et une alerte part en cas d'échec ou d'anomalie de volume.

    Signal d'alerteLaisser le PC allumé avec une tâche planifiée Windows qui ouvre Enterprise Guide, ou planifier sans vérifier le code retour.

Recevez la fiche d'entretien complète en PDF

La fiche pour mener l'entretien de bout en bout, prête à imprimer ou à partager avec le manager.

  • 30 questions sur 6 axes, avec la bonne réponse, le signal d'alerte et la relance
  • Le niveau visé pour chaque question
  • Une mise en situation de 20 minutes et ce qu'on attend du candidat
  • La grille d'évaluation de 1 à 4, axe par axe

Développeur SAS : les points qui reviennent en recrutement

Développeur SAS, chargé d'études SAS, programmeur SAS : est-ce le même poste ?

Le socle technique est commun : DATA step, procédures, PROC SQL et macros. Le chargé d'études SAS produit surtout des analyses et des tableaux pour une direction métier. Le développeur SAS maintient des chaînes de traitement en production. Le programmeur statistique travaille souvent dans les essais cliniques avec les standards CDISC. Adaptez le poids de l'entretien : reporting et lecture des résultats pour le premier, industrialisation et performance pour le second.

Les certifications SAS ont-elles du poids dans un recrutement ?

Les certifications de programmation SAS valident la connaissance du langage, du DATA step aux macros pour le niveau avancé. Elles rassurent pour un profil junior. Pour un profil confirmé, elles pèsent moins qu'un récit précis : une chaîne reprise sans documentation, un traitement accéléré, une migration menée avec comparaison des résultats. Demandez lequel de ces cas la personne a vécu.

Relire du code existant, est-ce une bonne épreuve pour un développeur SAS ?

Oui. Un court test technique de relecture est utile, car le langage se juge bien sur pièce. Donnez un extrait de programme existant avec son journal et demandez ce qui est faux ou risqué : une fusion sans contrôle, un filtre sur une valeur manquante, une NOTE ignorée. Vingt minutes suffisent. La relecture de code révèle mieux l'expérience de production qu'un exercice d'écriture à partir de rien.

Un développeur SAS peut-il évoluer vers Python ?

Oui, et beaucoup d'équipes le demandent lors des migrations. Les profils SAS ont l'habitude des données volumineuses et des contrôles, ce qui aide. Vérifiez en entretien qu'ils connaissent les différences de comportement entre les deux langages (valeurs manquantes, tri, dates, arrondis) plutôt qu'une simple connaissance de la syntaxe pandas. Un profil qui a déjà comparé ligne à ligne deux versions d'un traitement part avec une longueur d'avance.

Pour structurer vos autres entretiens, consultez aussi nos pages sur les questions d'entretien de recrutement, la méthode de l'entretien structuré et la grille d'évaluation d'entretien.

Les fiches voisines

Toutes les fiches →

Voyez Delectus sur vos propres offres.

Commencez gratuitement. Passez à l'échelle quand vous êtes prêt.

Demander une démo

Votre ATS, connecté à Delectus

  • Workable
  • Teamtailor
  • iCIMS
  • Lever
  • SmartRecruiters
  • Jobvite
  • Greenhouse
  • Pinpoint