Ejemplo n.º 1
0
class T_070_EnviarMetadataCargaPt1_RDS(luigi.contrib.postgres.CopyToTable):

    def requires(self):
        return T_060_WebScrapingInicial()

    # Instanciamos la clase Rita
    objRita = Rita()

    # Parámetros de conexión a la RDS
    user, password, database, host = objRita.objUtileria.ObtenerParametrosRDS()

    # Tabla y columnas que se actualizarán
    table = 'linaje.ejecuciones'
    columns = objRita.lst_Ejecuciones

    def rows(self):
        print('\n---Inicio carga de linaje carga Ejecuciones---\n')

        for data_file in Path('Linaje/Ejecuciones').glob('*.csv'):
            with open(data_file, 'r') as csv_file:
                reader = pd.read_csv(csv_file, header=None)
                for fila in reader.itertuples(index=False):
                    yield fila

        os.system('rm Linaje/Ejecuciones/*.csv')
        print('\n---Fin carga de linaje ejecuciones---\n')
Ejemplo n.º 2
0
class T_195_EnviarMetadataPredicciones_RDS(luigi.contrib.postgres.CopyToTable):

    def requires(self):
        # Modificar T_Penultima por la task correspondiente
        return T_190_Enviar_Predict_RDS()

    # Instanciamos la clase Rita
    objRita = Rita()

    # Parámetros de conexión a la RDS
    user, password, database, host = objRita.objUtileria.ObtenerParametrosRDS()

    # Tabla y columnas que se actualizarán
    table = 'linaje.predicciones'
    columns = objRita.lst_Predicciones

    def rows(self):
        print('\n---Inicio carga de linaje predicciones---\n')
        for data_file in Path('Linaje/Predict').glob('*.csv'):
            with open(data_file, 'r') as csv_file:
                reader = pd.read_csv(csv_file, header=None)
                for fila in reader.itertuples(index=False):
                    yield fila
        os.system('rm Linaje/Predict/*.csv')
        print('\n---Fin carga de linaje predicciones---\n')
Ejemplo n.º 3
0
class T_190_Enviar_Predict_RDS(luigi.contrib.postgres.CopyToTable):

    def requires(self):
        return T_180_Predict()

    # Instanciamos la clase Rita
    objRita = Rita()

    # Parámetros de conexión a la RDS
    user, password, database, host = objRita.objUtileria.ObtenerParametrosRDS()

    # Tabla y columnas que se actualizarán
    table = 'trabajo.predicciones'
    columns = objRita.lst_Predicciones

    def rows(self):
        print('\n---Inicio carga de Predicciones---\n')

        for data_file in Path('.').glob('Predicciones.csv'):
            with open(data_file, 'r') as csv_file:
                reader = pd.read_csv(csv_file, header=None)
                for fila in reader.itertuples(index=False):
                    yield fila
        # os.system('rm Predicciones.csv')
        print('\n---Fin carga de Predicciones---\n')
Ejemplo n.º 4
0
class T_160_MetadataFeatureEngineering_Predict(luigi.contrib.postgres.CopyToTable):

    def requires(self):
        return T_150_FeatureEngineering_Predict()

    # Instanciamos la clase Rita
    objRita = Rita()

    # Parámetros de conexión a la RDS
    user, password, database, host = objRita.objUtileria.ObtenerParametrosRDS()

    # Tabla y columnas que se actualizarán
    table = 'linaje.transform'
    columns = objRita.lst_Transform

    def rows(self):
        print('\n---Inicio carga de linaje transform---\n')
        for data_file in Path('Linaje/Transform').glob('*.csv'):
            with open(data_file, 'r') as csv_file:
                reader = pd.read_csv(csv_file, header=None)
                for fila in reader.itertuples(index=False):
                    yield fila
        os.system('rm Linaje/Transform/*.csv')
        print('\n---Fin carga de linaje transform---\n')
Ejemplo n.º 5
0
class Predict(Resource):

    obj_Rita = Rita()
    meses = obj_Rita.ObtenerMeses()

    parser = ns.parser()
    parser.add_argument('fecha',
                        type=str,
                        help='Fecha del vuelo',
                        nullable=True)
    parser.add_argument('id_operador',
                        type=str,
                        help='Id aerolinea',
                        nullable=True)
    parser.add_argument('id_avion', type=str, help='Id avion', nullable=True)
    parser.add_argument('num_vuelo', type=str, help='No. vuelo', nullable=True)
    parser.add_argument('origen',
                        type=str,
                        help='Origen del vuelo',
                        nullable=True)
    parser.add_argument('destino',
                        type=str,
                        help='Destino del vuelo',
                        nullable=True)
    parser.add_argument('horasalidaf',
                        type=str,
                        help='Salida vuelo',
                        nullable=True)

    @ns.expect(parser, validate=True)
    def get(self):

        fecha = request.args.get('fecha')
        id_operador = request.args.get('id_operador')
        id_avion = request.args.get('id_avion')
        num_vuelo = request.args.get('num_vuelo')
        origen = request.args.get('origen')
        destino = request.args.get('destino')
        horasalidaf = request.args.get('horasalidaf')

        from Class_Utileria import Utileria
        obj_Utileria = Utileria()

        str_Query = "select * from trabajo.predicciones where fecha = '2016-01-02' and id_operador = 'WN' and id_avion='7819A' and num_vuelo='6308' and origen='MDW' and destino = 'PIT' and horasalidaf='545'"
        str_Query = "select * from trabajo.predicciones where 1=1"

        if fecha is not None:
            str_Query = str_Query + " and fecha = '{}'".format(fecha)
        if id_operador is not None:
            str_Query = str_Query + " and id_operador = '{}'".format(
                id_operador)
        if id_avion is not None:
            str_Query = str_Query + " and id_avion = '{}'".format(id_avion)
        if num_vuelo is not None:
            str_Query = str_Query + " and num_vuelo = '{}'".format(num_vuelo)
        if origen is not None:
            str_Query = str_Query + " and origen = '{}'".format(origen)
        if destino is not None:
            str_Query = str_Query + " and destino = '{}'".format(destino)
        if horasalidaf is not None:
            str_Query = str_Query + " and horasalidaf = '{}'".format(
                horasalidaf)

        str_Query = str_Query + ";"

        try:
            connection = Utileria().CrearConexionRDS()
            cursor = connection.cursor()

            cursor.execute(str_Query)

            records = cursor.fetchall()
            df = pd.DataFrame(records)
            col_names = [i[0] for i in cursor.description]
            df.columns = col_names
            cursor.close()
            connection.close()

        except:
            raise

        return df.to_dict()
Ejemplo n.º 6
0
 def get(self):
     obj_Rita = Rita()
     return {'Campos del modelo': obj_Rita.dict_Campos}
Ejemplo n.º 7
0
class TestLoad(marbles.core.TestCase):

    from Class_Utileria import Utileria
    from Class_Rita import Rita

    objRita = Rita()
    objUtileria = Utileria()

    # Variables para metadata
    str_NombreMetodo = ''
    str_Estatus = ''
    str_Mensaje = ''
    dt_HoraEjec = None
    str_NombreArchivo = ''

    # Variable reservada
    __name__ = 'TestLoad'

    def test_load_count_columns(self):

        # Contar número de columnas de cada csv en S3
        __s3 = boto3.client('s3')
        __str_note = 'numero de columnas en el archivo csv no es el esperado'

        __arr_Anios = self.objRita.ObtenerAnios()
        __arr_Meses = self.objRita.ObtenerMeses()

        for anio in __arr_Anios:
            for mes in __arr_Meses:

                __aniio = str(anio)
                __mess = str(mes)

                print(__aniio)
                print(__mess)

                __conn = self.objUtileria.CrearConexionRDS()
                __query = "select id_archivo from linaje.archivos where anio='" + __aniio + "' and mes='" + __mess + "';"
                __cur = __conn.cursor()
                __cur.execute(__query)
                __nombre_archivo = __cur.fetchone()[0]
                print(__nombre_archivo)

                __str_directorio = 'carga_inicial/' + str(anio) + '/' + str(
                    mes) + '/' + __nombre_archivo

                __obj = __s3.get_object(
                    Bucket=self.objUtileria.str_NombreBucket,
                    Key=__str_directorio)
                __df = pd.read_csv(io.BytesIO(__obj['Body'].read()))
                __df.drop(__df.filter(regex="Unname"), axis=1, inplace=True)
                __num_columns = len(__df.columns)

                self.str_NombreMetodo = 'test_load_count_columns'
                self.dt_HoraEjec = datetime.now()

                try:
                    self.assertEqual(__num_columns, 15, note=__str_note)
                    self.str_Estatus = 'OK'
                except BaseException as errorPrueba:
                    self.str_Estatus = 'FAILED'
                    self.str_Mensaje = errorPrueba
                    break