Compartir vía


Extracción y cálculo de medidas de Power BI desde un cuaderno de Jupyter Notebook

En este tutorial se muestra cómo usar SemPy (versión preliminar) para calcular medidas en modelos semánticos de Power BI.

En este tutorial, aprenderá a:

  • Evaluar las medidas de Power BI mediante programación mediante la interfaz de Python de la biblioteca Semantic Link (SemPy)
  • Obtenga información sobre los componentes de SemPy que ayudan a puentear inteligencia artificial y BI:
    • FabricDataFrame: estructura similar a pandas mejorada con información semántica
    • Funciones que obtienen modelos semánticos, incluidos datos sin procesar, configuraciones y medidas

Requisitos previos

  • En el panel de navegación, seleccione Áreas de trabajo y, a continuación, seleccione el área de trabajo para establecerla como área de trabajo actual.

  • Descargue el modelo semántico Retail Analysis Sample PBIX.pbix y cárguelo en su espacio de trabajo.

Seguimiento en el cuaderno

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

Configuración del cuaderno

En esta sección, configurará un entorno de cuaderno.

  1. Instale SemPy desde PyPI mediante %pip en línea en el documento de trabajo.

    %pip install semantic-link-sempy
    
  2. Importe los módulos que usará más adelante.

    import sempy.fabric as fabric
    
  3. Conéctese al área de trabajo de Power BI y enumere los modelos semánticos del área de trabajo.

    fabric.list_datasets()
    
  4. Carga del modelo semántico. En este tutorial, usas el modelo semántico de ejemplo de análisis minorista.

    dataset = "Retail Analysis Sample"
    
    dataset = "Retail Analysis Sample PBIX"
    

Enumeración de medidas del área de trabajo

Use SemPy list_measures para enumerar medidas en un modelo semántico:

fabric.list_measures(dataset)

Evaluación de medidas

Use la función de evaluate_measure SemPy para evaluar medidas de diferentes maneras.

Evaluación de una medida sin procesar

Use la función de SemPy para calcular la medida preconfigurada denominada "Promedio de tamaño de evaluate_measure área de venta".

fabric.evaluate_measure(dataset, measure="Average Selling Area Size")

Evaluación de una medida con groupby_columns

Agrupe el resultado por columnas mediante el groupby_columns parámetro :

fabric.evaluate_measure(dataset, measure="Average Selling Area Size", groupby_columns=["Store[Chain]", "Store[DistrictName]"])

Este código agrupa por Store[Chain] y Store[DistrictName].

Evaluación de una medida con filtros

Use el parámetro para limitar los filters resultados a valores de columna específicos:

fabric.evaluate_measure(dataset, \
                        measure="Total Units Last Year", \
                        groupby_columns=["Store[Territory]"], \
                        filters={"Store[Territory]": ["PA", "TN", "VA"], "Store[Chain]": ["Lindseys"]})

En este ejemplo, Store es la tabla , Territory es la columna y PA es un valor permitido.

Evaluación de una medida en varias tablas

Agrupe por columnas en varias tablas del modelo semántico.

fabric.evaluate_measure(dataset, measure="Total Units Last Year", groupby_columns=["Store[Territory]", "Sales[ItemID]"])

Evaluación de varias medidas

La evaluate_measure función permite proporcionar varios identificadores de medida y devuelve los valores calculados en un único DataFrame:

fabric.evaluate_measure(dataset, measure=["Average Selling Area Size", "Total Stores"], groupby_columns=["Store[Chain]", "Store[DistrictName]"])

Uso del conector XMLA de Power BI

El cliente de modelo semántico predeterminado usa las API rest de Power BI. Si se produce un error en las consultas con este cliente, cambie al punto de conexión XMLA de Power BI estableciendo use_xmla=True. Los parámetros semPy son los mismos para los cálculos de medida con XMLA.

fabric.evaluate_measure(dataset, \
                        measure=["Average Selling Area Size", "Total Stores"], \
                        groupby_columns=["Store[Chain]", "Store[DistrictName]"], \
                        filters={"Store[Territory]": ["PA", "TN", "VA"], "Store[Chain]": ["Lindseys"]}, \
                        use_xmla=True)

Consulte otros tutoriales de enlace semántico y SemPy.