Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tutorial se muestra cómo usar un cuaderno de Jupyter Notebook para interactuar con Power BI y detectar relaciones entre tablas con 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 se integren con Power BI y automaticen el análisis de calidad de los datos. Estos componentes incluyen:
-
FabricDataFrame- una estructura similar a Pandas mejorada con información semántica - Funciones que extraen modelos semánticos de un área de trabajo de Fabric en el cuaderno
- Funciones que prueban dependencias funcionales e identifican infracciones de relación 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.
Cambie a Fabric mediante el conmutador de experiencia en el lado inferior izquierdo de la página principal.
Vaya a Áreas de trabajo en el panel de navegación y, a continuación, seleccione el área de trabajo para establecerla como área de trabajo actual.
Descargue el ejemplo de rentabilidad del cliente.pbix y el ejemplo de rentabilidad del cliente (auto).pbix modelos semánticos del repositorio de GitHub fabric-samples y, a continuación, cárguelos en el área de trabajo.
Seguimiento en el cuaderno
Use el cuaderno powerbi_relationships_tutorial.ipynb para continuar.
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
Configure un entorno de cuaderno con los módulos y los datos que necesita.
Instale el
semantic-linkpaquete desde PyPI mediante el%pipcomando insertado en el cuaderno.%pip install semantic-linkImporte los
sempymódulos que usará 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_violationsImporte la
pandasbiblioteca y establezca una opción de visualización para el formato de salida.import pandas as pd pd.set_option('display.max_colwidth', None)
## Explore semantic models
This tutorial uses the Customer Profitability Sample semantic model [_Customer Profitability Sample.pbix_](https://github.com/microsoft/fabric-samples/blob/main/docs-samples/data-science/datasets/Customer%20Profitability%20Sample.pbix). Learn about the semantic model in [Customer Profitability sample for Power BI](/power-bi/create-reports/sample-customer-profitability).
- Use SemPy's `list_datasets` function to explore semantic models in your current workspace:
```python
fabric.list_datasets()
Para el resto de este cuaderno, use dos versiones del modelo semántico de ejemplo de rentabilidad del cliente:
- Ejemplo de rentabilidad del cliente: el modelo semántico tal como se proporciona en los 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 Detecta automáticamente Power BI.
Extracción de relaciones predefinidas del modelo semántico de ejemplo
Cargue las relaciones predefinidas en el modelo semántico de ejemplo de rentabilidad del cliente mediante la función de
list_relationshipsSemPy. La función enumera las relaciones del modelo de objetos tabulares (TOM).dataset = "Customer Profitability Sample" relationships = fabric.list_relationships(dataset) relationshipsVisualice el
relationshipsDataFrame como un grafo mediante la función deplot_relationship_metadataSemPy.plot_relationship_metadata(relationships)En este gráfico se muestran las relaciones entre las tablas de este modelo semántico, tal como se define en Power BI por un experto en la materia.
Detección de relaciones adicionales
Si comienza con las relaciones que detecta automáticamente Power BI, tiene 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 pierde 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:
autodetectedLas filas 3 y 4 muestran relaciones incorrectas con la
Industrytabla. Quite estas filas.Descarte las relaciones identificadas incorrectamente.
# Remove rows 3 and 4 which point incorrectly to Industry[ID] autodetected = autodetected[~autodetected.index.isin([3, 4])]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 y
list_tablesderead_tableSemPy y, a continuación, busque relaciones entre tablas mediantefind_relationships. 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 detecta todas las relaciones.
Use el parámetro
excludepara 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 relaciones
En primer lugar, cargue los datos del modelo semántico de ejemplo de rentabilidad del cliente .
dataset = "Customer Profitability Sample" tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']} tables.keys()Compruebe que la clave principal y externa se superpongan con la
list_relationship_violationsfunción . Pase la salida de lalist_relationshipsfunción alist_relationship_violations.list_relationship_violations(tables, fabric.list_relationships(dataset))Los resultados revelan información útil. Por ejemplo, uno de los siete valores de no
Fact[Product Key]está presente enProduct[Product Key]y la clave que falta es50.El análisis exploratorio de datos y la limpieza de datos son iterativos. Lo que aprende depende de sus preguntas y de cómo explore los datos. El vínculo semántico agrega herramientas que le ayudan a hacer más con los datos.
Contenido relacionado
Explore otros tutoriales para el vínculo semántico y 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 de Synthea mediante el vínculo semántico
- Tutorial : Validación de datos mediante SemPy y Great Expectations (GX)