Está en la página 1de 67

Réplica de Planillas del

Coordinador
Problema 1: Bajar las bases de datos de Activos Tx del
Coordinador

- Interactuar con la API del Coordinador para bajar las planillas.


- Recorrer de forma automática las páginas para guardar los elementos.
- Guardar las planillas en formato CSV.
- Lidiar con los NaN porque dan error cuando no se llenan.
Url del elemento con
filtro para que
aparezca el máximo
de elementos.
Manda un get a la api
del coordinador y si
devuelve un código 200
almacena la planilla en
un dataframe.
Rellena los NaN y guarda en un .csv el dataframe
del elemento.
Por Mejorar
- Hay planillas que tienen información faltante.
- Los índices de algunos elementos se corrompen y no están en formato
int.
- El campo descripción contiene caracteres que excel considera como
separadores, por lo que algunas filas en vez de tener todos los elementos en
una sola columna se dividen en varias columnas, luego cuando se utiliza la
macro “texto a columnas” se sobreescriben las columnas cercanas.
Problema 2: Subir las planillas con los campos relevantes
a Heidi (SQL)

- Automatizar la creación de la base de datos de prueba.


- Automatizar la creación de las tablas con los campos necesarios y el tipo de
dato.
- Obtener los campos relevantes desde las planillas CSV.
- Subir la información a la base de datos.
Crea la base de datos llamada “prueba”.
Se deben reemplazar estos campos,
porque son distintos en cada
computador.
Comprueba si
existe la base de
datos y la borra,
luego crea la
base de datos
nueva (vacía).
Comando que guarda la ejecución del
código en Heidi.
Función central que contiene sub-funciones
para generar y subir las planillas de objetos.
Primero se obtiene una lista con los
nombres de las planillas de elementos a
subir en la ruta designada.
Función que obtiene el nombre de la planilla separando el string:

nombre_planilla.csv -> [“nombre_planilla”, “csv”¨]


Función que obtiene un
listado de los campos
relevantes para la tabla
seleccionada.
Carga la planilla campos.
Función que obtiene un
listado de los tipos de datos
para cada campo relevante.
Si la planilla no es vacía
reemplaza el nombre de la tabla:
nombre-tabla -> nombre_tabla
Crea la tabla con
los campos
seleccionados y
los tipos de
datos definidos
para cada
campo.
Crea la tabla con los campos
seleccionados y los tipos de
datos definidos para cada
campo.
Crea un dataframe con los
campos filtrados.
El encoding traduce los caracteres
especiales, cambie utf8 porque daba
error en algunas planillas.

Copia solo las columnas seleccionadas en


un nuevo dataframe y reemplaza los NaN
con 0 para no tener problemas con Heidi.
Crea el código SQL
para cada fila.
Encabezado para insertar datos en la tabla
recién creada.
Obtiene el valor del dato para cada columna de cada fila.
Va añadiendo el
valor como string.

Fin de la fila.

Fin de la tabla.
Con los códigos SQL ya
conformados ejecuta los
mismos en Heidi.
Ejecuta el código SQL que crea la tabla.

Ejecuta el código SQL que carga las filas.

Guarda los cambios.


Por Mejorar
- Hay que rellenar en la planilla de campos todas las tablas, los campos y
los tipos de datos de forma manual, por lo que si se actualizan las tablas e
incluyen nuevos campos se deben agregar de forma manual.
Problema 3: Unir las planillas para obtener una tabla
similar a instalacioncomponentes.csv

- Chequear cada tabla con objetos de Tx y revisar a qué clase de elementos


corresponde.
- Hacer JOIN entre las tablas para obtener una tabla en el formato de
instalacioncomponentes.csv.
1. IdVersionValorizacion: Este valor se debe agregar al final al programa y
debe reflejar el número de ejecuciones, ejemplo: 1 Versión de valorización
(ejecuto) y se actualiza a 2 Versión de valorización.
2. IdVersion: No es relevante.
3. IdTipoInstalacion: Se debe definir como 1 ó 2 en función de si la planilla de
objetos está relacionada con una subestación o con un línea. Donde 1
representa que el campo tiene el valor “Subestacion” y 2 que el campo
tiene el valor “Linea”.
4. NombreTipoInstalacion: Refleja el valor en texto del id, como comente si el
Id es 1 dice “Subestación”, etc.
5. IdInstalacion: Corresponde al campo subestacion.id de la familia del grupo
analizado, ejemplo: Tengo la planilla de elementos-comunes-panos.csv que
está relacionada con el familia panos.csv, la columna subestacion.id de la
planilla panos.csv corresponde al IdInstalacion en la planilla
instalacioncomponentes.csv.
6. IdFamiliaGrupo: Tiene un valor entre 1 a 7 y cada número representa una
familia de elementos en particular. Donde:

1 = Subestaciones. 4 = Trafos 7 = Estaciones Repetidoras

2 = Tramos. 5 = Patios

3 = Panos 6 = Salas Servicios Generales y Casetas

7. NombreFamiliaGrupo: Dependiendo del ID se tiene el nombre de la familia.

8. IDGrupo: Es la columna ID del grupo al que pertenece nuestro objeto, ejemplo:


Tengo la planilla de elementos-comunes-panos.csv que está relacionada con el
familia panos.csv, la columna id de la planilla panos.csv corresponde al IdGrupo
en la planilla instalacioncomponentes.csv.

9. NombreGrupo: Es la columna NAME del grupo al que pertenece nuestro objeto.

10. IdTablaActivo: Es el número asignado a cada tabla por nombre. Donde:


1 = Elementos-comunes-see 16 (Vacío) 31 Reles-proteccion

2 = Elementos-comunes-patios 17 Condensadores-series 32 Otros-elementos-sistemas-proteccion

3 = Barras 18 Compensadores-estaticos-reactivos 33 Controladores-bahia

4 = Elementos-comunes-panos 19 Condensadores-acoplamiento 34 Equipos-principales-comunicacion

5 = Transformadores-2d 20 Bancos-condensadores 35 Otros-elementos-telecomunicaciones

6 = Transformadores-3d 21 Reactores 36 Sistemas-respaldo-energia

7 = Interruptores 22 Dispositivos-reconexiones 37 Multiplexadores

8 = Desconectadores 23 Paneles-antirruido 38 Patios-mufas

9 = Transformadores-corriente 24 Casas-servicios-generales-y-casetas 39 Mufas

10 = Transformadores-potencial 25 Elementos-comunes-ssgg-casetas 40 Vanos

11 = Transformadores-ssaa 26 Armarios 41 Accesorios-vanos

12 = Pararrayos 27 Elementos-comunes-armarios 42 Tuneles

13 = Trampas-ondas 28 Tableros 43 Torres

14 = Aisladores 29 Bancos-baterias 44 Accesorios-estructuras-lineas-aereas

15 = Medidores 30 Generadores-energia 45 Estudios-impacto-ambiental


46 = Mitigaciones-ambientales

47 = Estructuras-subestaciones

48 = OOCC

49 = Accesorios-estructuras-subestaciones

50 = Servidumbres

51 = Estaciones-repetidoras
11. NombreTablaActivoTx: Corresponde al nombre de la tabla de nuestro objeto.

12. IdActivoTx: Corresponde a la columna id de la planilla del objeto.

13. NombreActivoTx: Corresponde a la columna name de la planilla del objeto.

14. IdTipoObjeto: Es el número asignado a cada tipo de objeto, se resumen en la siguiente


diapositiva.

15. NombreTipoObjeto: Es el nombre del objeto en función del id del tipo de objeto, se resume en
la siguiente diapositiva.

16. IdObjeto: Corresponde a una variable int autoincremental que se debe definir al final del
programa, cuando se unan todas las tablas de elementos para formar instalacioncomponentes.csv.

17. PorcentajedeAsignacion: Por ahora se definió como 1 para todos los elementos de la base de
datos, luego se deberá calcular correctamente.
1 = AccesoriosEstructuras 16 Dispositivos-reconexiones 31 Reactores

2 = AccesoriosVanos 17 ElementosComunes 32 Reles-proteccion

3 = Aisladores 18 Equipos-principales-comunicacion 33 Servidumbres

4 = Antena 19 Estructuras 34 Sistemas-respaldo-energia

5 = Armarios 20 Estudios-impacto-ambiental 35 Tableros

6 = Bancos-baterias 21 Generadores-energia 36 Trampas-ondas

7 = Bancos-condensadores 22 Interruptores 37 Transformadores-de-poder (ssaa)

8 = Compensadores-estaticos-reactivos 23 Medidores 38 Transformadores-corriente

9 = Condensadores-acoplamiento 24 Mitigaciones-ambientales 39 Transformadores-potencial

10 = Condensadores-series 25 Mufas 40 Tuneles

11 = Conductores 26 Multiplexadores

12 = ConjuntoAislacion 27 OOCC

13 = Construccion 28 Otros-elementos-telecomunicaciones

14 = Controladores-bahia 29 Paneles-antirruido

15 = Desconectadores 30 Pararrayos
18. CantidadActivo: Dependiendo del tipo de elemento, llenar este campo es sencillo o complicado, los activos que cuentan con el campo
datasheet.cantidad se llenan directamente, los activos que no cuentan con este campo, deben duplicar el elemento en función de la
cantidad de columnas que tengan la descripción datasheet.[nombre del activo a medir].magnitud. Por ejemplo para
elementos-comunes-panos.csv de debe considerar:

- datasheet.caminosInteriores.magnitud
- datasheet.conjuntoLuminaria.potenciaPorLuminaria.magnitud
- datasheet.mallaPuestaPuestaTierra.magnitud
- datasheet.conjuntoLuminaria.cantidad
- datasheet.cercoPerimetral.longitud.magnitud
- datasheet.cantidadSistemasAlarma

19. UnidadActivo: Dependiendo del tipo de elemento, llenar este campo es sencillo o complicado, los activos que cuentan con el campo
datasheet.cantidad y no tienen el campo datasheet.unidad se llenan directamente con ‘u’, los activos que no cuentan con
datasheet.cantidad, deben duplicar el elemento en función de la cantidad de columnas que tengan la descripción datasheet.[nombre del
activo a medir].unidad. Por ejemplo para elementos-comunes-panos.csv de debe considerar:

- datasheet.caminosInteriores.unidad
- datasheet.conjuntoLuminaria.potenciaPorLuminaria.unidad
- datasheet.mallaPuestaPuestaTierra.unidad
- datasheet.conjuntoLuminaria.unidad (no va a estar definido este campo, se debe llenar con ‘u’ porque hace
referencia a cantidad)
- datasheet.cercoPerimetral.longitud.unidad
- datasheet.cantidadSistemasAlarma.unidad (no va a estar definido este campo, se debe llenar con ‘u’ porque hace
referencia a cantidad)
20. IdEmpresa: Se obtiene del campo propietario_id de la tabla del
elemento.
21. NombreEmpresa: Se obtiene del campo propietario.name de la tabla del
elemento.
22. IdDecreto: Se obtiene del campo decreto_id de la tabla del elemento.
23. NombreDecreto: Se obtiene del campo decreto.name de la tabla del
elemento.
24. idTablaActivoTx_relacion: No considerar.
25. idActivoTx_relacion: No considerar.
Relación entre planillas
Ejemplo Tabla 9: Elementos_Comunes_Panos.py

Debe ser igual al nombre de la


planilla del elemento pero
reemplazando los “-” por “_”.

Elimina la tabla si existía


previamente para cargar la nueva
tabla.
CREATE TABLE nombre_base_datos.nombre_tabla (
IdTipoInstalacion int,
NombreTipoInstalacion text,
IdInstalacion int, Crea la tabla con el mismo
IdFamiliaGrupo int,
NombreFamiliaGrupo text, formato que la planilla
IdGrupo int, NombreGrupo text,
IdTablaActivoTx int,
“instalacioncomponentes.csv”.
NombreTablaActivo text,
IdActivoTx int,
NombreActivoTx text, Se define la posición en la que va
IdTipodeObjeto int,
NombreTipodeObjeto text, cada campo.
IdObjeto int,
PorcentajeAsignacion int,
IdEmpresa text,
NombreEmpresa text,
IdDecreto int,
NombreDecreto text,
MagnitudAltura int,
UnidadAltura text,
MagnitudLongitud int,
UnidadLongitud text,
MagnitudCaminosInteriores int,
UnidadCaminosInteriores text,
MagnitudLuminaria int,
UnidadLuminaria text,
MagnitudPuestaTierra int,
UnidadPuestaTierra text,
CantidadSistemasAlarma int);
INSERT INTO nombre_base_datos.nombre_tabla (
IdInstalacion,
IdGrupo, Selecciona las columnas que se
NombreGrupo, obtiene de las planillas de objetos
IdActivoTx,
NombreActivoTx, cargadas a Heidi.
IdEmpresa,
NombreEmpresa,
IdDecreto,
NombreDecreto,
MagnitudAltura,
UnidadAltura,
MagnitudLongitud,
UnidadLongitud,
MagnitudCaminosInteriores,
UnidadCaminosInteriores,
MagnitudLuminaria,
UnidadLuminaria,
MagnitudPuestaTierra,
UnidadPuestaTierra,
CantidadSistemasAlarma)
SELECT Selecciona las columnas que se
prueba.panos.subestacion_id,
prueba.panos.id,
obtiene de las planillas de objetos
prueba.panos.name, cargadas a Heidi.
prueba.elementos_comunes_panos.id,
prueba.elementos_comunes_panos.name,
prueba.elementos_comunes_panos.pano_propietario_id,
prueba.elementos_comunes_panos.pano_propietario_name,
prueba.elementos_comunes_panos.pano_decreto_id,
prueba.elementos_comunes_panos.pano_decreto_name,
prueba.elementos_comunes_panos.datasheet_cercoPerimetral_altura_magnitud,
prueba.elementos_comunes_panos.datasheet_cercoPerimetral_altura_unidad,
prueba.elementos_comunes_panos.datasheet_cercoPerimetral_longitud_magnitud,
prueba.elementos_comunes_panos.datasheet_cercoPerimetral_longitud_unidad,
prueba.elementos_comunes_panos.datasheet_caminosInteriores_magnitud,
prueba.elementos_comunes_panos.datasheet_caminosInteriores_unidad,
prueba.elementos_comunes_panos.datasheet_conjuntoLuminaria_potenciaPorLuminaria_magnitud,
prueba.elementos_comunes_panos.datasheet_conjuntoLuminaria_potenciaPorLuminaria_unidad,
prueba.elementos_comunes_panos.datasheet_mallaPuestaPuestaTierra_magnitud,
prueba.elementos_comunes_panos.datasheet_mallaPuestaPuestaTierra_unidad,
prueba.elementos_comunes_panos.datasheet_cantidadSistemasAlarma
FROM Filtro para unir la tabla del objeto y la tabla
prueba.elementos_comunes_panos que tiene información más general sobre la
LEFT JOIN familia y la subestación, depende del grupo
prueba.panos
de elementos.
ON
prueba.elementos_comunes_panos.pano_nodo_id=prueba.panos.nodo_id;
Información que no se encuentra en las
UPDATE
nombre_base_datos.nombre_tabla
planillas de forma clara, por lo que se
inserta manualmente para cada tabla de
SET objeto.
IdTipoInstalacion = 1,
NombreTipoInstalacion = 'Subestacion',
IdFamiliaGrupo = 3,
IdTablaActivoTx = 4,
NombreTablaActivo = ‘elementos_comunes_panos’,
IdTipodeObjeto = 17,
NombreTipodeObjeto = ‘elementos_comunes’,
PorcentajeAsignacion = 1,
NombreFamiliaGrupo = 'panos' ;
Por Mejorar
- Desarrollar código SQL para cada tabla.
- Implementar duplicación de elementos para los casos donde exista más de
un campo dedicado a MagnitudActivo y UnidadActivo.
- Unir las tablas y formar instalacioncomponentes.csv.
Anexos: Tablas Listas
1. Aisladores 11. Medidores
2. Bancos-Condensadores 12. Mufas
3. Compensadores-Estáticos-Reactivos 13. Panos
4. Condensadores-Acoplamiento 14. Pararrayos
5. Condensadores-Series 15. Reactores
6. Desconectadores 16. Reles-Proteccion
7. Dispositivos-Reconexiones 17. Trampas-Ondas
8. Elementos-Comunes-Panos 18. Transformadores-Corriente
9. Elementos-Comunes-SSEE 19. Transformadores-Potencial
10. Interruptores 20. Transformadores-SSAA
Anexos: Tablas Listas

21. Elementos Comunes SSEE 28. Armarios


22. Paneles Antirruido 29. Bancos-Baterías
23. Servidumbres 30. Controladores Bahía
24. Transformadores 2D 31. Elementos Comunes Armarios
25. Transformadores 3D 32. Elementos Comunes SSGG Casetas
26. Barras 33. Equipos Principales Comunicación
27. Elementos Comunes Patios 34. Generadores Energía
Anexos: Tablas Listas

35. Multiplexadores
36. Otros Elementos Sistemas de Protección
37. Otros Elementos Telecomunicaciones
38. Sistemas Respaldo Energía
39. Tableros

También podría gustarte