Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este tutorial mostra como usar um bloco de anotações Jupyter para interagir com o Power BI e detetar 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 biblioteca Python do link semântico (SemPy).
- Use componentes do SemPy que se integram ao Power BI e automatizam a análise de qualidade de dados. Esses componentes incluem:
-
FabricDataFrame- uma estrutura semelhante a um pandas reforçada com informação semântica - Funções que extraem modelos semânticos de um espaço de trabalho do Fabric para o seu bloco de notas
- Funções que testam dependências funcionais e identificam violações de relacionamento em seus modelos semânticos
-
Pré-requisitos
Obtenha uma assinatura do Microsoft Fabric. Ou inscreva-se para obter uma avaliação gratuita do Microsoft Fabric.
Inicie sessão em Microsoft Fabric.
Altera para o Fabric usando o alternador de experiência no canto inferior esquerdo da sua página inicial.
Vá para Espaços de trabalho no painel de navegação e selecione seu espaço de trabalho para defini-lo como o espaço de trabalho atual.
Baixe os modelos semânticos Customer Profitability Sample.pbix e Customer Profitability Sample (auto).pbix do repositório GitHub de amostras de malha e carregue-os para seu espaço de trabalho.
Acompanhe no caderno
Use o bloco de anotações powerbi_relationships_tutorial.ipynb para acompanhar.
Para abrir o notebook que está associado a este tutorial, siga as instruções na secção Preparar o seu sistema para tutoriais de ciência de dados para importar o notebook para o seu espaço de trabalho.
Se preferir copiar e colar o código desta página, pode criar um novo bloco de notas.
Certifique-se de anexar um lakehouse ao bloco de anotações antes de começar a executar o código.
Configurar o bloco de notas
Configure um ambiente de notebook com os módulos e dados necessários.
Instale o
semantic-linkpacote do PyPI usando o%pipcomando inline 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 bloco de anotações, use duas versões do modelo semântico Customer Profitability Sample:
- 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 (auto): os mesmos dados, mas as relações estão limitadas àqueles que o Power BI deteta automaticamente
Extrair relações predefinidas do modelo semântico de exemplo
Carregue as relações predefinidas no modelo semântico Customer Profitability Sample usando a função do
list_relationshipsSemPy. A função lista relações do modelo de objeto tabular (TOM).dataset = "Customer Profitability Sample" relationships = fabric.list_relationships(dataset) relationshipsVisualize o DataFrame como um gráfico usando a
relationshipsfunção doplot_relationship_metadataSemPy.plot_relationship_metadata(relationships)Este gráfico mostra as relações entre tabelas neste modelo semântico, conforme definido no Power BI por um especialista no assunto.
Descubra relações adicionais
Se você começar com relacionamentos que o Power BI deteta automaticamente, terá um conjunto menor.
Visualize as relações que o Power BI detetou automaticamente no modelo semântico:
dataset = "Customer Profitability Sample (auto)" autodetected = fabric.list_relationships(dataset) plot_relationship_metadata(autodetected)A deteção automática do Power BI perde muitos relacionamentos. Além disso, duas das relações detetadas automaticamente sã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 relacionamentos corretos, mas incompletos. Visualize essas relações incompletas usando
plot_relationship_metadata:plot_relationship_metadata(autodetected)Carregue todas as tabelas do modelo semântico, usando SemPy's
list_tableseread_tablefunções, e encontre relações entre tabelas usandofind_relationships. Revise 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 )Visualize relacionamentos recém-descobertos:
plot_relationship_metadata(suggested_relationships_all)O SemPy deteta todos os relacionamentos.
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 os dados do modelo semântico Customer Profitability Sample .
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 chaves primárias e estrangeiras com a
list_relationship_violationsfunção. Passe alist_relationshipssaída da função paralist_relationship_violations.list_relationship_violations(tables, fabric.list_relationships(dataset))Os resultados revelam informações úteis. Por exemplo, um dos sete valores in
Fact[Product Key]não está presente noProduct[Product Key], e a chave ausente é50.A análise exploratória de dados e a limpeza de dados são iterativas. O que você aprende depende de suas perguntas e de como você explora 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 a partir de um bloco de anotações Jupyter
- Tutorial: Descubra relações no conjunto de dados Synthea, usando link semântico
- Tutorial: Validar dados usando SemPy e Grandes Expectativas (GX)