Searching...
miércoles, 24 de mayo de 2023

Eliminar metadatos de entidades DataHub

El siguiente ejemplo de script de Python utiliza la biblioteca acryl-datahub para eliminar metadatos de entidades en DataHub basado en un conjunto de URNs:

from acryl_datahub.client import DataHubClient


# Configura los parámetros de conexión a DataHub

datahub_host = "https://example.datahub.acryl.io"

access_token = "YOUR_ACCESS_TOKEN"


# Define las URNs de las entidades a eliminar

urns_to_delete = [

    "urn:acryl:dataset:123456789:entity:1",

    "urn:acryl:dataset:123456789:entity:2",

    "urn:acryl:dataset:123456789:entity:3"

]


# Crea una instancia del cliente de DataHub

client = DataHubClient(datahub_host, access_token)


# Recorre las URNs y elimina las entidades correspondientes

for urn in urns_to_delete:

    try:

        client.delete_entity(urn)

        print(f"Entidad con URN '{urn}' eliminada exitosamente.")

    except Exception as e:

        print(f"Error al eliminar la entidad con URN '{urn}': {str(e)}")

Asegúrate de reemplazar los valores de datahub_host y access_token con los correspondientes a tu entorno de DataHub. Además, actualiza la lista urns_to_delete con las URNs de las entidades que deseas eliminar.

El script utiliza la clase DataHubClient de la biblioteca acryl-datahub para establecer una conexión con DataHub y luego recorre la lista de URNs para eliminar las entidades correspondientes utilizando el método delete_entity(). El script imprime mensajes de éxito o error para cada entidad eliminada.

Recuerda que necesitarás tener instalada la biblioteca acryl-datahub en tu entorno Python. Puedes instalarla utilizando el comando pip install acryl-datahub.

Para ejecutar el script Python desde la línea de comandos y hacerlo como un script independiente, necesitarás realizar algunos cambios en el código. Aquí tienes una versión modificada del script que puedes ejecutar directamente desde la línea de comandos:

#!/usr/bin/env python from acryl_datahub.client import DataHubClient import argparse def main(datahub_host, access_token, urns_to_delete): # Crea una instancia del cliente de DataHub client = DataHubClient(datahub_host, access_token) # Recorre las URNs y elimina las entidades correspondientes for urn in urns_to_delete: try: client.delete_entity(urn) print(f"Entidad con URN '{urn}' eliminada exitosamente.") except Exception as e: print(f"Error al eliminar la entidad con URN '{urn}': {str(e)}") if __name__ == "__main__": parser = argparse.ArgumentParser(description='Elimina metadatos de entidades en DataHub.') parser.add_argument('--host', type=str, help='Host de DataHub', required=True) parser.add_argument('--token', type=str, help='Token de acceso', required=True) parser.add_argument('--urns', nargs='+', help='Lista de URNs de entidades a eliminar', required=True) args = parser.parse_args() main(args.host, args.token, args.urns)


Los cambios que se han realizado son los siguientes:

  1. Se ha agregado la línea #!/usr/bin/env python al principio del script. Esto le indica al sistema operativo cómo debe ejecutarse el archivo. Asegúrate de que la ruta al intérprete de Python sea correcta para tu entorno.

  2. Se ha envuelto el código principal dentro de una función llamada main(). Esto permitirá llamar a la función main() desde el bloque if __name__ == "__main__" al final del script.

  3. Se ha importado el módulo argparse para manejar los argumentos de línea de comandos. Se ha agregado un bloque que utiliza argparse para definir y analizar los argumentos de línea de comandos necesarios: --host para el host de DataHub, --token para el token de acceso y --urns para la lista de URNs de entidades a eliminar.

Ahora, para ejecutar el script desde la línea de comandos, puedes utilizar el siguiente comando:

python script.py --host https://example.datahub.acryl.io --token YOUR_ACCESS_TOKEN --urns "urn:acryl:dataset:123456789:entity:1" "urn:acryl:dataset:123456789:entity:2" "urn:acryl:dataset:123456789:entity:3"

Asegúrate de reemplazar script.py con el nombre del archivo donde hayas guardado el script y proporciona los valores correctos para --host, --token y --urns según tu entorno y las URNs que desees eliminar.

El script analizará los argumentos proporcionados y ejecutará la función main() con los valores correspondientes.

Un ejemplo planteado con un archivo .BAT sería el siguiente:

@echo off REM Lista de URNs a eliminar setlocal enabledelayedexpansion set "urns=urn1 urn2 urn3" REM Iterar sobre cada URN y ejecutar la sentencia de borrado for /f "delims=" %%u in ('echo %urns%') do ( set "current_urn=%%u" echo Ejecutando datahub delete !current_urn! --hard datahub delete !current_urn! --hard ) echo Borrado de URNs completado.


En este nuevo ejemplo, hemos modificado la lista de URNs para que cada una esté en una línea diferente. Esto se logra usando saltos de línea en el valor asignado a la variable "urns".

Luego, dentro del bucle for, utilizamos echo %urns% para obtener el contenido de la variable "urns". La opción /f en el bucle for nos permite iterar sobre cada línea de salida.

La línea set "current_urn=%%u" se utiliza para asignar el valor de cada URN a una nueva variable llamada "current_urn". El uso de !current_urn! con los signos de exclamación dobles !! nos permite expandir la variable dentro del bucle for con la sintaxis habilitada para la expansión retrasada.

Finalmente, dentro del bucle, ejecutamos la sentencia de borrado utilizando el comando "datahub delete" con la opción "--hard", pasando la URN actualmente procesada.

Asegúrate de tener el comando "datahub" instalado y configurado correctamente en tu entorno de Git Bash para que funcione. También asegúrate de tener los permisos necesarios para ejecutar el comando y ten cuidado al ejecutar el script, ya que el borrado será irreversible.

Otra versión para manejar el escapado de las URNs:

@echo off REM Ruta al archivo que contiene las URNs (cada una en una línea diferente) set "ruta_archivo=ruta/al/archivo.txt" REM Verificar si el archivo existe if not exist "%ruta_archivo%" ( echo El archivo de URNs no existe: %ruta_archivo% exit /b 1 ) REM Iterar sobre cada URN en el archivo y ejecutar la sentencia de borrado for /f "usebackq delims=" %%u in ("%ruta_archivo%") do ( set "current_urn=%%~u" echo Ejecutando datahub delete "!current_urn!" --hard datahub delete "!current_urn!" --hard ) echo Borrado de URNs completado.


0 comentarios:

Publicar un comentario

Gracias por participar en esta página.

 
Back to top!