Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este tutorial mostra como usar um jupyter notebook para interagir com o Power BI e detectar relações entre tabelas com a biblioteca SemPy.
Neste tutorial, você aprenderá a:
- Descubra relações em um modelo semântico (conjunto de dados do Power BI) usando a semântica biblioteca Python (SemPy) do link semântico.
- Use componentes SemPy que se integram ao Power BI e automatizam a análise de qualidade de dados. Esses componentes incluem:
-
FabricDataFrame- uma estrutura semelhante a pandas aprimorada com informações semânticas - Funções que puxam modelos semânticos de um workspace do Fabric para seu notebook
- Funções que testam dependências funcionais e identificam violações de relação em seus modelos semânticos
-
Pré-requisitos
Obtenha uma assinatura do Microsoft Fabric. Ou inscreva-se para uma avaliação gratuita do Microsoft Fabric.
Entre no Microsoft Fabric.
Alterne para o Fabric usando o alternador de experiências no canto inferior esquerdo da página inicial.
Vá para Workspaces no painel de navegação e selecione seu workspace para defini-lo como o workspace atual.
Baixe o Exemplo de Rentabilidade do Cliente.pbix e o Exemplo de Rentabilidade do Cliente (modelos semânticos auto).pbix do repositório GitHub de exemplos de malha e carregue-os em seu workspace.
Acompanhar no notebook
Use o notebook powerbi_relationships_tutorial.ipynb para acompanhar.
Para abrir o bloco de anotações que acompanha este tutorial, siga as instruções em Preparar seu sistema para tutoriais de ciência de dados para importar o bloco de anotações para seu espaço de trabalho.
Se você prefere copiar e colar o código desta página, pode criar um notebook.
Certifique-se de anexar um lakehouse ao notebook antes de começar a executar o código.
Configurar o notebook
Configure um ambiente de notebook com os módulos e os dados necessários.
Instale o
semantic-linkpacote do PyPI usando o%pipcomando embutido no notebook.%pip install semantic-linkImporte os
sempymódulos que você usará mais tarde.import sempy.fabric as fabric from sempy.relationships import plot_relationship_metadata from sempy.relationships import find_relationships from sempy.fabric import list_relationship_violationsImporte a
pandasbiblioteca e defina uma opção de exibição para formatação de saída.import pandas as pd pd.set_option('display.max_colwidth', None)
## Explore semantic models
This tutorial uses the Customer Profitability Sample semantic model [_Customer Profitability Sample.pbix_](https://github.com/microsoft/fabric-samples/blob/main/docs-samples/data-science/datasets/Customer%20Profitability%20Sample.pbix). Learn about the semantic model in [Customer Profitability sample for Power BI](/power-bi/create-reports/sample-customer-profitability).
- Use SemPy's `list_datasets` function to explore semantic models in your current workspace:
```python
fabric.list_datasets()
Para o restante deste notebook, use duas versões do modelo semântico de Exemplo de Rentabilidade do Cliente:
- Exemplo de rentabilidade do cliente: o modelo semântico, conforme fornecido nos exemplos do Power BI, com relações de tabela predefinidas
- Exemplo de rentabilidade do cliente (automático): os mesmos dados, mas as relações são limitadas às que o Power BI faz a detecção automática
Extrair relações predefinidas do modelo semântico de exemplo
Carregue as relações predefinidas no modelo semântico exemplo de rentabilidade do cliente usando a função semPy
list_relationships. A função lista relações do TOM (Modelo de Objeto Tabular).dataset = "Customer Profitability Sample" relationships = fabric.list_relationships(dataset) relationshipsVisualize o
relationshipsDataFrame como um grafo usando a função semPyplot_relationship_metadata.plot_relationship_metadata(relationships)Este grafo mostra as relações entre tabelas neste modelo semântico, conforme definido no Power BI por um especialista no assunto.
Descobrir relações adicionais
Se você começar com relações que o Power BI autodetecta, você terá um conjunto menor.
Visualize as relações detectadas automaticamente pelo Power BI no modelo semântico:
dataset = "Customer Profitability Sample (auto)" autodetected = fabric.list_relationships(dataset) plot_relationship_metadata(autodetected)A autodeteção do Power BI perde muitos relacionamentos. Além disso, duas das relações detectadas automaticamente estão semanticamente incorretas:
-
Executive[ID]->Industry[ID] -
BU[Executive_id]->Industry[ID]
-
Imprima as relações como uma tabela:
autodetectedAs linhas 3 e 4 mostram relações incorretas com a
Industrytabela. Remova essas linhas.Descarte as relações identificadas incorretamente.
# Remove rows 3 and 4 which point incorrectly to Industry[ID] autodetected = autodetected[~autodetected.index.isin([3, 4])]Agora você tem relações corretas, mas incompletas. Visualize essas relações incompletas usando
plot_relationship_metadata:plot_relationship_metadata(autodetected)Carregue todas as tabelas do modelo semântico, usando SemPy
list_tablese funções eread_table, em seguida, encontre relações entre tabelas usandofind_relationships. Examine a saída do log para obter informações sobre como essa função funciona:suggested_relationships_all = find_relationships( tables, name_similarity_threshold=0.7, coverage_threshold=0.7, verbose=2 )Visualizar relações recém-descobertas:
plot_relationship_metadata(suggested_relationships_all)O SemPy detecta todas as relações.
Use o parâmetro
excludepara limitar a pesquisa a relações adicionais que não foram identificadas anteriormente:additional_relationships = find_relationships( tables, exclude=autodetected, name_similarity_threshold=0.7, coverage_threshold=0.7 ) additional_relationships
Validar relações
Primeiro, carregue dados do modelo semântico de Exemplo de Rentabilidade do Cliente .
dataset = "Customer Profitability Sample" tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']} tables.keys()Verifique a sobreposição de chave primária e estrangeira com a
list_relationship_violationsfunção. Passe a saída dalist_relationshipsfunção paralist_relationship_violations.list_relationship_violations(tables, fabric.list_relationships(dataset))Os resultados revelam insights úteis. Por exemplo, um dos sete valores em
Fact[Product Key]não está presenteProduct[Product Key]e a chave ausente é50.A análise de dados exploratória e a limpeza de dados são iterativas. O que você aprende depende de suas perguntas e de como explorar os dados. O link semântico adiciona ferramentas que ajudam você a fazer mais com seus dados.
Conteúdo relacionado
Explore outros tutoriais para link semântico e SemPy:
- Tutorial: Limpar dados com dependências funcionais
- Tutorial: Analisar dependências funcionais em um modelo semântico de exemplo
- Tutorial: Extrair e calcular medidas do Power BI de um Jupyter Notebook
- Tutorial: Descobrir relações no conjunto de dados do Synthea usando o link semântico
- Tutorial : validar dados usando SemPy e grandes expectativas (GX)