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:
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.Se ha envuelto el código principal dentro de una función llamada
main()
. Esto permitirá llamar a la funciónmain()
desde el bloqueif __name__ == "__main__"
al final del script.Se ha importado el módulo
argparse
para manejar los argumentos de línea de comandos. Se ha agregado un bloque que utilizaargparse
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.