Tumgik
#fabric notebooks
ibarrau · 2 months
Text
[Fabric] Leer PowerBi data con Notebooks - Semantic Link
El nombre del artículo puede sonar extraño puesto que va en contra del flujo de datos que muchos arquitectos pueden pensar para el desarrollo de soluciones. Sin embargo, las puertas a nuevos modos de conectividad entre herramientas y conjuntos de datos pueden ayudarnos a encontrar nuevos modos que fortalezcan los análisis de datos.
En este post vamos a mostrar dos sencillos modos que tenemos para leer datos de un Power Bi Semantic Model desde un Fabric Notebook con Python y SQL.
¿Qué son los Semantic Links? (vínculo semántico)
Como nos gusta hacer aquí en LaDataWeb, comencemos con un poco de teoría de la fuente directa.
Definición Microsoft: Vínculo semántico es una característica que permite establecer una conexión entre modelos semánticos y Ciencia de datos de Synapse en Microsoft Fabric. El uso del vínculo semántico solo se admite en Microsoft Fabric.
Dicho en criollo, nos facilita la conectividad de datos para simplificar el acceso a información. Si bién Microsoft lo enfoca como una herramienta para Científicos de datos, no veo porque no puede ser usada por cualquier perfil que tenga en mente la resolución de un problema leyendo datos limpios de un modelo semántico.
Tumblr media
El límite será nuestra creatividad para resolver problemas que se nos presenten para responder o construir entorno a la lectura de estos modelos con notebooks que podrían luego volver a almacenarse en Onelake con un nuevo procesamiento enfocado en la solución.
Semantic Links ofrecen conectividad de datos con el ecosistema de Pandas de Python a través de la biblioteca de Python SemPy. SemPy proporciona funcionalidades que incluyen la recuperación de datos de tablas , cálculo de medidas y ejecución de consultas DAX y metadatos.
Para usar la librería primero necesitamos instalarla:
%pip install semantic-link
Lo primero que podríamos hacer es ver los modelos disponibles:
import sempy.fabric as fabric df_datasets = fabric.list_datasets()
Entrando en más detalle, también podemos listar las tablas de un modelo:
df_tables = fabric.list_tables("Nombre Modelo Semantico", include_columns=True)
Cuando ya estemos seguros de lo que necesitamos, podemos leer una tabla puntual:
df_table = fabric.read_table("Nombre Modelo Semantico", "Nombre Tabla")
Esto genera un FabricDataFrame con el cual podemos trabajar libremente.
Nota: FabricDataFrame es la estructura de datos principal de vínculo semántico. Realiza subclases de DataFrame de Pandas y agrega metadatos, como información semántica y linaje
Existen varias funciones que podemos investigar usando la librería. Una de las favoritas es la que nos permite entender las relaciones entre tablas. Podemos obtenerlas y luego usar otro apartado de la librería para plotearlo:
from sempy.relationships import plot_relationship_metadata relationships = fabric.list_relationships("Nombre Modelo Semantico") plot_relationship_metadata(relationships)
Un ejemplo de la respuesta:
Tumblr media
Conector Nativo Semantic Link Spark
Adicional a la librería de Python para trabajar con Pandas, la característica nos trae un conector nativo para usar con Spark. El mismo permite a los usuarios de Spark acceder a las tablas y medidas de Power BI. El conector es independiente del lenguaje y admite PySpark, Spark SQL, R y Scala. Veamos lo simple que es usarlo:
spark.conf.set("spark.sql.catalog.pbi", "com.microsoft.azure.synapse.ml.powerbi.PowerBICatalog")
Basta con especificar esa línea para pronto nutrirnos de clásico SQL. Listamos tablas de un modelo:
%%sql SHOW TABLES FROM pbi.`Nombre Modelo Semantico`
Consulta a una tabla puntual:
%%sql SELECT * FROM pbi.`Nombre Modelo Semantico`.NombreTabla
Así de simple podemos ejecutar SparkSQL para consultar el modelo. En este caso es importante la participación del caracter " ` " comilla invertida que nos ayuda a leer espacios y otros caracteres.
Exploración con DAX
Como un tercer modo de lectura de datos incorporaron la lectura basada en DAX. Esta puede ayudarnos de distintas maneras, por ejemplo guardando en nuestro FabricDataFrame el resultado de una consulta:
df_dax = fabric.evaluate_dax( "Nombre Modelo Semantico", """ EVALUATE SUMMARIZECOLUMNS( 'State'[Region], 'Calendar'[Year], 'Calendar'[Month], "Total Revenue" , CALCULATE([Total Revenue] ) ) """ )
Otra manera es utilizando DAX puramente para consultar al igual que lo haríamos con SQL. Para ello, Fabric incorporó una nueva y poderosa etiqueta que lo facilita. Delimitación de celdas tipo "%%dax":
%%dax "Nombre Modelo Semantico" -w "Area de Trabajo" EVALUATE SUMMARIZECOLUMNS( 'State'[Region], 'Calendar'[Year], 'Calendar'[Month], "Total Revenue" , CALCULATE([Total Revenue] ) )
Hasta aquí llegamos con esos tres modos de leer datos de un Power Bi Semantic Model utilizando Fabric Notebooks. Espero que esto les revuelva la cabeza para redescubrir soluciones a problemas con un nuevo enfoque.
0 notes
artiwannasave · 2 years
Text
Tumblr media Tumblr media Tumblr media Tumblr media
Candace Hicks
31K notes · View notes
haerdoepfu · 7 months
Text
Tumblr media
Finished my first attempt at cloth binding
I made some notebooks for my player, and since everyone knows that a book that starts with a map is bound to be a good book, I used a map of my D&D world for one of the endpapers
28 notes · View notes
Text
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
Stanford Gleeful for @anthropomimus !
💙 💙 💙
📔 📔 📔
❄️ ❄️ ❄️
Edit is by @sherpagutz !
56 notes · View notes
right-agent · 6 months
Note
stares at you with my huge haunted sopping wet eyes………. spare solary content…? rattles tin can of yuri
you got it boss
Tumblr media Tumblr media Tumblr media Tumblr media
16 notes · View notes
bbbbbbbbbballgag · 5 months
Text
Tumblr media
terra sketch
7 notes · View notes
wyldblunt · 1 year
Text
one of these days i am going to snap and make a 3D model, either physical or digital, of glyn's stupid head so i can draw him more easily from other angles
"you have that already it's called the game. the character in the game. rotate the camera around him in th-" NICE TRY but i disagree with his hair as it actually exists in there. i'm taking matters into my own hands. also i am too lazy to boot up every time i want to take a new reference
33 notes · View notes
nerosdayinanime · 10 months
Text
Tumblr media
last light Sabito</3
14 notes · View notes
maxaroniiiii · 3 months
Text
bedroom clean. now for the fun part (re organizing everything i own)
2 notes · View notes
Text
Sewing is so fun! It’s so relaxing! Using a sewing machine is fun and nice and I enjoy it. UNFORTUNATELY the main part of making clothes isn’t SEWING it’s PATTERNING which is EVIL AND CAN GO DIE
3 hours of math just so I can cut shit out for the MOCK-UP so I can cut it out A THIRD TIME
2 notes · View notes
ibarrau · 7 months
Text
[Fabric] Protegé credenciales en Notebooks con Azure KeyVault
Ciertamente, cuando usamos notebooks, no todo es transformación y limpieza del contenido de nuestro lakehouse. En distintas oportunidades se nos presenta la opción de utilizarlos para integrar datos. Los Notebooks nos pueden ayudar a conectarnos a APIs en nube u otros entornos cloud directamente usando código.
Para que esta opción sea viable, necesitamos evitar exponer las credenciales o claves del origen de datos usadas en el código. Sino imaginen que cualquier persona con acceso al código (ya sea en Fabric o en el repositorio), podría obtener una key de acceso a una API. Para evitar esto, vamos a utilizar un servicio de Azure que ya existe hace tiempo, Azure KeyVaults.
¿Qué es el servicio de Azure Key Vaults?
En palabras Microsoft "Azure Key Vault es un servicio en la nube para el almacenamiento de los secretos y el acceso a estos de forma segura. Un secreto es todo aquello cuyo acceso desea controlar de forma estricta, como las claves API, las contraseñas, los certificados o las claves criptográficas."
Si bien el servicio varias operaciones, nosotros nos quedaremos con la idea que nos permite ingresar una clave o contraseña a encapsular. Solo usuarios con permiso de lectura de claves al servicio podrá utilizar el encapsulado. De ese modo garantizamos que únicamente usuarios aprobados para usarlo, lo usen.
Veamos como crear este secreto antes de usarlo en un Fabric Notebook.
La creación del servicio es bastante simple, basta seleccionar suscripción + grupo de recursos, nombre, region y plan:
Tumblr media
Como mencioné antes, el servicio cuenta con muchas más cosas de las que usaremos nosotros. Ahora nos vamos a concentrar en "Secretos" que es lo que nos interesa.
Tumblr media
Aqui por ejemplo ya contamos con tres secretos que usaremos para conectar a la PowerBi Rest API. Guardamos secreto para el tenantid, appid y secretvalue de nuestra app registrada en Azure.
Veamos como generar uno nuevo. Es tan simple como darle un nombre y delimitar lo que queremos encapsular. También podemos delimitarlo como algo temporal:
Tumblr media
De ese modo podemos crear un nuevo secreto para nuestro almacén de claves. ¿Qué sigue? permitir la lectura a quien vaya a utilizarlo.
Los recursos de azure se manejan con permisos RBAC (role-based access control). Éstos los encontramos en el "Access Control (IAM)". Podemos abrir nuestro menú de permisos y agregar el que lleva el nombre de "Key Vault Secrets User". La cuenta de EntraID con ese permiso, podrá llamar por código a nuestro secreto almacenado aquí.
Tumblr media
Este proceso es muy importante. Imaginen que con esto podríamos dar permisos a un desarrollador para construir un proceso sin saber nunca las credenciales de origen.
¿Cómo llamarlo desde Fabric?
Para utilizar este servicio desde Fabric Notebook usando python, vamos a nutrirnos de la librería de Microsoft que tiene muchas facilidades de interacción. Pueden leer más detalles aqui: https://learn.microsoft.com/en-us/fabric/data-engineering/microsoft-spark-utilities
Dentro de nuestro notebook vamos a comenzar importando SimplePBI para conectarme a la Power Bi Rest API. Luego importaremos las librerías necesarias. El foco está en nuestra tercera celda. Aqui podremos apreciar como llamar el secreto almacenado recientemente:
Tumblr media
Utilizamos el método getSecret que necesita dos parámetros. El primero es "Vault URI" que podemos encontrarlo en el Overview de nuestro recurso en el portal de Azure. El segundo es el nombre que le dimos a nuestro secreto.
mssparkutils.credentials.getSecret('https://casa.vault.azure.net/','TenantId')
De ese modo almacenamos en variables nuestro resultado y podemos continuar la autenticación de la API en las siguientes filas que crea un token y pide ver el top 5 de workspaces. Recordemos que aquí buscamos seguridad, no solo de exposición de contraseña en código sino de visualización del contenido del secreto. Si el desarrollador intenta leer la variable se encontrará con una limitante:
Tumblr media
NOTA: ésta tercera celda pidiendo el secreto solo puede ser ejecutada por una cuenta logueada en Fabric con permisos "Key Vault Secrets User" en nuestro Key Vault. Sino fallará por prohibición de acceso al secreto.
Espero que esto les sea de utilidad para poner automatizar flujos de manera más segura usando Fabric Notebooks.
0 notes
cottonkhaleesi · 2 years
Text
Tumblr media Tumblr media Tumblr media Tumblr media
I’ve made books!!! Five A5 notebooks out of all my handmade paper, some fabric scraps, card from my stash, small ribbons from things like Christmas crackers etc, and a bit of wallpaper sample as the lining paper.
17 notes · View notes
patiak · 1 year
Text
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
3 notes · View notes
rollblast · 2 years
Photo
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
Linhardt von Hevring
🍀🍀🍀| 🍀🍀 |🍀🍀🍀
7 notes · View notes
mothbaaalls · 6 days
Text
i got an awesome notebook for FREE today and i am WINNING
1 note · View note
elinda96 · 9 days
Text
Tumblr media Tumblr media Tumblr media
1 note · View note