Package: centraal-dataframework
centraal-dataframeworkcentraal-dataframeworkes una libreria de python que implementa practicas para usar de manera eficienteazure functionpara ejecutar procesos de transformación y calidad de datos. Los procesos de transformación se ejecutan usando la libreriapandasy las reglas de calidad congreat expectations.Comienza a usar el frameworkUsa como referencia elnotebook. Algunos pasos basicos:Instala la libreria:pip install centraal-dataframeworkAsegurar la creación de las siguientes variables de ambiente. En el ambiente desarollo local, es recomendado usar un archivo.envy la libreriapython-dotenv. Ya con la function app desplegada estas variables deben estar configuradas en losApplication settings.AZURE_STORAGE_CONNECTION_STRING: string de conexión al datalakeCONTENEDOR_VALIDACIONES: donde se contienen las validaciones que van ser realizadas por great expectations.Crea tus tareas, usando el decorador necesario,task_dqotask. Usar como referencia elnotebook en la documentación4. Cree el archivo de configuración `yaml`, por defecto este archivo se buscara en el directorio de trabajo bajo el nombre `centraal_dataframework.yaml`

```yml
#---contenido de config.yaml---
url_logicapp_email: https://prod-33.eastus.logic.azure.com:443/workflows/xxxxx
emails_notificar: 
    - nombre.appelido@centraal.studio
    - nombre.appelido@correo.com
    ...
tareas:
    # deben tener el nombre de la función definida.
    nombre_funcion:
        dias: '*'
        horas: 8,12,20
    segundo_nombre_funcion:
        dias:  0
        horas: 8,12,20Nota: tener en cuenta que '*' puede ser usada en dias y horas, para indicar que la tarea debe ser ejecutada cada hora/dia.  Algunos ejemplos para entender como trabaja:dias: '*'yhoras: '*'- > ejecutar todos los dias, cada hora.dias: '*'yhoras: '12'- >  ejecutar todos los diassoloa las 12.dias: '*'yhoras: 1,8,12,15- > ejecutar todos los diassoloa las 1, 8 a las 12 y a las 15:00 (3 pm).dias 0,3,6yhoras: '*'- > ejectutarsololos Lunes (0), Jueves(3) y Domingo(6) cada hora.dias: 1,4yhoras: 20- > ejectutarsololos Lunes (0), Jueves(3) y Domingo(6)  a las 20:00.Crear la function app, adiciona el framework y tareas:"""---contenido de function_app.py --- """importazure.functionsasfuncfromcentraal_dataframework.blueprintsimportframework# se deben importar los modulos customfromother.module.logica_pandasimport*fromother.module.logica_calidadimport*# si tiene otro modulo tambien importarlo# form otro.modulo import logica# ...app=func.FunctionApp()#Adicionar el frameworkapp.register_functions(framework)Desplega la azure function. -> proximamente documentación y herramientas para facilitar este proceso.ArquitecturaLa arquitectura general de la libreria esta basada en los siguientes servicios:El diseño inical del API de la libreria se comopone de los siguientes objetos:config.ymlrunnertasklogalertadq-task: es un tipo detaskespecifica para reportar tareas de calidad de datos (dq).---
title: Diseño inicial del API de la libreria
---
  graph TD;
      config[config.yml]:::cdf--usa-->runner:::cdf;
      m[Llamado manual]:::manual-->httptf[Http Trigger function]:::az;
      httptf --> runner;
      runner --encola tarea --> qtf(Queue Trigger Function):::az ;
      qtf --> task:::cdf
      task --usa--> log:::cdf --usa-->alerta:::cdf
      task --> dqt[dq-task]:::cdf
      dqt --> log
      classDef manual stroke:#f66,stroke-width:2px,stroke-dasharray: 5 5
      classDef az stroke:#2D9BF0,stroke-width:2px
      classDef cdf stroke:#FAC710PyPI Release ChecklistNOTA: basado encheck list del template original.Before Your First ReleaseYou better visit PyPI to make sure your package name is unused.For Every ReleaseMake some pull requests, merge all changes from feature branch to master/main.Update CHANGELOG.md manually. Make sure it follows theKeep a Changelogstandard.
Be noticed that GitHub workflow will read changelog and extract release notes automatically.Commit the changelog changes:gitaddCHANGELOG.md
gitcommit-m"Changelog for upcoming release 0.1.1."Update version number and automatically create a commit, tag(can also be patch or major).poetryrunbump2versionminorRun the tests locally for insurance:poetryruntoxPush these commits to master/main:gitpushBefore proceeding to the next step, please check workflows triggered by this push have passed.Push the tags(created by bump2version) to master/main, creating the new release on both GitHub and PyPI:gitpush--tagsOnly tag name started with 'v'(lower case) will leverage GitHub release workflow.Check the PyPI listing page to make sure that the README, release
notes, and roadmap display properly. If tox test passed, this should be ok, since
we have already run twine check during tox test.About This ChecklistThis checklist is adapted fromhttps://cookiecutter-pypackage.readthedocs.io/en/latest/pypi_release_checklist.html.It assumes that you are using all features of Cookiecutter PyPackage.