Compartilhar via


Tutorial: Extrair e calcular medidas do Power BI de um notebook do Jupyter

Este tutorial ilustra como usar o SemPy (versão prévia) para calcular medidas em modelos semânticos (conjuntos de dados do Power BI).

Neste tutorial, você aprenderá a:

  • Avalie as medidas do Power BI programaticamente por meio de uma interface Python da biblioteca Python de Semantic Link (SemPy).
  • Familiarize-se com os componentes do SemPy que ajudam a preencher a lacuna entre IA e BI. Esses componentes incluem:
    • FabricDataFrame - uma estrutura semelhante a pandas aprimorada com informações semânticas adicionais.
    • Funções úteis que permitem que você busque modelos semânticos, incluindo dados brutos, configurações e medidas.

Pré-requisitos

  • Selecione Workspaces no painel de navegação esquerdo para localizar e selecionar seu workspace. Esse workspace se torna seu workspace atual.

  • Faça o download do modelo semântico Retail Analysis Sample PBIX.pbix e carregue-o em seu espaço de trabalho.

Acompanhar no notebook

O notebook powerbi_measures_tutorial.ipynb acompanha este tutorial.

Para abrir o notebook que acompanha este tutorial, siga as instruções em Preparar seu sistema para tutoriais de ciência de dados para importar os notebooks para seu workspace.

Se preferir copiar e colar o código a partir dessa página, você poderá criar um novo notebook.

Certifique-se de anexar um lakehouse ao notebook antes de começar a executar o código.

Configurar o notebook

Nesta seção, você configura um ambiente de notebook com os módulos e dados necessários.

  1. Instale SemPy por meio do PyPI usando a funcionalidade de instalação em linha %pip dentro do notebook:

    %pip install semantic-link
    
  2. Realize as importações necessárias de módulos que você precisará mais tarde:

    import sempy.fabric as fabric
    
  3. Você pode se conectar ao espaço de trabalho do Power BI. Liste os modelos semânticos no workspace:

    fabric.list_datasets()
    
  4. Carregue o modelo semântico. Neste tutorial, você usa o modelo semântico Retail Analysis Sample PBIX:

    dataset = "Retail Analysis Sample PBIX"
    

Listar medidas do espaço de trabalho

Listar medidas no modelo semântico, usando a função list_measures do SemPy da seguinte maneira:

fabric.list_measures(dataset)

Avaliar medidas

Nesta seção, você avalia as medidas de várias maneiras, usando a função evaluate_measure do SemPy.

Avaliar uma medida bruta

No código a seguir, use a função evaluate_measure do SemPy para calcular uma medida pré-configurada chamada "Average Selling Area Size". Você pode ver a fórmula subjacente para essa medida na saída da célula anterior.

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

Avaliar uma medida com groupby_columns

Você pode agrupar a saída da medida através de determinadas colunas fornecendo o parâmetro extra groupby_columns:

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

No código anterior, você fez agrupamento através das colunas Chain e DistrictName da tabela Store no modelo semântico.

Avaliar uma medida com filtros

Você também pode usar o parâmetro filters para especificar valores específicos que o resultado pode conter para colunas específicas:

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

No código anterior, Store é o nome da tabela, Territory é o nome da coluna e PA é um dos valores que o filtro permite.

Avaliar uma medida entre várias tabelas

Você pode agrupar a medida por colunas que se estendem por várias tabelas no modelo semântico.

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

Avaliar várias medidas

A função evaluate_measure permite que você forneça identificadores de várias medidas e produza os valores calculados no mesmo DataFrame:

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

Usar o conector XMLA do Power BI

O cliente de modelo semântico padrão é apoiado pelas APIs REST do Power BI. Se houver algum problema na execução de consultas com esse cliente, é possível alternar o back-end para a interface XMLA do Power BI usando use_xmla=True. Os parâmetros de SemPy permanecem os mesmos para o cálculo de medidas com 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)

Faça o check-out de outros tutoriais sobre link semântico / SemPy: