Lors de la création de rapports sommaires avec SAS© (que ce soit via SAS© Data Integration Studio ou en code Base SAS©), la procédure PROC TABULATE est un outil puissant. Cependant, il arrive fréquemment de rencontrer un message d'erreur bloquant lors de la soumission du job, ressemblant à ceci :
Le premier réflexe est souvent de penser à un bug logiciel ou à un correctif (hotfix) manquant. Pourtant, dans la grande majorité des cas, il s'agit d'un problème de syntaxe fondamentale lié à la logique de PROC TABULATE.
La règle d'or : CLASS vs VAR
Pour comprendre l'erreur, il faut comprendre comment SAS© traite les données dans cette procédure. Contrairement à d'autres procédures, PROC TABULATE exige que chaque variable mentionnée dans l'instruction TABLE soit préalablement définie.
SAS© a besoin de savoir comment traiter la variable :
Est-ce une variable de classification qui va créer des lignes ou des colonnes ?
Est-ce une variable numérique sur laquelle des statistiques (sommes, moyennes) seront calculées ?
Si une variable apparaît dans TABLE sans avoir été déclarée, SAS© ne connaît pas son "type" d'usage, d'où l'erreur "unknown".
Pour corriger ce problème, vous devez définir l'usage de vos variables à l'aide des instructions CLASS et VAR.
L'instruction CLASS : Utilisez-la pour les variables catégorielles (ex: Département, Nom du cours, Section). Ce sont les variables qui créent les "buckets" ou les regroupements.
L'instruction VAR : Utilisez-la pour les variables d'analyse (ex: Coût total, Salaire). Ce sont les variables sur lesquelles les calculs sont effectués.
Exemple concret
Imaginons que vous souhaitiez créer un tableau croisant le nom du cours avec le département, la section et le coût total.
Le code incorrect (qui génère l'erreur) :
Le code corrigé :
Ici, nous définissons course_name, department et section comme des variables de classification, et tot_cost comme la variable à analyser.
Avant de contacter le support technique ou de chercher un patch logiciel, vérifiez toujours votre syntaxe. Si vous utilisez une variable dans la structure de votre tableau (TABLE), assurez-vous qu'elle est bien listée soit dans l'instruction CLASS, soit dans l'instruction VAR.