コード例 #1
0
 def carga(self):
     datos_conx = Util.obt_datos_conx('conx_oracle')
     prop_conx = Util.obt_prop_driver(datos_conx['driver'])
     url_jdbc = datos_conx['url_jdbc']
     self.df_sp_campanias.write.jdbc(url=url_jdbc,
                                     table="ADS_INFO_CAMPANIA",
                                     mode='append',
                                     properties=prop_conx)
コード例 #2
0
def trace_error(exctype, value, tb):
    obj_traceback = Traceback(tipo=exctype, valor=value, traceback=tb)
    dto_logger = Logger(txt_trace=tb,
                        fase_etl='',
                        nom_script='',
                        fec_proceso=Util.obt_fecha_actual(),
                        estatus='')
    dto_logger.fec_proceso = Util.obt_fecha_actual()
    dto_logger.txt_trace = tb

    obj_logger_txt = LoggerTxt(obj_traceback, dto_logger)
    obj_logger_txt.persiste()
コード例 #3
0
    def limpieza_de_anuncios(self):
        txt_anuncios = Util.lee_fichero_de_configuracion(
            nom_fichero='anuncios.properties')
        dao_extrac_prop = adminDao.AdministradorDao(DaoProp.DaoExtraccionProp,
                                                    txt_anuncios,
                                                    'estadistica_anuncios').dao
        dict_prop_anuncios = dao_extrac_prop.obten()

        anuncios = Util.pandas_a_spark(self.sql_context, self.anuncios)
        anuncios.registerTempTable('anuncios')
        return self.sql_context.sql(
            "select " + str(dict_prop_anuncios['atributos_estadisticos']) +
            ' from anuncios')
コード例 #4
0
 def extrae(self):
     dao_anuncio = adminDao.AdministradorDao(daoCon.DaoEstadisticaAnuncio,
                                             self.dto_credenciales).dao
     detalle_de_anuncios = dao_anuncio.obten()
     detalle_de_anuncios['data_date_part'] = Util.obt_fecha_actual()
     self.anuncios = Util.pandas_a_spark(self.sql_context,
                                         detalle_de_anuncios)
     # Registro de funciones UDF
     self.sql_context.udf.register("excluye_carac_espec",
                                   lambda x: elimina_carac_especial(x))
     self.sql_context.udf.register("obt_nom_atributo",
                                   lambda x: obt_nom_atributo(x))
     self.sql_context.udf.register("obt_val_atributo",
                                   lambda x: obt_val_atributo(x))
コード例 #5
0
 def carga(self):
     datos_conx = Util.obt_datos_conx('conx_oracle')
     prop_conx = Util.obt_prop_driver(datos_conx['driver'])
     url_jdbc = datos_conx['url_jdbc']
     self.df_sp_detalle_de_campanias.write.jdbc(url=url_jdbc,
                                                table="FB_DETALLE_CAMPANIA",
                                                mode='append',
                                                properties=prop_conx)
     # Guarda en object storage csv
     nom_archivo = 'detalle_de_campania_' + Util.obt_cadena_fecha_actual(
     ) + '.csv'
     nom_ruta_hdfs = 'oci://bdcsce@axk8tyxiw9wz/facebook/marketing/campania/' + nom_archivo
     self.df_sp_detalle_de_campanias.coalesce(1).write.format(
         'com.databricks.spark.csv').save(nom_ruta_hdfs, header='true')
コード例 #6
0
    def limpia_detalle_de_campanias(self):
        txt_conf_campanias = Util.lee_fichero_de_configuracion(
            nom_fichero='campanias.properties')
        dao_extrac_prop = adminDao.AdministradorDao(DaoProp.DaoExtraccionProp,
                                                    txt_conf_campanias,
                                                    'campania').dao
        dict_conf_campanias = dao_extrac_prop.obten()

        campanias = Util.pandas_a_spark(self.sql_context,
                                        self.detalle_de_campanias)
        campanias.registerTempTable('campanias')
        return self.sql_context.sql("select " +
                                    str(dict_conf_campanias['atributos']) +
                                    ' from campanias')
コード例 #7
0
    def carga(self):
        datos_conx = Util.obt_datos_conx('conx_oracle')
        prop_conx = Util.obt_prop_driver(datos_conx['driver'])
        url_jdbc = datos_conx['url_jdbc']
        # Guarda a oracle
        self.estadistica_de_anuncios.write.jdbc(
            url=url_jdbc,
            table="FB_ESTADISTICA_ANUNCIOS",
            mode='append',
            properties=prop_conx)
        # Guarda en object storage csv
        nom_archivo = 'estadistica_de_anuncio_' + Util.obt_cadena_fecha_actual(
        ) + '.csv'
        nom_ruta_hdfs = 'oci://bdcsce@axk8tyxiw9wz/facebook/marketing/anuncio/' + nom_archivo

        self.estadistica_de_anuncios.coalesce(1).write.format(
            'com.databricks.spark.csv').save(nom_ruta_hdfs, header='true')
コード例 #8
0
    def transforma(self):
        grupo_campanias = list()

        for campania in self.listado_de_campanias:
            dao_campania = adminDao.AdministradorDao(daoCon.DaoCampania,
                                                     campania,
                                                     self.dto_credenciales).dao
            info_campania = dao_campania.obten_info_campania()
            grupo_campanias.append(info_campania)

        df_total_campanias = self.concentra_todos_anuncios(grupo_campanias)
        self.df_sp_campanias = Util.pandas_a_spark(self.sql_context,
                                                   df_total_campanias)
        self.df_sp_campanias.show()
コード例 #9
0
    def transforma(self):
        df_acciones = self.obten_acciones(self.anuncios)
        df_costo_de_acciones = self.obten_costo_por_accion(self.anuncios)

        self.acciones_y_costos_de_anuncios = df_acciones \
            .join(df_costo_de_acciones, (df_acciones.AD_ID == df_costo_de_acciones.AD_ID) &
                  (df_acciones.ATRIBUTO == df_costo_de_acciones.ATRIBUTO)) \
            .select(df_acciones.CAMPAIGN_ID,
                    df_acciones.AD_ID,
                    df_acciones.ATRIBUTO.alias('ACTION'),
                    df_acciones.VALOR.alias('VALUE'),
                    df_costo_de_acciones.VALOR.alias("COST_VALUE")).\
            withColumn('DATA_DATE_PART', lit(Util.obt_fecha_actual()))

        self.acciones_y_costos_de_anuncios.show()
コード例 #10
0
    def obten(self):
        fragmentos_desgloses = list()
        grupo_de_consultas = self.obten_grupo_de_consultas_curl()

        for nom_desglose, consulta_desglose in grupo_de_consultas:
            json_desglose = self.ejecuta_curl(consulta_desglose)
            dict_desglose = json.loads(json_desglose)
            if 'data' in dict_desglose:
                df_desglose = pd.DataFrame(dict_desglose['data'])
                df_desglose['nom_desglose'] = nom_desglose
                df_desglose['data_date_part'] = Util.obt_fecha_actual()
                fragmentos_desgloses.append(df_desglose)

        total_de_desgloses = pd.concat(fragmentos_desgloses, axis=0, ignore_index=True, sort=False)
        return total_de_desgloses
コード例 #11
0
 def persiste(self):
     ruta = "/u01/app/oracle/tools/home/oracle/facebook_marketing/Ingesta_insumo/"
     nom_fichero_log = ruta + "logs/log_facebook_" + Util.obt_cadena_fecha_actual(
     ) + '.log'
     with adminDao.AdministradorDeFicheros(nom_fichero_log,
                                           'a+') as fichero:
         fichero.write(
             '***************************************************\n')
         fichero.write('Nombre_script:' + str(self.dto_logger.nom_script) +
                       '\n')
         fichero.write('Fase_etl:     ' + str(self.dto_logger.fase_etl) +
                       '\n')
         fichero.write('Seccion_etl:  ' + str(self.dto_logger.estatus) +
                       '\n')
         fichero.write('Fec_proceso:  ' + str(self.dto_logger.fec_proceso) +
                       '\n')
         fichero.write('Trace:        ' + str(self.dto_logger.txt_trace) +
                       '\n')
         fichero.write('Valor:        ' + str(self.obj_traceback.valor) +
                       '\n')
         fichero.write('Tipo:         ' + str(self.obj_traceback.tipo) +
                       '\n')
コード例 #12
0
 def obten_prop_de_desglose(self):
     txt_desglose = Util.lee_fichero_de_desglose()
     dao_conf_desglose = adminDao.AdministradorDao(DaoProp.DaoExtraccionProp, txt_desglose, 'desglose_generico').dao
     return dao_conf_desglose
コード例 #13
0
 def extrae(self):
     dao_anuncio = adminDao.AdministradorDao(daoCon.DAOAnuncio,
                                             self.dto_credenciales).dao
     self.anuncios = dao_anuncio.obten()
     self.anuncios['data_date_part'] = Util.obt_fecha_actual()
コード例 #14
0
    return df_total_campanias


gpo_anunc_con_detalle = list()
dto_credenciales = Dto.DtoCredenciales(
    id_cuenta='act_804059193122922',
    token_de_acceso='EAAFqYKPZBGTwBAESZB1MgH3tnZCBt0Ny4LRQ8OhbL'
    'sEgXvW7hDddhlHsHUqnrlu3KDlIII7qPgr501HZCJQQuZBK8z'
    'vMQegVrBiTB1IILpOI1YYMLd8b5dp25ZCvd7yNZAukSioGZCyH'
    'ADl4XE331SRUSZB275Dgav9uXpqfTtMLlbwZDZD',
    id_usuario='',
    id_app='',
    id_pagina='',
    app_secreta='')

nom_archivo = Util.lee_fichero_campanias()
dao_conf_campania = adminDao.AdministradorDao(DaoProp.DaoExtraccionProp,
                                              nom_archivo, 'campania').dao
dict_columnas = dao_conf_campania.obten()

# Contador
contador = 0

for anuncio in grupo_de_anuncios.values.tolist():

    if contador == 4:
        nom_archivo = 'hist_anuncios_' + Util.obt_fecha_actual() + '.csv'
        print(nom_archivo)
        dfrm_total_anuncios = union_de_drfms_pandas(gpo_anunc_con_detalle)
        df_sp_total_anuncios = Util.pandas_a_spark(sql_context,
                                                   dfrm_total_anuncios)
コード例 #15
0
 def concentra_todos_anuncios(self, grupo_campanias):
     df_total_campanias = pd.concat(grupo_campanias,
                                    ignore_index=True,
                                    sort=True)
     df_total_campanias['data_date_part'] = Util.obt_fecha_actual()
     return df_total_campanias
コード例 #16
0
 def extrae(self):
     dao_campania = adminDao.AdministradorDao(daoCon.DAOCampania,
                                              self.dto_credenciales).dao
     self.detalle_de_campanias = dao_campania.obten()
     self.detalle_de_campanias['data_date_part'] = Util.obt_fecha_actual()