Partilhar via


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

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

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

Configurar o bloco de notas

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

  1. Instale o semantic-link pacote do PyPI usando o %pip comando inline 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 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

  1. Carregue as relações predefinidas no modelo semântico Customer Profitability Sample usando a função do list_relationships SemPy. A função lista relações do modelo de objeto tabular (TOM).

    dataset = "Customer Profitability Sample"
    relationships = fabric.list_relationships(dataset)
    relationships
    
  2. Visualize o DataFrame como um gráfico usando a relationships função do plot_relationship_metadata SemPy.

    plot_relationship_metadata(relationships)
    

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

    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.

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

    Captura de ecrã das relações que o Power BI detetou automaticamente no modelo semântico.

    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]
  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 relacionamentos corretos, mas incompletos. Visualize essas relações incompletas usando plot_relationship_metadata:

    plot_relationship_metadata(autodetected)
    

    Captura de tela de uma visualização de relacionamentos depois de remover os incorretos.

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

    plot_relationship_metadata(suggested_relationships_all)
    

    Captura de tela de uma visualização de relacionamentos recém-descobertos.

    O SemPy deteta todos os relacionamentos.

  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 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()
    
  2. Verifique a sobreposição de chaves primárias e estrangeiras com a list_relationship_violations função. Passe a list_relationships saída da função para list_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 no Product[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.

Explore outros tutoriais para link semântico e SemPy:

\n\n