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.
Neste tutorial, você aproveita o trabalho de um analista do Power BI armazenado como modelos semânticos (conjuntos de dados do Power BI). Usando o SemPy (visualização) na experiência Synapse Data Science no Microsoft Fabric, você analisa dependências funcionais em colunas DataFrame. Essa análise ajuda você a descobrir problemas sutis de qualidade de dados para obter informações mais precisas.
Neste tutorial, você aprenderá a:
- Aplicar conhecimento de domínio para formular hipóteses sobre dependências funcionais em um modelo semântico.
- Familiarize-se com os componentes da biblioteca Python (SemPy) do Link Semântico que se integram ao Power BI e ajudam a automatizar a análise da qualidade dos dados. Esses componentes incluem:
- FabricDataFrame — estrutura semelhante a pandas aprimorada com informações semânticas adicionais
- Funções que extraem modelos semânticos de um espaço de trabalho do Fabric para o seu bloco de notas
- Funções que avaliam hipóteses de dependência funcional e identificam violações de relacionamento em seus modelos semânticos
Pré-requisitos
Obtenha uma assinatura Microsoft Fabric. Ou inscreva-se para obter uma avaliação gratuita do Microsoft Fabric.
Inicie sessão no Microsoft Fabric.
Altera para o Fabric usando o alternador de experiência no canto inferior esquerdo da sua página inicial.
Selecione Espaços de trabalho no painel de navegação para localizar e selecionar seu espaço de trabalho. Este espaço de trabalho torna-se o seu espaço de trabalho atual.
Baixe o arquivo Customer Profitability Sample.pbix do repositório GitHub de amostras de malha.
No seu espaço de trabalho, selecione Importar Relatório de>ou Relatório Paginado>a partir deste computador para importar o ficheiro Customer Profitability Sample.pbix para o seu espaço de trabalho.
Acompanhe no caderno
O notebook powerbi_dependencies_tutorial.ipynb acompanha este tutorial.
Para abrir o notebook que acompanha este tutorial, siga as instruções em 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 notebook
Configure um ambiente de notebook com os módulos e dados necessários.
Use
%pippara instalar o SemPy do PyPI no notebook.%pip install semantic-linkImporte os módulos de que precisa.
import sempy.fabric as fabric from sempy.dependencies import plot_dependency_metadata
Carregue e pré-processe os dados
Este tutorial usa um modelo semântico de exemplo padrão Customer Profitability Sample.pbix. Para obter uma descrição do modelo semântico, consulte exemplo de Rentabilidade do Cliente para o Power BI.
Carregue dados do Power BI em um
FabricDataFrameusando afabric.read_tablefunção.dataset = "Customer Profitability Sample" customer = fabric.read_table(dataset, "Customer") customer.head()Carregue a
Statetabela em umFabricDataFramearquivo .state = fabric.read_table(dataset, "State") state.head()Embora a saída pareça um DataFrame pandas, esse código inicializa uma estrutura de dados chamada a
FabricDataFrameque adiciona operações sobre pandas.Verifique o tipo de dados do
customer.type(customer)A saída mostra que
customerésempy.fabric._dataframe._fabric_dataframe.FabricDataFrame.Junte-se aos
customerestateDataFrameobjetos.customer_state_df = customer.merge(state, left_on="State", right_on="StateCode", how='left') customer_state_df.head()
Identificar dependências funcionais
Uma dependência funcional é uma relação um-para-muitos entre valores em duas ou mais colunas em um DataFramearquivo . Use essas relações para detetar automaticamente problemas de qualidade de dados.
Execute a função do SemPy na mesclada
find_dependenciespara identificar dependênciasDataFramefuncionais entre valores de coluna.dependencies = customer_state_df.find_dependencies() dependenciesVisualize as dependências usando a função do
plot_dependency_metadataSemPy.plot_dependency_metadata(dependencies)O gráfico de dependências funcionais mostra que a
Customercoluna determina colunas comoCity,Postal CodeeName.O gráfico não mostra uma dependência funcional entre
CityePostal Code, provavelmente porque há muitas violações na relação entre as colunas. Use a função do SemPy para visualizar violações deplot_dependency_violationsdependência entre colunas específicas.
Explore os dados em busca de problemas de qualidade
Desenhe um gráfico com a função de visualização
plot_dependency_violationsdo SemPy.customer_state_df.plot_dependency_violations('Postal Code', 'City')
O gráfico de violações de dependência mostra valores para
Postal Codeno lado esquerdo e valores paraCityno lado direito. Uma aresta conecta umaPostal Codeno lado esquerdo com umaCityno lado direito se houver uma linha que contenha esses dois valores. As arestas são anotadas com a contagem do número dessas filas. Por exemplo, existem duas linhas com o código postal 20004, uma com cidade "North Tower" e outra com cidade "Washington".O enredo também mostra algumas violações e muitos valores vazios.
Confirme o número de valores vazios para
Postal Code:customer_state_df['Postal Code'].isna().sum()50 linhas têm NA para
Postal Code.Eliminar linhas com valores vazios. Em seguida, encontre dependências usando a função
find_dependencies. Observe o parâmetro extraverbose=1que oferece um vislumbre do funcionamento interno do SemPy:customer_state_df2=customer_state_df.dropna() customer_state_df2.find_dependencies(verbose=1)A entropia condicional para
Postal CodeeCityé 0,049. Esse valor indica que há violações de dependência funcional. Antes de corrigir as violações, aumente o limite de entropia condicional do valor padrão de0.01para0.05, apenas para ver as dependências. Limiares mais baixos resultam em menos dependências (ou maior seletividade).Aumente o limite de entropia condicional do valor padrão de
0.01para0.05:plot_dependency_metadata(customer_state_df2.find_dependencies(threshold=0.05))Se você aplicar o conhecimento de domínio de qual entidade determina os valores de outras entidades, esse gráfico de dependência parece preciso.
Explore mais problemas de qualidade de dados que foram detetados. Por exemplo, uma seta tracejada une
CityeRegion, o que indica que a dependência é apenas aproximada. Essa relação aproximada pode implicar que há uma dependência funcional parcial.customer_state_df.list_dependency_violations('City', 'Region')Dê uma olhada mais de perto em cada um dos casos em que um valor de
Regionnão vazio causa uma violação:customer_state_df[customer_state_df.City=='Downers Grove']O resultado mostra a cidade de Downers Grove, em Illinois e Nebraska. No entanto, Downers Grove é uma cidade em Illinois, não Nebraska.
Dê uma olhada na cidade de Fremont:
customer_state_df[customer_state_df.City=='Fremont']Há uma cidade chamada Fremont na Califórnia. No entanto, para o Texas, o motor de busca retorna Premont, não Fremont.
Também é suspeito ver violações da dependência entre
NameeCountry/Region, conforme indicado pela linha pontilhada no gráfico original de violações de dependência (antes de eliminar as linhas com valores vazios).customer_state_df.list_dependency_violations('Name', 'Country/Region')Um cliente, SDI Design, aparece em duas regiões: Estados Unidos e Canadá. Este caso pode não ser uma violação semântica, apenas incomum. Ainda assim, vale a pena dar uma olhada de perto:
Dê uma olhada mais de perto no cliente SDI Design:
customer_state_df[customer_state_df.Name=='SDI Design']Uma inspeção mais aprofundada mostra dois clientes diferentes de indústrias diferentes com o mesmo nome.
A análise exploratória de dados e a limpeza de dados são iterativas. O que você encontra depende de suas perguntas e perspetiva. O Link Semântico oferece novas ferramentas para obter mais de seus dados.
Conteúdo relacionado
Confira outros tutoriais para link semântico e SemPy:
- Tutorial: Limpar dados com dependências funcionais
- Tutorial: Extrair e calcular medidas do Power BI a partir de um bloco de anotações Jupyter
- Tutorial: Descubra relações em um modelo semântico, usando o link semântico
- Tutorial: Descubra relações no conjunto de dados Synthea, usando link semântico
- Tutorial: Validar dados usando SemPy e Grandes Expectativas (GX)