Compartilhar via


Descobrir relações em um modelo semântico usando o link semântico

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

  • 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.

Configurar o notebook

Configure um ambiente de notebook com os módulos e os dados necessários.

  1. Instale o semantic-link pacote do PyPI usando o %pip comando embutido no notebook.

    %pip install semantic-link
    
  2. Importe os sempy mó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_violations
    
  3. Importe a pandas biblioteca 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

  1. 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)
    relationships
    
  2. Visualize o relationships DataFrame como um grafo usando a função semPy plot_relationship_metadata .

    plot_relationship_metadata(relationships)
    

    Captura de tela do grafo de relações entre tabelas no modelo semântico.

    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.

  1. 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)
    

    Captura de tela das relações que o Power BI autodetecou no modelo semântico.

    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]
  2. Imprima as relações como uma tabela:

    autodetected
    

    As linhas 3 e 4 mostram relações incorretas com a Industry tabela. Remova essas linhas.

  3. 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)
    

    Captura de tela de uma visualização de relações depois de remover as incorretas.

  4. Carregue todas as tabelas do modelo semântico, usando SemPy list_tables e funções e read_table , em seguida, encontre relações entre tabelas usando find_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
    )
    
  5. Visualizar relações recém-descobertas:

    plot_relationship_metadata(suggested_relationships_all)
    

    Captura de tela de uma visualização de relações recém-descobertas.

    O SemPy detecta todas as relações.

  6. Use o parâmetro exclude para 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

  1. 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()
    
  2. Verifique a sobreposição de chave primária e estrangeira com a list_relationship_violations função. Passe a saída da list_relationships função para list_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á presente Product[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.

Explore outros tutoriais para link semântico e SemPy:

\n\n