Utilisation des formats personnalisés dans CAS
Dans SAS Viya 3.4, lorsque vous utilisez des tables CAS et des colonnes qui accèdent à des formats personnalisés , vous devez rendre ces formats visibles sur le serveur CAS. En effet, les formats définis par l'utilisateur ne sont pas directement disponibles pour un serveur CAS.
Les catalogues SAS qui stockent des formats définis par l'utilisateur doivent être convertis en une bibliothèque de formats CAS et stockés dans un fichier dans une caslib. Et, pour que tous les utilisateurs puissent accéder à une bibliothèque au format CAS, celle-ci doit être promue dans un caslib global.
Si vous ne rendez pas accessible vos formats personnalisés dans CAS, vous obtiendrez une erreur de type The format could not be loaded in Cloud Analytic Services (TKCASDAL_FORMAT_NOT_LOADED)
Les étapes présentées dans cet article sont disponibles dans la documentation SAS Managing User-Defined Formats in SAS Viya - Additional User-Defined Format Tasks for SAS Viya 3.4
La première étape consiste à vérifier que votre fichier de format est bien disponible dans le répertoire /opt/sas/viya/config/data/cas/default/formats du serveur CAS Controller. Ce répertoire correspond à la caslib global Formats :
Une fois ces lignes ajoutées, il faut redémarrer le CAS CONTROLLER.
une analyse de log permet de vérifier le bon chargement du formats dans CAS :
action sessionProp.promoteFmtLib / fmtLibName='monformat', table='monformat', caslib='Formats';
action configuration.setServOpt / fmtsearch=' SASSuppliedFormats monforma ';
action sessionProp.addFmtLib / fmtLibName='monformat', name='monformat.sashdat', caslib='Formats', promote=true;
action table.loadTable / path='monformat.sashdat', readAhead=true, resident=false, caslib='Formats', casOut={caslib='Formats'}, singlePass=false, returnWhereInfo=true, cmpProgram=false;action sessionProp.promoteFmtLib / fmtLibName='monformat', table='monformat', caslib='Formats';
action configuration.setServOpt / fmtsearch=' SASSuppliedFormats monforma '
Une fois CAS démarré, il est possible de vérifier la bonne prise en compte dans sa session en exécutant le code ci-dessous pour lister les formats disponible :
Sources :
Create a New Format Library in Session Scope
Save a Format Library to Disk
List the Format Libraries and Formats That Are Available to a Session
Modification des scripts de démarrage de CAS
Avec SAS Viya 3.4, le serveur CAS utilise des scripts de démarrage pour renseigner une bibliothèque de formats caslib initiale et CAS. Les scripts de démarrage Casstartup.lua et Casstartup_usermods.lua (dans /opt/sas/viya/config/etc/cas/default) sont exécutés avant que le serveur CAS accepte une connexion client. Le fichier casstartup.lua contient l'action addFmtLib par défaut. Il contient également l'action setServOpt utilisée pour établir la liste de recherche de format par laquelle débute chaque session. Par défaut, seul les formats sassuppliedformats est défini : CAS traite le fichier casstartup.lua avant tous les autres fichiers de démarrage puis recherche toutes les bibliothèques de formats spécifiées dans le fichier casstartup_usermods.lua. Il faut donc modifier le ffichier casstartup_usermods.lua en ajoutant les actions addFmtLib et setServOpt pour indiquer à CAS de charger le format personnalisé monformat :
1 2 3 4 |
s:sessionProp_addFmtLib{caslib="Formats",fmtLibName="monformat",name="monformat.sashdat",promote=true} newFmtSearch = " monformat" newFmtSearch = ((cas.fmtsearch or "") .. " " .. newFmtSearch) s:configuration_setServOpt{fmtsearch=newFmtSearch} |
1 2 3 4 |
proc cas; sessionProp.listFmtLibs / showMemNames=true; run; quit; |