📊 Cómo Analicé 10 Años de Divorcios en México con Python ¡Y cómo puedes hacerlo tú!

Imagen
 ¿Alguna vez te has preguntado qué estados de México tienen las tasas de divorcio más altas? Como analista de datos, decidí sumergirme en los microdatos del INEGI y los resultados son fascinantes. En este post, te muestro cómo logré consolidar más de 9 datasets complejos, normalizar la información por cada 1,000 habitantes y crear un Mapa Interactivo Profesional que permite explorar los datos con un solo clic. ¿Qué aprenderás con este proyecto? Consolidación Masiva: Cómo leer múltiples archivos CSV de una carpeta automáticamente. Limpieza de Datos Reales: Solución definitiva a errores de codificación (UTF-8 vs Latin1) y cruce de catálogos del INEGI. Visualización Geoespacial: Uso de Folium para crear mapas de calor (Choropleth) con popups interactivos. ¿Quieres ahorrarte horas de depuración y código? He preparado este Jupyter Notebook profesional , totalmente documentado y listo para ejecutar. Es ideal para estudiantes de ciencia de datos, periodistas o curiosos de la estadíst...

Oracle fusion como actualizar DFF en Sitio del Cliente

  En ocasiones necesitamos actualizar datos para muchos registros y para evitar hacer esto uno por uno, Oracle tiene disponibles herramientas como SOAP Web Services y REST API Services.


En esta publicación vamos hacer una actualización del valor de un Descriptive Flex Field a nivel sitio del cliente. 




Vamos a utilizar la URL que viene en esa pantalla


Service WSDL URL: https://servername/crmService/CustomerAccountService?WSDL


Vamos a entrar a Postman y desde ahí vamos armar el xml , primero vamos agregar un request


Luego vamos a poner el tipo Post y vamos a poner la URL que vimos dos pasos atrás, solo tengan cuidado de cambiar el nombre de su servidor URL: https://servername/crmService/CustomerAccountService


Después vamos agregar nuestras credenciales de acceso a Oracle , en la sección de authorization , en la parte de Body vamos a marcar raw y XML.



Y en Body vamos a colocar el siguiente código de XML


<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                  xmlns:typ="http://xmlns.oracle.com/apps/cdm/foundation/parties/customerAccountService/applicationModule/types/"
                  xmlns:cus="http://xmlns.oracle.com/apps/cdm/foundation/parties/customerAccountService/"
                  xmlns:cus1="http://xmlns.oracle.com/apps/cdm/foundation/parties/flex/custAccountContactRole/"
                  xmlns:par="http://xmlns.oracle.com/apps/cdm/foundation/parties/partyService/"
                  xmlns:sour="http://xmlns.oracle.com/apps/cdm/foundation/parties/flex/sourceSystemRef/"
                  xmlns:cus2="http://xmlns.oracle.com/apps/cdm/foundation/parties/flex/custAccountContact/"
                  xmlns:cus3="http://xmlns.oracle.com/apps/cdm/foundation/parties/flex/custAccountRel/"
                  xmlns:cus4="http://xmlns.oracle.com/apps/cdm/foundation/parties/flex/custAccountSiteUse/"
                  xmlns:cus5="http://xmlns.oracle.com/apps/cdm/foundation/parties/flex/custAccountSite/"
                  xmlns:cus6="http://xmlns.oracle.com/apps/cdm/foundation/parties/flex/custAccount/">
   <soapenv:Header/>
   <soapenv:Body>
      <typ:mergeCustomerAccount>
         <typ:customerAccount>
            <!--Optional:-->
            <cus:CustomerAccountId>900009992CusAcid</cus:CustomerAccountId>
            <!--Optional:-->
            <cus:PartyId>90000092Orgid</cus:PartyId>
           <cus:CustomerAccountSite>
               <!--Optional:-->
               <cus:CustomerAccountSiteId>900009992Siteid</cus:CustomerAccountSiteId>
               <!--Optional:-->
               <cus:CustomerAccountId>900009992CusAcid</cus:CustomerAccountId>
               <!--Optional:-->
               <cus:PartySiteId>9000008PartyID</cus:PartySiteId>
               <cus:CustAcctSiteInformation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="cus5:API_NAME" xmlns:ns3="http://xmlns.oracle.com/apps/cdm/foundation/parties/flex/custAccountSite/">
                  <!--Optional:-->
                  <cus5:CustAcctSiteId>900009992Siteid</cus5:CustAcctSiteId>
                  <!--Optional:-->
                  <cus5:__FLEX_Context>Nombre_del_Contexto</cus5:__FLEX_Context>
                  <cus5:NombredelDFF>1</cus5:NombredelDFF>
               </cus:CustAcctSiteInformation>
            </cus:CustomerAccountSite>
         </typ:customerAccount>
      </typ:mergeCustomerAccount>
   </soapenv:Body>
</soapenv:Envelope>

Los campos en negrita son los valores que deben cambiar
  • 900009992CusAcid , este del Customer account id de la tabla
  • 90000092Orgid, este valor corresponde al id de la organizacion de la tabla
  • 900009992Siteid,este valor del site id de la tabla
  • 9000008PartyID,este del site de la tabla
  • API_NAME,este valor es muy importante lo vas a obtener de la pantalla donde defines el DFF
  • Nombre_del_Contexto, este valor es muy importante lo vas a obtener de la pantalla de donde se define el DFF
  • NombredelDFF este valor es muy importante lo vas a obtener de la pantalla de donde se define el DFF
Te comparto un query que te puede servir para obtener los ID, puedes ajustarlo con los filtros como lo requieras


SELECT hp.party_id , hp.PARTY_NUMBER , hca.account_number , hca.cust_account_id , hps.party_site_id , hps.location_id , hcsu.site_use_code , hps.party_site_name , hps.party_site_number , hps.START_DATE_ACTIVE ,hcsa.set_id ,hp.ORIG_SYSTEM_REFERENCE FROM hz_parties hp , hz_party_sites hps , hz_locations hl , hz_cust_accounts hca , hz_cust_acct_sites_all hcsa , hz_cust_site_uses_all hcsu WHERE hp.party_id = hps.party_id AND hps.location_id = hl.location_id AND hp.party_id = hca.party_id AND hcsa.party_site_id = hps.party_site_id AND hcsu.cust_acct_site_id = hcsa.cust_acct_site_id AND hca.cust_account_id = hcsa.cust_account_id --AND hps.party_site_number = numero de site del cliente --AND hca.account_number =numero de cuenta del cliente --AND hps.location_id = valor que busques

Comentarios

🚀 Mantener este blog funcionando requiere tiempo y café. ¡Puedes contribuir con uno aquí!

Entradas más populares de este blog

Guía Práctica: Ejemplo Completo de ASPX para Desarrolladores Web

📊 Automatiza tu trabajo: Convierte tablas de Word a Excel con una macro

Ejemplo de Macro en Word para Automatizar Documentos