sas flat-file table-structure

Almacenamiento de datos SAS(incluida la estructura de la tabla) en un solo archivo plano



flat-file table-structure (6)

  1. Crea el código para exportar la tabla al texto (esto es sencillo, solo busca en google o mira ''The Little SAS Book'' si tienes una copia).

  2. A continuación, agregue la información ''meta'' de sashelp.vcolumn, que es donde sas almacena información (metadatos) sobre los conjuntos de datos sas. Es una tabla sas en sí misma, por lo que podría hacer una operación proc sql union para unirla con las columnas reales que esta tabla describe (aunque tendrá que hacer una operación de tipo transposición porque los metadatos sobre las columnas están en filas, no en columnas )

No está siendo completamente específico acerca de cómo desea ver los metadatos en el archivo de texto, así que eso es todo lo que puedo hacer.

Necesito convertir tablas de datos SAS en archivos planos (o "archivos ASCII" como se llamaron una vez, a diferencia de los archivos binarios). Y solo un archivo plano para cada tabla SAS original. Lo desafiante es que quiero que el archivo plano contenga también información estructural de la tabla SAS original, específicamente:

  • Nombre de variable / columna
  • Etiqueta de variable / columna
  • Tipo de variable / columna
  • Longitud variable / columna
  • Formato de variable / columna
  • Información de la variable / columna

Información Adicional:

  • Solo necesitaré convertir datos pequeños (<100 obs).
  • El rendimiento no es un problema (dentro de límites razonables).
  • El archivo plano debe formar una base para volver a crear la tabla SAS original, no es necesario que pueda utilizar el archivo directamente como una tabla en los pasos DATA o PROC.

Las tablas SAS estándar, los archivos de transporte, los archivos XPORT, etc. son todos archivos de formato binario, y el formato de tabla XML estándar en archivos SAS y CSV no conserva la estructura de la tabla. Entonces, obviamente, estas opciones no ayudan.

¿Cuál es mi mejor opción?


Con SAS 9.2, puede crear un archivo XML a partir de un conjunto de datos y el XML contiene metadatos de variables / columnas, como formato, etiqueta, etc. Consulte la sección del motor SAS 9.2 XML LIBNAME: Guía del usuario titulada "Uso del XML" Motor para transportar conjuntos de datos SAS a través de entornos operativos ". Un enlace al mismo está aquí:

http://support.sas.com/documentation/cdl/en/engxml/61740/HTML/default/a002594382.htm

Aquí hay una sección de código del manual que muestra el uso del motor de nombres de libos XML92 y COPIA DE PROCESO para crear el XML:

libname myfiles ''SAS-library''; libname trans xml92 ''XML-document'' xmltype=export; proc copy in=myfiles out=trans; select class; run;

En SAS 9.1.3, puede que tenga que crear un conjunto de etiquetas personalizado para obtener la misma operación. El Soporte Técnico de SAS ([email protected]) puede ofrecerle alguna ayuda.


La sintaxis de descripción de proc sql puede ser útil para obtener la porción de metadatos, incluyendo longitudes, tipos, formatos, índices, etc.

Código:

proc sql; describe table sashelp.class; quit;

Iniciar sesión:

NOTE: SQL table SASHELP.CLASS was created like: create table SASHELP.CLASS( bufsize=4096 ) ( Name char(8), Sex char(1), Age num, Height num, Weight num );


No estoy al tanto de ninguna solución fácil.

Posiblemente:

  1. Use PROC EXPORT para producir un archivo CSV con los datos que contiene.
  2. Use PROC DATASETS con ODS para producir un conjunto de datos con los nombres, tipos, etc.
  3. Produzca otro archivo CSV para este conjunto de datos.

Ahora tiene su descripción ASCII de la tabla (distribuida en dos archivos CSV). Invertir el proceso sería más complicado. Básicamente, tendrías que leer en el conjunto de datos de descripción, luego utilizar CALL SYMPUT en un bucle para crear un grupo de variables macro con la información en ellas, luego usar tus variables macro para construir un PROC IMPORT para el archivo CSV ...


Por cierto, no has dicho por qué tienes que hacer esto. En este caso, no hay una buena razón (puede haber una razón convincente, como que alguien con poder diga ''hazlo o te despidan'', pero no hay una buena razón).

Dejaría la idea de fusionar los metadatos y los datos en cada archivo, a menos que haya alguna razón increíblemente fuerte para hacerlo. Vaya con la exportación de los metadatos para el conjunto de datos A a un archivo llamado metadata_A; esto dará como resultado archivos emparejados. Cualquiera que busque utilizar esos archivos en un programa de base de datos o programa estadístico tendrá un archivo de metadatos claramente etiquetados para trabajar.