Tutorial: Detección de relaciones en un modelo semántico mediante el vínculo semántico
En este tutorial se muestra cómo interactuar con Power BI desde un cuaderno de Jupyter Notebook y detectar relaciones entre tablas con la ayuda de la biblioteca SemPy.
En este tutorial, aprenderá a:
- Detectar relaciones en un modelo semántico (conjunto de datos de Power BI), mediante la biblioteca de Python del vínculo semántico (SemPy).
- Use componentes de SemPy que admitan la integración con Power BI y ayuden a automatizar el análisis de calidad de los datos. Estos componentes incluyen:
- FabricDataFrame: una estructura similar a Pandas mejorada con información semántica adicional.
- Funciones para extraer modelos semánticos de un área de trabajo de Fabric en el cuaderno.
- Funciones que automatizan la evaluación de hipótesis sobre dependencias funcionales y que identifican infracciones de relaciones en los modelos semánticos.
Prerrequisitos
Obtenga una suscripción a Microsoft Fabric . También puede registrarse para obtener una evaluación gratuita de Microsoft Fabric.
Inicie sesión en Microsoft Fabric.
Use el conmutador de experiencia en la parte inferior izquierda de la página principal para cambiar a Fabric.
Seleccione Áreas de trabajo en el panel de navegación izquierdo para buscar y seleccionar el área de trabajo. Este área de trabajo se convierte en tu área de trabajo actual.
Descargue los modelos semánticos Customer Profitability Sample.pbix y Customer Profitability Sample (auto).pbix del repositorio fabric-samples GitHub y cárguelos en su área de trabajo.
Seguimiento en el cuaderno
El cuaderno powerbi_relationships_tutorial.ipynb acompaña a este tutorial.
Para abrir el cuaderno complementario de este tutorial, siga las instrucciones de Preparación del sistema para los tutoriales de ciencia de datos a fin de importar el cuaderno a su área de trabajo.
Si prefiere copiar y pegar el código de esta página, puede crear un cuaderno nuevo.
Asegúrese de adjuntar una instancia de almacén de lago de datos al cuaderno antes de empezar a ejecutar código.
Configuración del cuaderno
En esta sección, configurará un entorno de cuaderno con los módulos y datos necesarios.
Instale
SemPy
desde PyPI mediante la funcionalidad de instalación en línea%pip
en el cuaderno:%pip install semantic-link
Realice las importaciones necesarias de los módulos SemPy que necesitará más adelante:
import sempy.fabric as fabric from sempy.relationships import plot_relationship_metadata from sempy.relationships import find_relationships from sempy.fabric import list_relationship_violations
Importe Pandas para aplicar una opción de configuración que ayude con el formato de salida:
import pandas as pd pd.set_option('display.max_colwidth', None)
Exploración de modelos semánticos
En este tutorial se usa un modelo semántico de ejemplo estándar Customer Profitability Sample.pbix. Para obtener una descripción del modelo semántico, consulte ejemplo de rentabilidad del cliente para Power BI.
Use la función
list_datasets
de SemPy para explorar modelos semánticos en el área de trabajo actual:fabric.list_datasets()
En el resto de este cuaderno se usan dos versiones del modelo semántico de Customer Profitability Sample:
- ejemplo de rentabilidad del cliente: el modelo semántico tal como procede de ejemplos de Power BI con relaciones de tabla predefinidas
- ejemplo de rentabilidad del cliente (automático): los mismos datos, pero las relaciones se limitan a las que Power BI detectaría automáticamente.
Extracción de un modelo semántico de ejemplo con su modelo semántico predefinido
Cargue las relaciones predefinidas y almacenadas dentro del modelo semántico del Ejemplo de Rentabilidad del Cliente , usando la función de SemPy
list_relationships
. Esta función se muestra en el modelo de objetos tabulares:dataset = "Customer Profitability Sample" relationships = fabric.list_relationships(dataset) relationships
Visualice el
relationships
DataFrame como gráfico mediante la funciónplot_relationship_metadata
de SemPy:plot_relationship_metadata(relationships)
Este gráfico muestra la "verdad básica" para las relaciones entre las tablas de este modelo semántico, ya que refleja cómo se definieron en Power BI por un experto en la materia.
Descubrimiento de relaciones complementarias
Si comenzó con relaciones que Power BI detectó automáticamente, tendría un conjunto más pequeño.
Visualice las relaciones que Power BI detectó automáticamente en el modelo semántico:
dataset = "Customer Profitability Sample (auto)" autodetected = fabric.list_relationships(dataset) plot_relationship_metadata(autodetected)
La detección automática de Power BI pasó por alto muchas relaciones. Además, dos de las relaciones detectadas automáticamente son semánticamente incorrectas:
Executive[ID]
->Industry[ID]
BU[Executive_id]
->Industry[ID]
Imprima las relaciones como una tabla:
autodetected
Las relaciones incorrectas con la tabla
Industry
aparecen en filas con el índice 3 y 4. Use esta información para quitar estas filas.Descarte las relaciones identificadas incorrectamente.
autodetected.drop(index=[3,4], inplace=True) autodetected
Ahora tiene relaciones correctas, pero incompletas.
Visualice estas relaciones incompletas mediante
plot_relationship_metadata
:plot_relationship_metadata(autodetected)
Cargue todas las tablas del modelo semántico mediante las funciones
list_tables
yread_table
de SemPy:tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']} tables.keys()
Busque relaciones entre tablas, use
find_relationships
y revise la salida del registro para obtener información sobre cómo funciona esta función:suggested_relationships_all = find_relationships( tables, name_similarity_threshold=0.7, coverage_threshold=0.7, verbose=2 )
Visualizar las relaciones recién detectadas:
plot_relationship_metadata(suggested_relationships_all)
SemPy pudo detectar todas las relaciones.
Use el parámetro
exclude
para limitar la búsqueda a relaciones adicionales que no se han identificado anteriormente:additional_relationships = find_relationships( tables, exclude=autodetected, name_similarity_threshold=0.7, coverage_threshold=0.7 ) additional_relationships
Validar las relaciones
En primer lugar, cargue los datos del modelo semántico Customer Profitability Sample:
dataset = "Customer Profitability Sample" tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']} tables.keys()
Compruebe si hay superposición de valores de clave principal y externa mediante la función
list_relationship_violations
. Proporcione la salida de la funciónlist_relationships
como entrada paralist_relationship_violations
:list_relationship_violations(tables, fabric.list_relationships(dataset))
Las violaciones en las relaciones proporcionan información interesante. Por ejemplo, uno de los siete valores de
Fact[Product Key]
no está presente enProduct[Product Key]
y esta clave que falta es50
.
El análisis de datos exploratorios es un proceso emocionante, y lo mismo ocurre con la limpieza de datos. Siempre hay algo que los datos ocultan, dependiendo de cómo lo mires, de lo que quieras preguntar, etc. El vínculo semántico proporciona nuevas herramientas que puede usar para lograr más con los datos.
Contenido relacionado
Consulte otros tutoriales para el vínculo semántico/SemPy:
- Tutorial: Limpieza de datos con dependencias funcionales
- Tutorial: Análisis de dependencias funcionales en un modelo semántico de ejemplo
- Tutorial: Extracción y cálculo de medidas de Power BI de un cuaderno de Jupyter
- Tutorial: Detección de relaciones en el conjunto de datos Synthea, mediante un vínculo semántico
- Tutorial : Validación de datos mediante SemPy y Great Expectations (GX)