mmmm,.. Pues aquí la cuestión es que son 2 archivos los que se ejecutan, primero uno que carga las variables
Using perl Syntax Highlighting
#!/usr/bin/perl
print " Ejecutando el Script\n" ;
#Este script sirve para lanzar n instancias del script principal para que sean como threads.
use strict
;
use warnings
;
my $path="/export/home/colshcp/reportes_mensuales/Febrero/";
system $path ."conv_1.pl 3591,103597,103599,73862,73863,105652,106512,106513,80065,98442 >> $path/log_conv.log &";
system $path ."conv_1.pl 3573,103582,103583,103568,103510,103465,98444,98445,98446,98447 >> $path/log_conv.log &";Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Y así con otras 40 líneas.
Mi idea es disminuir estas 40 líneas, en 3 segmentos, porque...
Después el programa que hace la consulta.
Con el siguiente programa... tomando los valores del primero (conv_1.pl)
Lo primero que tengo que modificar, después de hacer que el proceso funcione, es modificar lo de las fechas, porque actualmente hay que hacerlo a patín, con cada mes,
Using perl Syntax Highlighting
#use warnings;
use DBI
;
my $user="local";
my $pass="2003";
my $instancia="xpaxt";
my $path="/reportesmensuales/archivos/";
my $imprime="";
#============== Variables para tabla de sumarización =================
my $total_poleos=0;
my $disponibilidad=0;
my $pdisp=0;
my $tlat1=0;
my $tlat2=0;
my $tlat3=0;
my $slat1=0;
my $slat2=0;
my $slat3=0;
my $plat1=0;
my $plat2=0;
my $plat3=0;
#=====================================================================
my $archivo="";
my @fechas = ('20080601','20080602','20080603','20080604','20080605','20080606','20080607','20080608','20080609','20080610','
20080611','20080612','20080613','20080614','20080615','20080616','20080617','20080618','20080619','20080620','20080621','2008
0622','20080623','20080624','20080625','20080626','20080627','20080628','20080629','20080630');
##(select fecha,disponibilidad,latencia from final_plv where idcid=$IDCID and clase=1 and fecha >= to_date('20080601 0000','YYYYMMDD HH24MI') and fecha <=to_date('20080630 235900','YYYYMMDD HH24MISS')) uno
#my @fechas=('20080601','20080602');
my $todos_cids=$ARGV[0
];
my @horas=('0000','0005','0010','0015','0020','0025','0030','0035','0040','0045','0050','0055','0100','0105','0110','0115','0
120','0125','0130','0135','0140','0145','0150','0155','0200','0205','0210','0215','0220','0225','0230','0235','0240','0245','
0250','0255','0300','0305','0310','0315','0320','0325','0330','0335','0340','0345','0350','0355','0400','0405','0410','0415',
'0420','0425','0430','0435','0440','0445','0450','0455','0500','0505','0510','0515','0520','0525','0530','0535','0540','0545'
,'0550','0555','0600','0605','0610','0615','0620','0625','0630','0635','0640','0645','0650','0655','0700','0705','0710','0715
','0720','0725','0730','0735','0740','0745','0750','0755','0800','0805','0810','0815','0820','0825','0830','0835','0840','084
5','0850','0855','0900','0905','0910','0915','0920','0925','0930','0935','0940','0945','0950','0955','1000','1005','1010','10
15','1020','1025','1030','1035','1040','1045','1050','1055','1100','1105','1110','1115','1120','1125','1130','1135','1140','1
145','1150','1155','1200','1205','1210','1215','1220','1225','1230','1235','1240','1245','1250','1255','1300','1305','1310','
1315','1320','1325','1330','1335','1340','1345','1350','1355','1400','1405','1410','1415','1420','1425','1430','1435','1440',
'1445','1450','1455','1500','1505','1510','1515','1520','1525','1530','1535','1540','1545','1550','1555','1600','1605','1610'
,'1615','1620','1625','1630','1635','1640','1645','1650','1655','1700','1705','1710','1715','1720','1725','1730','1735','1740
','1745','1750','1755','1800','1805','1810','1815','1820','1825','1830','1835','1840','1845','1850','1855','1900','1905','191
0','1915','1920','1925','1930','1935','1940','1945','1950','1955','2000','2005','2010','2015','2020','2025','2030','2035','20
40','2045','2050','2055','2100','2105','2110','2115','2120','2125','2130','2135','2140','2145','2150','2155','2200','2205','2
210','2215','2220','2225','2230','2235','2240','2245','2250','2255','2300','2305','2310','2315','2320','2325','2330','2335','
2340','2345','2350','2355');
my $dbh=DBI
->connect("DBI:Oracle:","$user\@$instancia","$pass");
#SELECCIONO TODOS LOS CIRCUITOS
my $strSql=qq~Select idcid
,cid from cids where idcliente
=11222
and estado
=1
and idcid in
($todos_cids)~;
my $sth=$dbh->prepare($strSql);
$sth->execute();
my $hash;
while(my @lista=$sth->fetchrow_array){
$hash->{$lista[0
]}=$lista[1
];
}
foreach my $IDCID (keys %{$hash}) {
# inicializó variables para sumarización
$total_poleos=0;
$disponibilidad=0;
$pdisp=0;
$tlat1=0;
$tlat2=0;
$tlat3=0;
$slat1=0;
$slat2=0;
$slat3=0;
$plat1=0;
$plat2=0;
$plat3=0;
$imprime="";
#==========================================
my $qrymes=qq~ Select to_char
(uno
.fecha
,'YYYYMMDD HH24MI'),
nvl
(uno
.disponibilidad
, nvl
(dos
.disponibilidad
,nvl
(tres
.disponibilidad
,0)))*1,
nvl
(replace
(uno
.latencia
,',','.'),0),
nvl
(replace
(dos
.latencia
,',','.'),0),
nvl
(replace
(tres
.latencia
,',','.'),0),
to_char
(uno
.fecha
,'DD/MM/YYYY HH24:MI')
from
(select fecha
,disponibilidad
,latencia from final_plv where idcid
=$IDCID and clase
=1
and fecha
>=to_date
('20080601 0000','YYYY
MMDD HH24MI') and fecha
<=to_date
('20080630 235900','YYYYMMDD HH24MISS')) uno
left
join (select fecha
,disponibilidad
,latencia from final_plv where idcid
=$IDCID and clase
=2
and fecha
>=to_date
('20080601 0
000','YYYYMMDD HH24MI') and fecha
<=to_date
('20080630 235900','YYYYMMDD HH24MISS')) dos on dos
.fecha
=uno
.fecha
left
join (select fecha
,disponibilidad
,latencia from final_plv where idcid
=$IDCID and clase
=3
and fecha
>=to_date
('20080601 0
000','YYYYMMDD HH24MI') and fecha
<=to_date
('20080630 235900','YYYYMMDD HH24MISS')) tres on tres
.fecha
=uno
.fecha
~;
$sth=$dbh->prepare($qrymes);
$sth->execute();
my $hashmes;
while(my @lista=$sth->fetchrow_array){
$hashmes->{$lista[0
]}->{1
}=$lista[1
];
$hashmes->{$lista[0
]}->{2
}=$lista[2
];
$hashmes->{$lista[0
]}->{3
}=$lista[3
];
$hashmes->{$lista[0
]}->{4
}=$lista[4
];
$hashmes->{$lista[0
]}->{5
}=$lista[5
];
# $lista[2],$lista[3],$lista[4]);
}
my @anterior=(0
,0
,0
,0
);
foreach my $fecha (@fechas) {
foreach my $hora (@horas) {
$total_poleos+=1;
if(exists($hashmes->{"$fecha $hora"}))
{
#@anterior=($hashmes->{"$fecha $hora"}->{1],$hashmes->{"$fecha $hora"}->{2],$hashmes->{"$fecha $hora"}->{4],$hashmes->{"$fecha $hora"}->{4]);
$anterior[0
]=$hashmes->{"$fecha $hora"}->{1
};
$anterior[1
]=$hashmes->{"$fecha $hora"}->{2
};
$anterior[2
]=$hashmes->{"$fecha $hora"}->{3
};
$anterior[3
]=$hashmes->{"$fecha $hora"}->{4
};
$disponibilidad+=1
if ($hashmes->{"$fecha $hora"}->{1
} ==1
);
if( $hashmes->{"$fecha $hora"}->{2
} >0
)
{
$tlat1+=1
;
$slat1+=$hashmes->{"$fecha $hora"}->{2
};
}
if( $hashmes->{"$fecha $hora"}->{3
} >0
)
{
$tlat2+=1
;
$slat2+=$hashmes->{"$fecha $hora"}->{3
};
}
if( $hashmes->{"$fecha $hora"}->{4
} >0
)
{
$tlat3+=1
;
$slat3+=$hashmes->{"$fecha $hora"}->{4
};
}
$imprime.= $hashmes->{"$fecha $hora"}->{5}.",".$hashmes->{"$fecha $hora"}->{1}.",".$hashmes->{"$fecha $hora"}->{2}.",
".$hashmes->{"$fecha $hora"}->{3}.",".$hashmes->{"$fecha $hora"}->{4}."\n";
}
else
{
my $fecha_fmt=$fecha;
my $hora_fmt=$hora;
$fecha_fmt=~ s/(\d\d\d\d)(\d\d)(\d\d)/$3\/$2\/$1/;
$hora_fmt=~ s/(\d\d)(\d\d)/$1:$2/;
$disponibilidad+=1
if ($anterior[0
] ==1
);
if( $anterior[1
] >0
)
{
$tlat1+=1;
$slat1+=$anterior[1
];
}
if( $anterior[2
] >0
)
{
$tlat2+=1;
$slat2+=$anterior[2
];
}
if( $anterior[3
] >0
)
{
$tlat3+=1;
$slat3+=$anterior[3
];
}
$imprime.= $fecha_fmt." ".$hora_fmt.",".$anterior[0].",".$anterior[1].",".$anterior[2].",".$anterior[3]."\n";
}
}
print $IDCID."=>".$fecha."\n";
}
if ($tlat1==0
) {$tlat1=1;}
if ($tlat2==0
) {$tlat2=1;}
if ($tlat3==0
) {$tlat3=1;}
$plat1=$slat1/$tlat1;
$plat2=$slat2/$tlat2;
$plat3=$slat3/$tlat3;
$pdisp = ($disponibilidad/$total_poleos)*100;
$pdisp .= '%';
open (my $archivo,">".$path.$hash->{$IDCID}.".csv");
print $archivo "Poleos,$disponibilidad,$pdisp\n";
print $archivo "\n";
print $archivo "Latencias,$tlat1,$tlat2,$tlat3\n";
print $archivo "Suma,$slat1,$slat2,$slat3\n";
print $archivo "Promedio,$plat1,$plat2,$plat3\n";
print $archivo "\n";
print $archivo "\n";
print $archivo "FECHA,DISPONIBILIDAD,LATENCIA_INTERACTIVOS,LATENCIA_DIFERIDOS,LATENCIA_CONVERSACIONALES\n";
print $archivo $imprime;
close $archivo;
# Tomo los sitios
$strSql=qq~select c
.idcid
,s.nombre from cids c
,sitios
s, sitios_cid t
where
s.idcliente
=11222
and c
.idcid
=t
.idcid
and s.idsitio
=t
.idsitio
and c
.estado
=1
~;
my $sth=$dbh->prepare("$strSql");
$sth->execute();
my $sitios;
while(my @lst=$sth->fetchrow_array){
$sitios->{$lst[0
]}=$lst[1
];
}
# imprimo en el archivo general
open (TODOS
,">>".$path."todos_cids.csv");
print TODOS
$hash->{$IDCID}.",".$sitios->{$IDCID}.",".$disponibilidad.",".$pdisp.",".$plat1.",".$plat2.",".$plat3.",".$tlat1.
",".$tlat2.",".$tlat3."\n";
close TODOS
;
}Coloreado en 0.015 segundos, usando
GeSHi 1.0.8.4