– En el artículo anterior explicaba los conceptos básicos de los Flujo de Tareas Transliticos.
En este artículo iniciaremos con la preparación del entorno de trabajo y daremos los primeros pasos de un ejercicio práctico que espero les sirva de ejemplo para implementarlo en otros proyectos. –
Para hacer uso de esta función el usuario deberá tener habilitadas las Bases de datos SQL en Microsoft Fabric (esta es una característica en versión Preliminar), si no sabe como hacerlo consulte aquí.
Una vez habilitado, deberá tener una base de datos SQL instalada y con datos disponibles en un área de trabajo de Fabric. En este instructivo Microsoft explica como poder crear una nueva base de datos en un workspace y como alimentarla con datos de prueba.
Una vez hemos configurado y tenemos el «ambiente» listo para nuestra prueba, podemos comenzar con el ejercicio de «Flujos de Tareas Translíticos» como le han llamado en la documentación a este proceso.
Este ejercicio lo voy a realizar sobre una tabla con datos ficticios de deuda de supuestos clientes, donde en este caso de uso el usuario debe cambiar el estado de la deuda de los diferentes clientes y el reporte debe actualizarse en sincronía con esos cambios.
En Power Bi Services: Estando en el área de trabajo donde tenemos nuestra BBDD damos click en «Nuevo Elemento»
Buscamos la opción de Funciones de Datos de Usuario, le asignas un nombre al archivo de tu función (después lo llamaras con ese nombre desde power bi) y le das click a crear.
En la ventana que se abre damos click en el botón que está en todo el centro de la pantalla para crear la nueva función
Ya has creado la nueva función, ahora da click en el botón que te resalto en la siguiente imagen y configura la conexión a la BBDD que tienes en el área de trabajo. es un proceso sencillo, solo tienes que buscar y seleccionar la BBDD a la que te deseas conectar desde Power Bi.
Es importante que revises con que Alias se ha creado la conexión porque lo necesitarás en el siguiente paso.
En este punto escribirás el código de tu función, para ello necesitaras un poco de python, pero si no lo controlas de seguro conoces una buena IA que te ayude o tendrás un buen amigo a quien preguntarle.
En mi caso mi función quedó algo así:
Importante: nota que en esta línea debe ir el alias de tu conexión SQL
@udf.connection(argName=»sqlDB»,alias=»<REPLACE_WITH _CONNECTION_ALIAS>»)
import fabric.functions as fn
udf = fn.UserDataFunctions()
@udf.connection(argName=»sqlDB»,alias=»»)
@udf.function()
def actualizar_estado_deuda(sqlDB: fn.FabricSqlConnection, idcliente: int, nuevoestado: str) -> str:
# Validar que el estado es uno de los tres permitidos
estados_validos = ["Vencida", "Saldada", "Sin Vencer"]
if nuevoestado not in estados_validos:
raise fn.UserThrownError("Estado inválido. Usa: Vencida, Saldada o Sin Vencer.", {"Estado ingresado": nuevoestado})
connection = sqlDB.connect()
cursor = connection.cursor()
# Actualizar el campo estado
update_query = """
UPDATE deuda_clientes
SET estado = ?
WHERE id_cliente = ?
"""
cursor.execute(update_query, (nuevoestado, idcliente))
connection.commit()
cursor.close()
connection.close()
return f"Estado de cliente {idcliente} actualizado a '{nuevoestado}'"
En este punto, busca el botón para publicar la función y si todo salió bien podrás testarla. Para hacerlo, solo mantén el cursor sobre el nombre de la función en el menú explorador de Functions y selecciona el icono ejecutar cuando aparezca.
Usa los parámetros que hayas establecido en tu función, en mi caso eran dos parámetros, cliente y estado de la deuda.
En el tercer artículo de esta serie conectaremos nuestra Base de datos SQL desde el catalogo de datos de OneLake y configuraremos el botón que hará la actualización para poder ver en acción la User Function en Fabric invocada desde un dashboard de Power Bi.
Rodrigo Lombana Reina