Mise à jour de version CDM

ATTENTION : Ce contenu est DÉSACTIVÉ. Il est invisible pour les visiteurs.
Niveau de difficulté
Débutant
Publié le :
Cette macro, `%dsc_cdm_version_update`, prend un numéro de version en paramètre. Si le numéro de version est 16, elle vérifie l'existence de la table d'historique des versions `dsccnfg.cdm_version_hist`. Si elle existe, elle récupère la version maximale actuelle. Si la version actuelle est inférieure à 16, la macro procède à la modification des tables `dscwh.CDM_CONTENT_DETAIL` et `dscwh.CDM_TASK_DETAIL` en augmentant la longueur des champs `owner_nm` et `created_user_nm` à 256 caractères. Des sauvegardes temporaires (`_bkp`) sont créées pour ces tables avant modification. Ensuite, une nouvelle entrée pour la version 16 est créée dans une table temporaire `cdm_version_hist` et ajoutée à la table d'historique principale `dsccnfg.cdm_version_hist`. Si la table `dsccnfg.cdm_version_hist` n'existe pas initialement, elle est créée avec la nouvelle entrée de version.
Analyse des données

Type : MIXTE


Le script utilise et modifie des tables SAS existantes dans les librairies `dsccnfg` et `dscwh`. Il crée également une table temporaire `cdm_version_hist` pour l'insertion dans la table d'historique principale.

1 Bloc de code
MACRO DEFINITION
Explication :
Définition de la macro `%dsc_cdm_version_update` qui prend `version_num` comme paramètre. Déclenche le bloc de mise à jour si `version_num` est égal à 16.
Copié !
1%macro dsc_cdm_version_update(version_num=);
2 %let ver_hist_ds=dsccnfg.cdm_version_hist;
3 /* if migrating from old version to schema16 then update the modified tables as per schema16 changes;*/
4 %IF &version_num. = 16 %THEN
5 %DO;
6 
2 Bloc de code
PROC SQL
Explication :
Vérifie si la table d'historique des versions `dsccnfg.cdm_version_hist` existe. Si oui, récupère la version maximale (`ver_num`) stockée. Ce bloc est exécuté seulement si `version_num` est 16 et si la version maximale trouvée est inférieure à 16, indiquant une nécessité de mise à jour du schéma.
Copié !
1 %IF %sysfunc(exist(&ver_hist_ds.)) %THEN
2 %DO;
3 /* what is the old version num ;*/
4 PROC SQL noprint;
5 select max(ver_num) into :cdm_ver_num from &ver_hist_ds. ;
6 QUIT;
7 
8 /* if current version is less than 16 that means we need to alter the existing tables ;*/
9 %IF &cdm_ver_num. < 16 %THEN
10 %DO;
11 
3 Bloc de code
DATA STEP Data
Explication :
Boucle à travers les jeux de données spécifiés (`CDM_CONTENT_DETAIL`, `CDM_TASK_DETAIL`). Pour chaque jeu de données, crée une copie de sauvegarde (`_bkp`) puis modifie le jeu de données original en allongeant la longueur des champs `owner_nm` et `created_user_nm` à 256 caractères. Vérifie l'existence du jeu de données avant de procéder.
Copié !
1 /* modify following datasets to change owner_nm & created_user_nm length to 256 char;*/
2 %let dataset_list = CDM_CONTENT_DETAIL CDM_TASK_DETAIL;
3 %local i dataset;
4 %DO i = 1 %to %sysfunc(countw(&dataset_list)); /* Loop through the dataset list */
5 %let dataset = %scan(&dataset_list, &i); /* Get the current dataset name */
6 %let table_nm = dscwh.&dataset; /* Set the table name */
7 %put updating &table_nm.;
8 %IF %sysfunc(exist(&table_nm.)) %THEN
9 %DO; /* Check if dataset exists */
10 DATA &table_nm._bkp; /* Create backup dataset */
11 SET &table_nm.;
12 RUN;
13 DATA &table_nm.; /* Modify original dataset */
14 attrib owner_nm FORMAT=$256.
15 created_user_nm FORMAT=$256.;
16 SET &table_nm.;
17 RUN;
18 %END;
19 %ELSE
20 %DO;
21 %put &table_nm. not found ;
22 %END;
23 %END;
24 
4 Bloc de code
DATA STEP / PROC APPEND Data
Explication :
Crée un nouveau jeu de données temporaire `cdm_version_hist` contenant le numéro de version courant (`&version_num.`) et l'horodatage de création. Ensuite, utilise `PROC APPEND` pour ajouter cet enregistrement à la table d'historique principale `dsccnfg.cdm_version_hist`.
Copié !
1 DATA cdm_version_hist;
2 attrib ver_num LENGTH= 8.
3 ver_create_dttm LENGTH=8. FORMAT=datetime25.6;
4 ver_num =&version_num.;
5 ver_create_dttm =datetime();
6 RUN;
7 
8 PROC APPEND base=dsccnfg.cdm_version_hist DATA=cdm_version_hist;
9 RUN;
10 %END;
11 %END;
12 %END;
13%EXIT:
14 
15%mend dsc_cdm_version_update;
16 
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.
Informations de Copyright : Copyright © 2020, SAS Institute Inc., Cary, NC, USA. All Rights Reserved. SPDX-License-Identifier: Apache-2.0


Documentation liée

Aucune documentation spécifique pour cette catégorie.