Los datos no provienen de tablas SAS, sino que se leen directamente desde el servidor de metadatos de SAS. La conexión se establece a través de las opciones 'metaserver', 'metaport', etc. El script consulta la API de metadatos para encontrar objetos específicos.
1 Bloque de código
DATA STEP
Explicación : Este bloque DATA _NULL_ es el núcleo del programa. No crea ninguna tabla SAS de salida. Inicializa variables, conserva el valor de la macro 'MODE', y luego construye una consulta para los metadatos. Utiliza la función `metadata_resolve` para contar el número de objetos 'ForeignKey' que coinciden con la consulta. Si encuentra alguno, itera sobre cada objeto, recupera su URI, su nombre, su ID y la información de la tabla asociada a través de `metadata_getnobj`, `metadata_getattr` y `metadata_getnasn`. Finalmente, muestra la información en el registro SAS y, si el modo es 'DELETE', intenta eliminar el objeto con `metadata_delobj` verificando el código de retorno de la operación.
¡Copiado!
data _null_;
/* Initialize variables. */
length FK_id PT_id $17 type FK_uri PT_uri $50 PT_engine $64 PT_name $32 FK_name $60;
call missing ( of _character_ );
retain mode "&MODE";
/* Define a query for ForeignKey FKobjects that do not have a PartnerUniqueKey association */
FK_obj="omsobj:ForeignKey?ForeignKey[not(PartnerUniqueKey/*)]";
/* Determine how many foreign key objects meet the criteria */
FK_Count=metadata_resolve(FK_obj,type,FK_id);
put "NOTE: Found " FK_Count "ForeignKey objects that do not have an associated PartnerUniqueKey";
/* If any were found, iterate through each one to get the attributes and associations */
if FK_Count > 0 then do i = 1 to FK_Count;
/* Get the URI for the nth ForeignKey found */
FK_rc=metadata_getnobj(FK_obj,i,FK_uri);
/* Get the name and ID of the ForeignKey FKobject */
FK_rc=metadata_getattr(FK_uri,"Name",FK_name);
FK_rc=metadata_getattr(FK_uri,"Id",FK_id);
/* get the table name and id this ForeignKey is associated with */
PT_rc=metadata_getnasn(FK_uri,"Table",1,PT_uri);
if PT_rc > 0 then do;
/* Get the name and ID of the table. */
PT_rc=metadata_getattr(PT_uri,"SASTableName",PT_name);
PT_rc=metadata_getattr(PT_uri,"Id",PT_id);
end;
/* REPORT and DELETE */
put "NOTE: Found foreign key: " FK_name "with id: " FK_id "for table: " PT_name "with id: " PT_id;
if mode = "DELETE" then do;
FK_rc = metadata_delobj(FK_uri);
if FK_rc then put 'ERROR: metadata_delobj failed with return code ' FK_rc;
else put 'NOTE: Foreign key successfully deleted';
end;
end;
run;
put "NOTE: Found foreign key: " FK_name "with id: " FK_id "for table: " PT_name "with id: " PT_id;
33
IF mode = "DELETE"THENDO;
34
FK_rc = metadata_delobj(FK_uri);
35
IF FK_rc THEN put 'ERROR: metadata_delobj failed with return code ' FK_rc;
36
ELSE put 'NOTE: Foreign key successfully deleted';
37
END;
38
END;
39
RUN;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.