Compartir vía


Tutorial: Análisis de dependencias funcionales en un modelo semántico

En este tutorial, creará un trabajo de un analista de Power BI que se almacena como modelos semánticos (conjuntos de datos de Power BI). Mediante el uso de SemPy (versión preliminar) en la experiencia de ciencia de datos de Synapse en Microsoft Fabric, se analizan las dependencias funcionales en columnas DataFrame. Este análisis le ayuda a detectar problemas sutiles de calidad de datos para obtener información más precisa.

En este tutorial, aprenderá a:

  • Aplique conocimientos de dominio para formular hipótesis sobre las dependencias funcionales en un modelo semántico.
  • Familiarícese con los componentes de la biblioteca de Python (SemPy) de Semantic Link que se integran con Power BI y ayudan a automatizar el análisis de calidad de los datos. Estos componentes incluyen:
    • FabricDataFrame: estructura similar a pandas mejorada con información semántica adicional
    • Funciones que extraen modelos semánticos de un área de trabajo de Fabric en el cuaderno
    • Funciones que evalúan hipótesis de dependencia funcional e identifican infracciones de relación en los modelos semánticos

Prerrequisitos

  1. Seleccione Áreas de trabajo en el panel de navegación para buscar y seleccionar el área de trabajo. Este área de trabajo pasa a ser tu área de trabajo actual.

  2. Descargue el archivo Customer Profitability Sample.pbix del repositorio fabric-samples de GitHub.

  3. En el área de trabajo, seleccione Importar>informe o informe> paginadoDesde este equipo para cargar el archivo Sample.pbix de rentabilidad del cliente en el área de trabajo.

Seguimiento en el cuaderno

El cuaderno powerbi_relationships_tutorial.ipynb acompaña a este tutorial.

Configuración del cuaderno

Configure un entorno de cuaderno con los módulos y los datos que necesita.

  1. Use %pip para instalar SemPy desde PyPI en el cuaderno.

    %pip install semantic-link
    
  2. Importe los módulos que necesita.

    import sempy.fabric as fabric
    from sempy.dependencies import plot_dependency_metadata
    

Carga y preprocesamiento de los datos

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.

  1. Cargue datos de Power BI en mediante FabricDataFrame la fabric.read_table función .

    dataset = "Customer Profitability Sample"
    customer = fabric.read_table(dataset, "Customer")
    customer.head()
    
  2. Cargue la State tabla en .FabricDataFrame

    state = fabric.read_table(dataset, "State")
    state.head()
    

    Aunque la salida es similar a una trama de datos de Pandas, este código inicializa una estructura de datos denominada que FabricDataFrame agrega operaciones sobre pandas.

  3. Compruebe el tipo de datos de customer.

    type(customer)
    

    La salida muestra que customer es sempy.fabric._dataframe._fabric_dataframe.FabricDataFrame.

  4. Combinar los customer objetos y stateDataFrame .

    customer_state_df = customer.merge(state, left_on="State", right_on="StateCode", how='left')
    customer_state_df.head()
    

Identificación de dependencias funcionales

Una dependencia funcional es una relación de uno a varios entre los valores de dos o más columnas de un DataFrame. Use estas relaciones para detectar automáticamente problemas de calidad de datos.

  1. Ejecute la función de find_dependencies SemPy en la combinación DataFrame para identificar las dependencias funcionales entre los valores de columna.

    dependencies = customer_state_df.find_dependencies()
    dependencies
    
  2. Visualice las dependencias mediante la función de plot_dependency_metadata SemPy.

    plot_dependency_metadata(dependencies)
    

    Captura de pantalla del gráfico de metadatos de dependencia.

    El gráfico de dependencias funcionales muestra que la Customer columna determina columnas como City, Postal Codey Name.

    El gráfico no muestra una dependencia funcional entre City y Postal Code, probablemente porque hay muchas infracciones en la relación entre las columnas. Use la función de plot_dependency_violations SemPy para visualizar las infracciones de dependencia entre columnas específicas.

Explorar los datos en busca de problemas de calidad

  1. Dibujar un gráfico con la función de visualización plot_dependency_violations de SemPy.

    customer_state_df.plot_dependency_violations('Postal Code', 'City')
    

    Captura de pantalla de un trazado que muestra las infracciones de dependencia.

    El gráfico de infracciones de dependencia muestra los valores de Postal Code en el lado izquierdo y los valores de City en el lado derecho. Un borde conecta un Postal Code en el lado izquierdo con un City en el lado derecho si hay una fila que contiene estos dos valores. Los bordes se anotan con el recuento de dichas filas. Por ejemplo, hay dos filas con código postal 20004, una con la ciudad "North Tower" y la otra con la ciudad "Washington".

    El trazado también muestra algunas infracciones y muchos valores vacíos.

  2. Confirme el número de valores vacíos para Postal Code:

    customer_state_df['Postal Code'].isna().sum()
    

    50 filas tienen NA para Postal Code.

  3. Quite filas con valores vacíos. A continuación, busque las dependencias mediante la función find_dependencies. Observe el parámetro adicional verbose=1 que ofrece una visión del funcionamiento interno de SemPy:

    customer_state_df2=customer_state_df.dropna()
    customer_state_df2.find_dependencies(verbose=1)
    

    La entropía condicional para Postal Code y City es 0,049. Este valor indica que hay infracciones de dependencia funcional. Antes de corregir las infracciones, aumente el umbral en la entropía condicional del valor predeterminado de 0.01 a 0.05, solo para ver las dependencias. Los umbrales inferiores dan lugar a menos dependencias (o una mayor selectividad).

  4. Aumente el umbral en la entropía condicional del valor predeterminado de 0.01 a 0.05:

    plot_dependency_metadata(customer_state_df2.find_dependencies(threshold=0.05))
    

    Captura de pantalla del gráfico de metadatos de dependencia con un umbral de entropía mayor.

    Si aplica conocimientos de dominio de qué entidad determina los valores de otras entidades, este gráfico de dependencias parece preciso.

  5. Explore más problemas de calidad de datos detectados. Por ejemplo, una flecha discontinua combina City y Region, lo que indica que la dependencia solo es aproximada. Esta relación aproximada podría implicar que hay una dependencia funcional parcial.

    customer_state_df.list_dependency_violations('City', 'Region')
    
  6. Eche un vistazo más detallado a cada uno de los casos en los que un valor Region no vacío provoca una infracción:

    customer_state_df[customer_state_df.City=='Downers Grove']
    

    El resultado muestra la ciudad de Downers Grove en Illinois y Nebraska. Sin embargo, Downers Grove es una ciudad en Illinois, no en Nebraska.

  7. Eche un vistazo a la ciudad de Fremont:

    customer_state_df[customer_state_df.City=='Fremont']
    

    Hay una ciudad llamada Fremont en California. Sin embargo, para Texas, el motor de búsqueda devuelve Premont, no Fremont.

  8. También es sospechoso ver violaciones de la dependencia entre Name y Country/Region, como indica la línea de puntos en el gráfico original de violaciones de dependencia (antes de eliminar las filas con valores vacíos).

    customer_state_df.list_dependency_violations('Name', 'Country/Region')
    

    Un cliente, SDI Design, aparece en dos regiones: Estados Unidos y Canadá. Este caso podría no ser una infracción semántica, simplemente poco común. Aún así, vale la pena echar un vistazo cercano:

  9. Eche un vistazo más detallado al cliente SDI Design:

    customer_state_df[customer_state_df.Name=='SDI Design']
    

    La inspección adicional muestra dos clientes diferentes de diferentes sectores con el mismo nombre.

El análisis exploratorio de datos y la limpieza de datos son iterativos. Lo que encuentra depende de sus preguntas y perspectivas. Semantic Link proporciona nuevas herramientas para obtener más información de los datos.

Consulte otros tutoriales para ver el vínculo semántico y SemPy: