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.
Para invocar itens de função de dados de usuário Fabric a partir de uma aplicação de consola em Python, pode enviar pedidos HTTP para o endpoint da função que precisa ser executada. Neste guia de início rápido, você aprenderá a configurar um aplicativo Python usando o Visual Studio Code.
Pré-requisitos
- Instalar o Visual Studio Code.
- Descarregue Python 3.1 na sua máquina local.
- Crie uma conta Microsoft Fabric de forma gratuita se não tiver uma.
- Criar um espaço de trabalho.
- Crie um item de funções de dados do usuário e publique-o. Verifique estes artigos sobre como criar um no Visual Studio Code ou como criar um no portal. Publique as alterações para que o item de funções de dados do usuário esteja pronto para ser invocado.
Criar uma aplicação do Microsoft Entra
As etapas a seguir explicam como configurar o suporte para um aplicativo ReactJS no Microsoft Entra.
Registre um aplicativo usando as etapas descritas em Guia de início rápido: registrar um aplicativo com a plataforma de identidade da Microsoft.
Os valores de ID do Aplicativo (cliente) e ID do Diretório (locatário) do aplicativo Microsoft Entra aparecem na caixa Resumo. Registre esses valores porque eles são necessários posteriormente.
Na lista Gerenciar, selecione permissões de APIe, em seguida, Adicionar permissão.
Adicione o Serviço PowerBI, selecione Permissões delegadas e selecione UserDataFunction.Execute.All ou item. Executar todas as permissões. Confirme se o consentimento do administrador não é necessário.
Volte para a configuração Gerenciar e selecione Autenticação>Adicionar um> plataforma.
Para fins de desenvolvimento local, adicione
http://localhost:3000em Redirecionar URIs e confirme se o aplicativo está habilitado para o fluxo de código de autorização com PKCE (Proof Key for Code Exchange). Selecione o botão Configurar para salvar as alterações. Se o aplicativo encontrar um erro relacionado a solicitações de origem cruzada, adicione a plataforma de aplicativos móveis e de desktop na etapa anterior com o mesmo URI de redirecionamento.Voltar à Autenticação, role para baixo até Definições Avançadas e, em Permitir fluxos de clientes públicos, selecione Sim para Ativar os seguintes fluxos móveis e de ambiente de trabalho.
Criar um aplicativo de console
A função deve ser acessível ao público. No explorador de funções, passe o cursor sobre o nome da função e selecione o ícone de reticências (...) que aparece e, em seguida, selecione Propriedades. No painel de Propriedades que se abre, ative o acesso público. Você também deve fazer uma nota do URL Pública para usar no seu aplicativo Python.
Crie uma nova pasta para a sua aplicação Python, por exemplo, my-data-app. Abra a pasta no Visual Studio Code.
Configure o ambiente virtual Python no Visual Studio Code. Para criar ambientes locais no Visual Studio Code, abra a paleta de comandos com Ctrl+Shift+P e, em seguida, procure e selecione o comando Python: Create Environment.
- O comando apresenta uma lista de tipos de ambiente e seleciona venv.
- Selecione a versão do interpretador Python Python 3.11.
Execute o seguinte comando para ativar o ambiente virtual no terminal do Visual Studio Code.
venv\Scripts\activate.batEm seguida, execute o comando para instalar as bibliotecas Python necessárias para este exemplo.
pip install azure-identity, requestsCrie um ficheiro
app.pye use o código para invocar as funções de dados do utilizador.from azure.identity import InteractiveBrowserCredential import requests import json # Acquire a token # DO NOT USE IN PRODUCTION. # Below code to acquire token is to test the User data function endpoint and is for the purpose of development only. # For production, always register an application in a Microsoft Entra ID tenant and use the appropriate client_id and scopes. app = InteractiveBrowserCredential() scp = 'https://analysis.windows.net/powerbi/api/user_impersonation' result = app.get_token(scp) if not result.token: print('Error:', "Could not get access token") # Prepare headers headers = { 'Authorization': f'Bearer {result.token}', 'Content-Type': 'application/json' } FUNCTION_URL = '<REPLACE WITH USER DATA FUNCTION URL>' # Prepare the request data data = '{"name": "John"}' # JSON payload to send to the Azure Function headers = { # "Authorization": f"Bearer {access_token}", "Content-Type": "application/json" } try: # Call the user data function public URL response = requests.post(FUNCTION_URL, json=data, headers=headers) response.raise_for_status() print(json.dumps(response.json())) except Exception as e: print({"error": str(e)}, 500) if __name__ == "__main__": app.run(debug=True)Observação
O exemplo é apenas para fins de desenvolvimento. Atualize o aplicativo para usar a autenticação Microsoft Entra ID antes de usar o aplicativo para um caso de uso de produção.
Invocando uma função de um aplicativo externo
As funções podem ser invocadas emitindo uma chamada REST para a URL do ponto de extremidade. Selecione a função que deseja invocar no explorador de Funções e selecione Copiar URL da Função. Você também pode ativar ou desativar a capacidade de usar este URL no menu Propriedades, externamente.
Em seguida, use essa URL em seu aplicativo para invocar a função. Consulte Invocar funções de dados do utilizador de uma aplicação
Esquema de saída
Ao invocar uma função de dados do usuário de um aplicativo externo, o esquema de saída terá o seguinte formato:
{
"functionName": "hello_fabric",
"invocationId": "1234567890",
"status": "Succeeded | BadRequest | Failed | Timeout | ResponseTooLarge",
"output": /*shows the result of the function dependeing on the output type*/,
"errors": [
{
"name": "Error name",
"message": "Error message",
"properties": {
/*Key value pairs custom to error*/
}
},
]
}
As seguintes propriedades são retornadas:
- functionName: O nome da função que foi executada.
- invocationId: O identificador de invocação para a execução de uma função.
-
status: O resultado da execução da função e os valores suportados são
Succeeded,BadRequest,FailedeTimeoutResponseTooLarge. - saída: O valor de saída retornado pela função.
- erros: Se algum erro foi capturado, isto retornará uma lista de cada erro com seu nome, mensagem de erro e propriedades de erro.
Código de resposta
A função retornará os seguintes códigos HTTP como resultado da execução.
| Código de resposta | Message | Descrição |
|---|---|---|
| 200 | Sucesso | O pedido foi bem-sucedido. |
| 400 | Pedido Incorreto | O pedido não era válido. Essa resposta pode ser devida a valores de parâmetros de entrada, tipos de dados ou nomes ausentes ou incorretos. Essa resposta também pode ser causada pelo acesso público desativado para uma função. |
| 403 | Proibido | A resposta foi demasiado grande e a invocação falhou. |
| 408 | Tempo limite de solicitação | O pedido falhou devido à execução demorar mais de 200 segundos. |
| 409 | Conflito | A solicitação não pôde ser concluída devido a um estado conflitante. Isso pode ser causado por uma exceção não tratada ou um erro com as credenciais do usuário. |
| 422 | Pedido Incorreto | A solicitação falhou devido a um UserThrownError gerado na função. |
| 500 | Erro interno do servidor | A solicitação falhou devido a um erro interno no serviço. |
Depuração e teste
Depure o aplicativo no Visual Studio Code usando o depurador python. Adicione pontos de interrupção, se necessário, para depurar se houver algum problema. Mais informações
Próximos passos
- Criar funções de dados do utilizador
- Exemplos de funções de dados do usuário