Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Neste artigo, você aprende a ler dados, metadados e avaliar medidas em modelos semânticos usando a biblioteca Python SemPy no Microsoft Fabric. Você também aprende a escrever dados que os modelos semânticos podem consumir.
Pré-requisitos
Obtenha uma assinatura do Microsoft Fabric. Ou inscreva-se para uma avaliação gratuita do Microsoft Fabric.
Entre no Microsoft Fabric.
Use o seletor de experiência no canto inferior esquerdo da página inicial para alternar para o Fabric.
- Vá para a experiência de Ciência de Dados no Microsoft Fabric.
- Crie um novo bloco de notas para copiar e colar código nas células.
- Para o Spark 3.4 e superior, o link semântico está disponível no tempo de execução padrão ao usar o Fabric e não há necessidade de instalá-lo. Se você estiver usando o Spark 3.3 ou inferior, ou se quiser atualizar para a versão mais recente do Link Semântico, poderá executar o comando:
python %pip install -U semantic-link - Adicione um Lakehouse ao seu bloco de anotações
- Baixe o modelo semântico Customer Profitability Sample.pbix da pasta de conjuntos de dados do repositório fabric-samples e salve-o localmente.
Carregue o modelo semântico no seu espaço de trabalho
Este artigo usa o modelo semântico Customer Profitability Sample.pbix . O modelo semântico faz referência a uma empresa que fabrica materiais de marketing. Inclui dados de produtos, clientes e receitas para diferentes unidades de negócio.
- Abra seu espaço de trabalho no Fabric Data Science.
- Selecione Importar Relatório, Relatório Paginado ou Pasta de Trabalho > do computador e selecione o modelo semântico Customer Profitability Sample.pbix.
Após a conclusão do carregamento, seu espaço de trabalho inclui três novos artefatos: um relatório do Power BI, um painel e um modelo semântico chamado Exemplo de Rentabilidade do Cliente. As etapas neste artigo dependem desse modelo semântico.
Use Python para ler dados de modelos semânticos
A API Python do SemPy pode recuperar dados e metadados de modelos semânticos localizados em um espaço de trabalho do Microsoft Fabric. A API também pode executar consultas neles.
Seu bloco de anotações, modelo semântico de conjunto de dados do Power BI e lakehouse podem estar localizados no mesmo espaço de trabalho ou em espaços de trabalho diferentes. Por padrão, o SemPy tenta acessar seu modelo semântico de:
- O espaço de trabalho da sua casa do lago, se você anexou uma casa do lago ao seu notebook.
- O espaço de trabalho do seu notebook, se não houver uma casa do lago anexada.
Se seu modelo semântico não estiver localizado em nenhum desses espaços de trabalho, você deverá especificar o espaço de trabalho do seu modelo semântico quando chamar um método SemPy.
Para ler dados de modelos semânticos, siga estes passos:
Liste os modelos semânticos disponíveis em seu espaço de trabalho.
import sempy.fabric as fabric df_datasets = fabric.list_datasets() df_datasetsListe as tabelas disponíveis no modelo semântico Customer Profitability Sample .
df_tables = fabric.list_tables("Customer Profitability Sample", include_columns=True) df_tablesListe as medidas definidas no modelo semântico Customer Profitability Sample .
Gorjeta
No exemplo de código a seguir, especificamos o espaço de trabalho para o SemPy usar para acessar o modelo semântico. Você pode substituir
<Your Workspace>pelo nome do espaço de trabalho onde carregou o modelo semântico (na seção Carregar o modelo semântico no espaço de trabalho ).df_measures = fabric.list_measures("Customer Profitability Sample", workspace="<Your Workspace>") df_measuresAqui, determinamos que a tabela Cliente é a tabela de interesse.
Leia a tabela de Clientes do modelo semântico Exemplo de Lucratividade do Cliente.
df_table = fabric.read_table("Customer Profitability Sample", "Customer") df_tableNota
- Os dados são recuperados usando XMLA, que requer pelo menos XMLA somente leitura para ser ativado.
- A quantidade de dados recuperáveis é limitada por: - A memória máxima por consulta da capacidade SKU que hospeda o modelo semântico. - O nó condutor do Spark (visite tamanhos dos nós para mais informações) que executa o notebook.
- Todas as solicitações usam baixa prioridade para minimizar o impacto no desempenho do Microsoft Azure Analysis Services e são cobradas como solicitações interativas.
Avalie a medida Receita Total relativamente ao estado e à data de cada cliente.
df_measure = fabric.evaluate_measure( "Customer Profitability Sample", "Total Revenue", ["'Customer'[State]", "Calendar[Date]"]) df_measureNota
- Por padrão, os dados não são recuperados por XMLA, portanto, não é necessário ativar o modo de leitura.
- Os dados não estão sujeitos às limitações de back-end do Power BI.
- A quantidade de dados recuperáveis é limitada por: - A memória máxima por consulta da capacidade SKU que hospeda o modelo semântico. - O nó do driver Spark (visite tamanhos dos nós para mais informações) que executa o notebook.
- Todas as solicitações são cobradas como solicitações interativas.
- A
evaluate_daxfunção não atualiza automaticamente o modelo semântico. Visite esta página para mais detalhes.
Para adicionar filtros ao cálculo da medida, especifique uma lista de valores permitidos para uma coluna específica.
filters = { "State[Region]": ["East", "Central"], "State[State]": ["FLORIDA", "NEW YORK"] } df_measure = fabric.evaluate_measure( "Customer Profitability Sample", "Total Revenue", ["Customer[State]", "Calendar[Date]"], filters=filters) df_measureAvalie a medida de Receita Total de cada cliente por estado e data com uma consulta DAX.
df_dax = fabric.evaluate_dax( "Customer Profitability Sample", """ EVALUATE SUMMARIZECOLUMNS( 'State'[Region], 'Calendar'[Date].[Year], 'Calendar'[Date].[Month], "Total Revenue", CALCULATE([Total Revenue])) """)Nota
- Os dados são recuperados usando XMLA e, portanto, requer pelo menos XMLA de leitura apenas para estar ativo.
- A quantidade de dados recuperáveis é limitada pela memória disponível no Microsoft Azure Analysis Services e no nó do driver Spark (visite os tamanhos dos nós para obter mais informações)
- Todas as solicitações usam baixa prioridade para minimizar o impacto no desempenho do Analysis Services e são cobradas como solicitações interativas
Use a mágica em células
%%daxpara avaliar a mesma consulta DAX, sem precisar importar a biblioteca. Execute esta célula para aplicar a magia de célula%%dax.%load_ext sempyO parâmetro workspace é opcional. Ele segue as mesmas regras que o parâmetro de espaço de trabalho da
evaluate_daxfunção.Os comandos mágicos de células também suportam o acesso às variáveis Python com a sintaxe
{variable_name}. Para usar uma chave curva na consulta DAX, escape-a com outra chave curva (exemplo:EVALUATE {{1}}).%%dax "Customer Profitability Sample" -w "<Your Workspace>" EVALUATE SUMMARIZECOLUMNS( 'State'[Region], 'Calendar'[Date].[Year], 'Calendar'[Date].[Month], "Total Revenue", CALCULATE([Total Revenue]))O FabricDataFrame resultante está disponível por meio da
_variável. Essa variável captura a saída da última célula executada.df_dax = _ df_dax.head()Você pode adicionar medidas aos dados recuperados de fontes externas. Esta abordagem combina três tarefas:
- Ele resolve nomes de colunas para dimensões do Power BI
- Define grupo por colunas
- Ele filtra a medida Todos os nomes de colunas que não podem ser resolvidos dentro de um determinado modelo semântico são ignorados (visite o recurso de sintaxe DAX suportado para obter mais informações).
from sempy.fabric import FabricDataFrame df = FabricDataFrame({ "Sales Agent": ["Agent 1", "Agent 1", "Agent 2"], "Customer[Country/Region]": ["US", "GB", "US"], "Industry[Industry]": ["Services", "CPG", "Manufacturing"], } ) joined_df = df.add_measure("Total Revenue", dataset="Customer Profitability Sample") joined_df
Parâmetros especiais
O SemPy read_table e evaluate_measure os métodos têm mais parâmetros que são úteis para manipular a saída. Estes parâmetros incluem:
-
pandas_convert_dtypes: Se definido comoTrue, pandas converte as colunas DataFrame resultantes para o melhor dtype possível. Saiba mais em convert_dtypes. Se esse parâmetro estiver desativado, poderão ocorrer problemas de incompatibilidade de tipo entre colunas de tabelas relacionadas. O modelo do Power BI pode não detetar esses problemas devido à conversão de tipo implícita do DAX.
O SemPy read_table também usa as informações do modelo que o Power BI fornece.
-
multiindex_hierarchies: Se definido comoTrue, ele converte as hierarquias do Power BI em uma estrutura Pandas MultiIndex.
Gravar dados consumíveis por modelos semânticos
As tabelas Spark adicionadas a um Lakehouse são adicionadas automaticamente ao modelo semântico padrão correspondente. Este artigo demonstra como gravar dados no Lakehouse, que está anexado. O FabricDataFrame aceita os mesmos dados de entrada que os dataframes Pandas.
from sempy.fabric import FabricDataFrame
df_forecast = FabricDataFrame({'ForecastedRevenue': [1, 2, 3]})
df_forecast.to_lakehouse_table("ForecastTable")
Com o Power BI, a tabela ForecastTable pode ser adicionada a um modelo semântico composto que inclui o modelo semântico Lakehouse.