Compartilhar via


Conectividade do Power BI com o link semântico

A conectividade do Power BI está no centro do link semântico no Microsoft Fabric. Este artigo descreve maneiras pelas quais o link semântico fornece conectividade com os modelos semânticos para os usuários dos ecossistemas pandas do Python e Apache Spark.

Um modelo semântico costuma representar o padrão de dados e é o resultado do processamento e refinamento de dados upstream. Os analistas de negócios podem:

  • Codificar o conhecimento de domínio e a lógica de negócios nas medidas do Power BI.
  • Criar relatórios com o Power BI usando modelos semânticos.
  • Usar esses relatórios para orientar as decisões de negócios.

Quando os cientistas de dados que trabalham com os mesmos modelos semânticos tentam duplicar a lógica de negócios em diferentes ambientes de código ou linguagens, podem ocorrer erros críticos. O link semântico preenche a lacuna entre os modelos semânticos e a experiência da Ciência de Dados do Synapse no Microsoft Fabric para que os analistas de negócios e cientistas de dados possam colaborar com facilidade e reduzir a incompatibilidade de dados.

O link semântico oferece conectividade com:

  • O ecossistema pandas do Python por meio da biblioteca SemPy do Python.
  • Modelos semânticos por meio do conector nativo do Spark que dá suporte ao PySpark, ao Spark SQL, ao R e ao Scala.

Conectividade de dados por meio da biblioteca SemPy do Python para usuários do pandas

A biblioteca Python SemPy faz parte do recurso de link semântico e serve aos usuários do pandas. A funcionalidade da SemPy inclui recuperação de dados de tabelas, computação de medidas e execução de consultas DAX (Data Analysis Expressions) e metadados.

  • Para o Spark 3.4 e versões posteriores, um link semântico está disponível no runtime padrão ao usar o Fabric, e não há necessidade de instalá-lo.

  • Para o Spark 3.3 ou versões inferiores, ou para atualizar para a última versão do link semântico, faça a execução do seguinte comando:

    %pip install -U semantic-link
    

A SemPy também estende os DataFrames do pandas com metadados adicionais propagados da fonte de dados do Power BI. Esses metadados incluem:

  • Categorias de dados do Power BI:
    • Geográfico: endereço, local, cidade
    • URL: URL da Web, URL da imagem
    • Código de barras
  • Relações entre tabelas
  • Hierarquias

O conector nativo do Spark no Link Semântico permite que os usuários do Spark acessem tabelas e medidas do Power BI. O conector é independente de linguagem e dá suporte ao PySpark, ao Spark SQL, ao R e ao Scala.

Para usar o conector nativo do Spark, você representa os modelos semânticos como namespaces do Spark e expõem de modo transparente as tabelas do Power BI como tabelas do Spark.

O comando a seguir configura o Spark para usar o conector nativo do Power BI para Spark para Spark SQL:

spark.conf.set("spark.sql.catalog.pbi", "com.microsoft.azure.synapse.ml.powerbi.PowerBICatalog")

# Optionally, configure the workspace using its ID
# Resolve workspace name to ID using fabric.resolve_workspace_id("My workspace")
# Replace 00000000-0000-0000-0000-000000000000 with your own workspace ID
# spark.conf.set("spark.sql.catalog.pbi.workspace, "00000000-0000-0000-0000-000000000000")

O comando a seguir lista todas as tabelas em um modelo semântico chamado Sales Dataset:

%%sql
SHOW TABLES FROM pbi.`Sales Dataset`

O comando a seguir exibe dados da tabela Customer no modelo semântico Sales Dataset:

%%sql
SELECT * FROM pbi.`Sales Dataset`.Customer

As medidas do Power BI são acessíveis por meio da tabela virtual _Metrics para fazer a ponte entre o Spark SQL relacional e o Power BI multidimensional. No exemplo a seguir, Total Revenue e Revenue Budget são medidas definidas no modelo semântico Sales Dataset e as outras colunas são dimensões. Funções de agregação como AVG são ignoradas para medidas e estão presentes apenas para proporcionar consistência com SQL.

O conector dá suporte ao pushdown de predicados de computação como Customer[State] in ('CA', 'WA') de expressões do Spark para o mecanismo do Power BI, permitindo a utilização do mecanismo otimizado do Power BI.

SELECT
    `Customer[Country/Region]`,
    `Industry[Industry]`,
    AVG(`Total Revenue`),
    AVG(`Revenue Budget`)
FROM
    pbi.`Sales Dataset`.`_Metrics`
WHERE
    `Customer[State]` in ('CA', 'WA')
GROUP BY
    `Customer[Country/Region]`,
    `Industry[Industry]`

Aumento de dados com medidas do Power BI

A operação add_measure é um recurso avançado do link semântico que permite aumentar os dados com medidas de modelos semânticos. A operação só está disponível na biblioteca SemPy do Python, não havendo suporte para ela no conector nativo do Spark. Para obter mais informações sobre o método de add_measure, confira add_measure na documentação da classe FabricDataFrame.

Para usar a biblioteca SemPy do Python, instale-a no seu kernel do notebook executando este código em uma célula do notebook:

# %pip and import only needs to be done once per notebook
%pip install semantic-link
from sempy.fabric import FabricDataFrame

O exemplo de código a seguir pressupõe que você tenha um FabricDataFrame com dados que deseja aumentar com medidas de um modelo semântico.

df = FabricDataFrame({
        "Sales Agent": ["Agent 1", "Agent 1", "Agent 2"],
        "Customer[Country/Region]": ["US", "GB", "US"],
        "Industry[Industry]": ["Services", "CPG", "Manufacturing"],
    }
)

joined_df = df.add_measure(["Total Revenue", "Total Budget"], dataset="Sales Dataset")

O método add_measure faz o seguinte:

  1. Resolve nomes de colunas no FabricDataFrame para dimensões do Power BI. A operação ignora os nomes de coluna que não podem ser resolvidos no modelo semântico fornecido. Para obter mais informações, confira a sintaxe DAX com suporte.
  2. Define colunas group by, usando os nomes de colunas resolvidos.
  3. Calcula uma ou mais medidas no nível group by.
  4. Filtra o resultado pelas linhas existentes no FabricDataFrame.