Le script définit la structure d'une table SAS (`DIFFTABLE`) de manière interne. Il ne lit ni ne consomme de données existantes provenant de SASHELP ou d'autres sources. La table est conçue pour être peuplée ultérieurement par d'autres processus qui généreront les données de différences.
1 Bloc de code
PROC SQL Data
Explication : Ce bloc définit la macro `%mddl_dc_difftable` et utilise `PROC SQL` pour créer une nouvelle table SAS (nommée via le paramètre `libds`, par défaut `WORK.DIFFTABLE`). La table est structurée pour enregistrer des métadonnées de différences, incluant des identifiants de référence, des horodatages, les noms de bibliothèque et de dataset, un hachage de clé primaire, le type de modification, des indicateurs de statut de clé primaire et de différence, le type de variable cible, et les anciennes/nouvelles valeurs pour les formats numériques et caractères.
Copié !
%macro mddl_dc_difftable(libds=WORK.DIFFTABLE);
proc sql;
create table &libds(
load_ref char(36) label='unique load reference',
processed_dttm num format=E8601DT26.6 label='Processed at timestamp',
libref char(8) label='Library Reference (8 chars)',
dsn char(32) label='Dataset Name (32 chars)',
key_hash char(32) label=
'MD5 Hash of primary key values (pipe seperated)',
move_type char(1) label='Either (A)ppended, (D)eleted or (M)odified',
is_pk num label='Is Primary Key Field? (1/0)',
is_diff num label=
'Did value change? (1/0/-1). Always -1 for appends and deletes.',
tgtvar_type char(1) label='Either (C)haracter or (N)umeric',
tgtvar_nm char(32) label='Target variable name (32 chars)',
oldval_num num format=best32. label='Old (numeric) value',
newval_num num format=best32. label='New (numeric) value',
oldval_char char(32765) label='Old (character) value',
newval_char char(32765) label='New (character) value'
);
1
%macro mddl_dc_difftable(libds=WORK.DIFFTABLE);
2
3
PROC SQL;
4
create TABLE &libds(
5
load_ref char(36) label='unique load reference',
6
processed_dttm num FORMAT=E8601DT26.6 label='Processed at timestamp',
Explication : Ce segment de code macro gère la résolution du nom de la bibliothèque (`libref`). Il convertit le paramètre `&libds` en majuscules. Si `&libds` ne contient pas de point (indiquant un dataset sans spécification de librairie), la librairie par défaut 'WORK' est assignée à la variable macro `lib`. Sinon, la partie précédant le premier point est extraite et utilisée comme nom de la librairie.
Explication : Ce bloc utilise `PROC DATASETS` pour modifier la table nouvellement créée ou existante (dont le nom est extrait de `&libds`) dans la librairie `&lib`. Il ajoute un index unique nommé `pk_mpe_audit` composé des colonnes `load_ref`, `libref`, `dsn`, `key_hash`, et `tgtvar_nm`. Les options `/nomiss unique` garantissent que l'index est créé même si des valeurs sont manquantes et que la combinaison des valeurs de ces colonnes est unique pour chaque enregistrement, améliorant ainsi la performance et l'intégrité des données. Le `%mend` marque la fin de la définition de la macro.
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.