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, 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
Obtenga una suscripción para 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.
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.
Descargue el archivo Customer Profitability Sample.pbix del repositorio fabric-samples de GitHub.
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.
Para abrir el cuaderno complementario para este tutorial, siga las instrucciones de Preparación del sistema para tutoriales de ciencia de datos para importar el cuaderno al á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 lakehouse 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.
Use
%pippara instalar SemPy desde PyPI en el cuaderno.%pip install semantic-linkImporte 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.
Cargue datos de Power BI en mediante
FabricDataFramelafabric.read_tablefunción .dataset = "Customer Profitability Sample" customer = fabric.read_table(dataset, "Customer") customer.head()Cargue la
Statetabla en .FabricDataFramestate = 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
FabricDataFrameagrega operaciones sobre pandas.Compruebe el tipo de datos de
customer.type(customer)La salida muestra que
customeressempy.fabric._dataframe._fabric_dataframe.FabricDataFrame.Combinar los
customerobjetos ystateDataFrame.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.
Ejecute la función de
find_dependenciesSemPy en la combinaciónDataFramepara identificar las dependencias funcionales entre los valores de columna.dependencies = customer_state_df.find_dependencies() dependenciesVisualice las dependencias mediante la función de
plot_dependency_metadataSemPy.plot_dependency_metadata(dependencies)El gráfico de dependencias funcionales muestra que la
Customercolumna determina columnas comoCity,Postal CodeyName.El gráfico no muestra una dependencia funcional entre
CityyPostal Code, probablemente porque hay muchas infracciones en la relación entre las columnas. Use la función deplot_dependency_violationsSemPy para visualizar las infracciones de dependencia entre columnas específicas.
Explorar los datos en busca de problemas de calidad
Dibujar un gráfico con la función de visualización
plot_dependency_violationsde SemPy.customer_state_df.plot_dependency_violations('Postal Code', 'City')
El gráfico de infracciones de dependencia muestra los valores de
Postal Codeen el lado izquierdo y los valores deCityen el lado derecho. Un borde conecta unPostal Codeen el lado izquierdo con unCityen 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.
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.Quite filas con valores vacíos. A continuación, busque las dependencias mediante la función
find_dependencies. Observe el parámetro adicionalverbose=1que 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 CodeyCityes 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 de0.01a0.05, solo para ver las dependencias. Los umbrales inferiores dan lugar a menos dependencias (o una mayor selectividad).Aumente el umbral en la entropía condicional del valor predeterminado de
0.01a0.05:plot_dependency_metadata(customer_state_df2.find_dependencies(threshold=0.05))Si aplica conocimientos de dominio de qué entidad determina los valores de otras entidades, este gráfico de dependencias parece preciso.
Explore más problemas de calidad de datos detectados. Por ejemplo, una flecha discontinua combina
CityyRegion, 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')Eche un vistazo más detallado a cada uno de los casos en los que un valor
Regionno 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.
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.
También es sospechoso ver violaciones de la dependencia entre
NameyCountry/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:
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.
Contenido relacionado
Consulte otros tutoriales para ver el vínculo semántico y SemPy:
- Tutorial : Limpieza de datos con dependencias funcionales
- Tutorial : Extracción y cálculo de medidas de Power BI desde un cuaderno de Jupyter
- Tutorial: Detección de relaciones en un modelo semántico mediante el vínculo semántico
- Tutorial: Detección de relaciones en el conjunto de datos de Synthea mediante el vínculo semántico
- Tutorial de : Validación de datos usando SemPy y Great Expectations (GX)