La tenebrosa generación de base de datos REDATAM con registros múltiples

Tenemos otra encuesta en puerta que resolvimos con REDATAM, y para tratar de dar un paso adelante aunque no haremos los cuadros en la nueva versión, mi superior me pidió realizáramos una base de datos para otra encuesta y deduzco que no queda más que mirar hacia el frente y me puse manos a la obra para tratar de hacerla con la poca documentación que existe y sin duda lo que nos salva son los ejemplos que nos regalan con el software al descargarlo.

Por un lado entiendo que es un gran esfuerzo de años contar con el motor que se tiene pero ahora para esta versión tengo que quejarme pues consumió muchas horas para conseguir una base de datos de registro múltiple.



No tengo mucho tiempo para escribir por lo que trataré de ser breve en lo posible. Antes de dar el salto con la otra encuesta experimenté con una que ya tenemos datos reales y estamos en proceso de depuración.

En primera, parece ser que Chillán (extensión DDF) junto con el Visual DDF lo han pasado a mejor vida y para hacer bases de datos con registros múltiples solo es posible con CSPro.

Esto hace más de un año no me hubiera parecido mal del todo, pero ahora con el presidente #45 receptor de todos nuestros más lindos pensamientos y deseos - sobre todo de los mexicanos - se me hace una muy mala idea utilizar una herramienta que viene en si del gobierno de los Estados Unidos, cuando pareciera que REDATAM es  (o era) la bandera y herramienta de trabajo para los países fuera del primer mundo y de otros, como el nuestro, que creemos que estamos en el camino.

Hablando ya de CSPro, si mi devastado conjunto de neuronas sobrevivientes en mi cerebro no me engaña, es que no soporta el concepto de hogar como se lleva en México y del nivel vivienda nos pasamos a los elegidos y la parte de residentes - según pude ver los ejemplos que descargué, aunque reitero no estoy seguro.

Para empezar descargamos la última versión de CSPro del sitio oficial https://www.census.gov/population/international/software/cspro/csprodownload.html hay que decirlo mucho avance ya que cuenta para realizar aplicaciones CAPI en Android y por lo que viene en la página de descarga en web también.

Confieso de que a pesar de los años que lo usamos como bandera para descentralizar las estadísticas sociales de registros administrativos con su antecesor IMPS y hacer algunas encuestas con CSPro había olvidado algunas cosas por lo que me costó un poco la curva de re-aprendizaje además que quería hacer las cosas parecidas que como se hacían en el formato Chillán.

Las grandes cosas se hacen con cosas simples por lo que hice una jerarquía igual al del ejemplo de CSPro y de REDATAM, versión mexicana ENT-IDVIV-IDPER donde IDVIV lo construí con las dos variables que hacen única a la vivienda (UPM-VIV_SEL), dos registros (VIVIENDA y RESIDENTES) y un par de variables en cada registro VIVIENDA (tipo de piso y disponibilidad de agua) y RESIDENTES (edad y sexo). A continuación el diccionario de datos de CSPro (este tutorial por ahora no cubre la creación de diccionarios de datos en CSPro).

Registros (Vivienda y Residentes)



Datos común.

Datos registro de vivienda


Datos registro de residentes


Y bueno después de tener algunos traspies en la generación de la tabla que sirve de insumo a REDATAM y que debe encajar en el Diccionario de datos CSPro que les acabo de mostrar, llegué al siguiente código en el amado e incondicional software de mi partner de trabajo - Mauricio - el incansable FoxPro.

SET DEFAULT TO D:\BDREDATAM\ENDUTIH2017
SET PATH TO D:\BDREDATAM\ENDUTIH2017

CREATE TABLE RED_ENDUTIH (TR C(1), ENT C(2), IDVIV C(9), RESTO C(250))

SELECT "1" AS TR, SUBSTR(UPM,1,2) AS ENT, UPM + VIV_SEL AS IDVIV,;
P1_1, P1_2 ;
FROM TIC_2017_VIVIENDAS INTO DBF TV

COPY TO VIV.TXT TYPE SDF

SELECT "2" AS TR, SUBSTR(UPM,1,2) AS ENT, UPM + VIV_SEL AS IDVIV, RIGHT(HOGAR,1)+ N_REN AS IDPER, ;
SEXO, EDAD ; 
FROM TIC_2017_RESIDENTES ORDER BY 1,2,3,4 INTO DBF TR

COPY TO RES.TXT TYPE SDF

CLOSE TABLES
USE RED_ENDUTIH
APPEND FROM VIV.TXT TYPE SDF
APPEND FROM RES.TXT TYPE SDF

SELECT * FROM RED_ENDUTIH ORDER BY ENT, IDVIV,TR INTO DBF ENDUT2017

CLOSE TABLES

USE ENDUT2017

COPY TO ENDUTIH2017.DAT TYPE SDF

CLOSE TABLES

Muy parecido a lo que hemos hecho para el formato Chillán en años anteriores, un gran recipiente RED_ENDUTIH.BDF que recolectará los registros 1 - Vivienda y los registros 2 - Residentes y después los ordenamientos que son fundamentales en las bases de datos jerárquicas, para dejar en un archivo de texto que es el que recibe el CREATE de REDATAM.



Y bien, todo lucía genial, pero empieza la pesadilla con el Red7 Create. Un error siempre constante y que la web  con uno de sus patronos más milagrosos San Google- tan generosa en otros temas - no me decía nada , ni la referencia en el sitio oficial, ni la ayuda en línea (y la verdad me dio mucha flojera leer los foros donde me ofertan cursos de REDATAM a los que difícilmente podré asistir en el futuro próximo) me dijo que era:




En esta versión Red7 Create aparte de en pantalla hace un libro de Excel donde a cada generación exitosa o errónea de la base de datos anexa una nueva hoja en el libro, por lo que podrán ver, más de 10 intentos si hice (ya que llegué a borrar el directorio donde intentaba crear la base de datos en un par de ocasiones) y nunca, nunca, nunca (como escribió el maestro Tata Nacho) supe que era Error: index [8] Error opening save file detected Processing entity: ENT.

Generé pantallas de captura en CSPro, convertí el archivo origen de texto para que lo leyera CSPro y nada, CSpro no tenía problemas con mi archivo, pero simplemente mi base de datos no se generaba, con ese archivo, ni con uno que inventé y edité en UltraEdit y Notepad ++, u otro que capturé con CSPro.

Derrotado me fui a la Universidad con sensación de fracaso. Sin embargo al llegar en la noche a la casa hice un segundo intento.

No tengo los archivos WipX fallidos, solo se que intenté muchas cosas.

Ahora les mostraré el que funcionó, honestamente no se que fue aunque tengo dos teorías. Bueno relataré rápido como se hace un archivo múltiple con CREATE.

1. Damos clic en Red7 Create


2. Creamos un nuevo archivo (ahora WipX).


3. Empezamos a crear las ramas de la jerarquía (primer teoría, nombre a la rama igual que a la variable que será la variable de códigos).


Ahora que observo, no hay entidades hermanas...haber sino nos cuesta futuros dolores de cabeza.

4. Conectamos la base de datos de origen, elegimos CSPro, y elegimos nuestro diccionario CSPro.




5. Empezamos a colocar las variables de CSPro en sus ramas correspondientes.



Cuando queremos traer variables de los registros CSPro seleccionamos del combo, el registro correspondiente y se eligen las variables:


6. Aquí mi segunda teoría, elegir y convertir las variables que serán variables de código.



Antes de cambiar de INTEGER a STRING, puse en cero el Not Applicable y Missing, y como lo he expresado, no se si tenga que ver, también al cambiar a STRING en tipo puse ASCII




7. Las hacemos variables de código a todas las involucradas y marcar las ramas como entidades seleccionables.



8. Generamos la base de datos (Para realizar el proceso de generación consulté los anteriores artículos :))




9. Una vez que finalizamos los pasos y damos clic para la generación. Al ver la ventana de avance da un gran alivio sobre todo cuando te percatas que te quedan menos de 5 horas de sueño, y estabas a punto de escribirle al creador de todo esto que yo supongo que es el buen amigo Lenin Aguinaga.



Ahora que escribo este proceso parece ser que la primer teoría, no es válida ya que la última rama se llama IDPER y la variable de código es IDRES, sin embargo lo tomaré como buena práctica por si las dudas.

Otra cosa que no entiendo es que la base de datos de ejemplo tiene las 2 últimas ramas no son entidades seleccionables y sin embargo si yo hago esto no obtengo tablas de las variables de esas ramas que no marqué como seleccionables, y en la de ejemplo si.



Sin embargo hemos dado un gran paso, con este artículo podemos crear 3 de las cuatro fuentes posibles (FoxPro, CSV y CSPro), y como SPSS es para los pudientes y privilegiados quizás eso no lo escriba.

Quedamos pendientes para el próximo artículo.

Miguel Araujo.


Comentarios

  1. Estimado Miguel:
    Muy bueno el blog y el artículo.
    Te consulto por lo siguiente.
    Estoy tratando de unir en una misma base de datos REDATAM dos bases de datos en SPSS (una de hogares y otra de personas).
    No sé cómo hacerlo. Logro con exito crear una pero no sé
    cómo crear otra y unirla a esta.
    ¿Es con Append Multiple?, ¿Cómo?, ¿Tendrías algún manual o instructivo al respecto?
    Gracias desde ya,
    Saludos,
    Julián C Aguilar.

    ResponderEliminar
  2. Hola Julián, veo que somos compañeros del mismo dolor, disculpa la tardanza, deja retomo de nuevo el REDATAM, consultaré con el programador del mismo, he querido importar de CSV sin tener éxito, pero me da gusto que no me encuentro solo en este desierto...seguimos en contacto.

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Librería de REDATAM para R

Conectar bases de datos Oracle con R vía JDBC

Red 7 Admin