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
Conectividade de dados por meio do conector nativo do Spark no Link Semântico
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:
- 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.
- Define colunas
group by
, usando os nomes de colunas resolvidos. - Calcula uma ou mais medidas no nível
group by
. - Filtra o resultado pelas linhas existentes no FabricDataFrame.