Compartir a través de


Exploración y validación de relaciones en modelos semánticos y elementos DataFrame

En este artículo, aprenderá a usar las funciones de vínculo semántico de SemPy para detectar y validar relaciones en los modelos semánticos de Power BI y los DataFrames de Pandas.

En la ciencia de datos y el aprendizaje automático es importante comprender la estructura y las relaciones de los datos. Power BI es una herramienta eficaz que permite modelar y visualizar estas estructuras y relaciones. Para más información o crear modelos de aprendizaje automático, puede profundizar más mediante las funciones de vínculo semántico en los módulos de la biblioteca SemPy.

Los científicos de datos y los analistas de negocios pueden usar funciones de SemPy para enumerar, visualizar y validar relaciones en modelos semánticos de Power BI, o bien buscar y validar relaciones en elementos DataFrame de Pandas.

Requisitos previos

  • Cree un nuevo cuaderno, para copiar/pegar código en las celdas.

  • Para Spark 3.4 y versiones posteriores, el vínculo semántico está disponible en el entorno de ejecución predeterminado al usar Fabric y no es necesario instalarlo. Para Spark 3.3 y versiones anteriores, o para actualizar a la versión más reciente del vínculo semántico, ejecute el siguiente comando:

    %pip install -U semantic-link
    
  • Adición de un almacén de lago de datos al cuaderno.

Enumeración de relaciones en modelos semánticos

La función list_relationships del módulo sempy.fabric devuelve una lista de todas las relaciones que se encuentran en un modelo semántico de Power BI. La lista le ayuda a comprender la estructura de los datos y cómo se conectan las distintas tablas y columnas.

Esta función funciona mediante el vínculo semántico para proporcionar elementos DataFrame anotados. Los elementos DataFrame incluyen los metadatos necesarios para comprender las relaciones dentro del modelo semántico. Los elementos DataFrame anotados facilitan el análisis de la estructura del modelo semántico y su uso en modelos de aprendizaje automático u otras tareas de análisis de datos.

Para usar la función list_relationships, primero debe importar el módulo sempy.fabric. Después, puede llamar a la función con el nombre o UUID del modelo semántico de Power BI, como se muestra en el ejemplo siguiente:

import sempy.fabric as fabric

fabric.list_relationships("my_dataset")

En el código anterior se llama a la función list_relationships con un modelo semántico de Power BI denominado my_dataset. La función devuelve un DataFrame de Pandas con una fila por relación, lo que le permite explorar y analizar fácilmente las relaciones dentro del modelo semántico.

Nota:

El cuaderno, el modelo semántico de conjunto de datos de Power BI y el almacén de lago se pueden ubicar en la misma área de trabajo o en áreas de trabajo diferentes. De forma predeterminada, SemPy intenta acceder al modelo semántico desde:

  • El área de trabajo del almacén de lago, si ha asociado un almacén de lago al cuaderno.
  • El área de trabajo del cuaderno, si no hay ningún almacén de lago asociado.

Si el modelo semántico no se encuentra en ninguna de estas áreas de trabajo, debe especificar el área de trabajo del modelo semántico al llamar a un método de SemPy.

Visualización de relaciones en los modelos semánticos

La función plot_relationship_metadata ayuda a visualizar las relaciones en un modelo semántico para que pueda comprender mejor la estructura del modelo semántico. Esta función crea un gráfico en el que se muestran las conexiones entre tablas y columnas. El gráfico facilita la comprensión de la estructura del modelo semántico y de cómo están relacionados los distintos elementos.

En el ejemplo siguiente se muestra cómo usar la función plot_relationship_metadata:

import sempy.fabric as fabric
from sempy.relationships import plot_relationship_metadata

relationships = fabric.list_relationships("my_dataset")
plot_relationship_metadata(relationships)

En el código anterior, la función list_relationships recupera las relaciones del modelo semántico my_dataset y la función plot_relationship_metadata crea un grafo para visualizar estas relaciones.

Puede personalizar el grafo si especifica las columnas que se van a incluir, cómo controlar las claves que faltan y si proporciona más atributos graphviz.

Validación de relaciones en modelos semánticos

Ahora que tiene una mejor comprensión de las relaciones del modelo semántico, puede usar la función list_relationship_violations para validar estas relaciones e identificar posibles problemas o incoherencias. La función list_relationship_violations le ayuda a validar el contenido de las tablas para asegurarse de que coinciden con las relaciones definidas en el modelo semántico.

Con esta función, puede identificar incoherencias con la multiplicidad de la relación especificada y solucionar los problemas antes de que afecten al análisis de datos o a los modelos de aprendizaje automático.

Para usar la función list_relationship_violations, primero deberá importar el módulo sempy.fabric y leer las tablas del modelo semántico. Después, puede llamar a la función con un diccionario que asigne nombres de tabla a elementos DataFrame con contenido de tabla.

En el ejemplo de código siguiente se muestra cómo enumerar las infracciones de relación:

import sempy.fabric as fabric

tables = {
    "Sales": fabric.read_table("my_dataset", "Sales"),
    "Products": fabric.read_table("my_dataset", "Products"),
    "Customers": fabric.read_table("my_dataset", "Customers"),
}

fabric.list_relationship_violations(tables)

En el código anterior, se llama a la función list_relationship_violations con un diccionario que contiene las tablas Sales, Products y Customers del modelo semántico my_dataset. Puede personalizar la función si establece un umbral de cobertura, especifica cómo controlar las claves que faltan y define el número de claves que faltan que se notifican.

La función devuelve un DataFrame de Pandas con una fila por infracción de relación, lo que le permite identificar y solucionar fácilmente los problemas del modelo semántico. Mediante el uso de la función list_relationship_violations, puede asegurarse de que el modelo semántico sea coherente y preciso, lo que le permite crear modelos de aprendizaje automático más confiables y obtener información más detallada sobre los datos.

Búsqueda de relaciones en DataFrames de Pandas

Aunque las funciones de list_relationships, plot_relationships_df y list_relationship_violations del módulo de Fabric son herramientas eficaces para explorar las relaciones dentro de los modelos semánticos, es posible que también tenga que detectar relaciones de otros orígenes de datos importadas como elementos DataFrame de Pandas.

Aquí es donde entra en juego la función find_relationships del módulo sempy.relationship.

La función find_relationships del módulo sempy.relationships ayuda a los científicos de datos y a los analistas de negocios a detectar posibles relaciones dentro de una lista de elementos DataFrame de Pandas. Con esta función, puede identificar posibles conexiones entre tablas y columnas, lo que le permite comprender mejor la estructura de los datos y cómo están relacionados los distintos elementos.

En el ejemplo de código siguiente se muestra cómo buscar relaciones en elementos DataFrame de Pandas:

from sempy.relationships import find_relationships

tables = [df_sales, df_products, df_customers]

find_relationships(tables)

En el código anterior, se llama a la función find_relationships con una lista de tres elementos DataFrame de Pandas: df_sales, df_products y df_customers. La función devuelve un DataFrame de Pandas con una fila por relación potencial, lo que le permite explorar y analizar fácilmente las relaciones dentro de los datos.

Puede personalizar la función si especifica un umbral de cobertura, un umbral de similitud de nombres, una lista de relaciones que se van a excluir y si se deben incluir relaciones de varios a varios.

Validación de relaciones en DataFrames de Pandas

Después de detectar posibles relaciones dentro de los DataFrames de Pandas, mediante la función find_relationships, puede usar la función list_relationship_violations para validar estas relaciones e identificar posibles problemas o incoherencias.

La función list_relationship_violations valida el contenido de las tablas para asegurarse de que coinciden con las relaciones detectadas. Con esta función, puede identificar incoherencias con la multiplicidad de la relación especificada y solucionar los problemas antes de que afecten al análisis de datos o a los modelos de aprendizaje automático.

En el ejemplo de código siguiente se muestra cómo buscar infracciones de relaciones en elementos DataFrame de Pandas:

from sempy.relationships import find_relationships, list_relationship_violations

tables = [df_sales, df_products, df_customers]
relationships = find_relationships(tables)

list_relationship_violations(tables, relationships)

En el código anterior, se llama a la función list_relationship_violations con una lista de tres elementos DataFrame de Pandas (df_sales, df_products y df_customers), más las relaciones de DataFrame obtenidas de la función find_relationships. La función list_relationship_violations devuelve un DataFrame de Pandas con una fila por infracción de relación, lo que le permite identificar y solucionar fácilmente los problemas de los datos.

Puede personalizar la función si establece un umbral de cobertura, especifica cómo controlar las claves que faltan y define el número de claves que faltan que se notifican.

Mediante el uso de la función list_relationship_violations con DataFrames de Pandas, puede asegurarse de que los datos son coherentes y precisos, lo que le permite crear modelos de aprendizaje automático más confiables y obtener información más detallada sobre los datos.