Desenvolver objetos de consulta e página de API para o Power BI
Na unidade anterior, você viu como desenvolver objetos da página e da consulta e como expor objetos de página e consulta como serviços Web. O Power BI pode então se conectar aos serviços Web do Business Central e importar os dados.
Sempre que possível, você é incentivado a usar páginas/consultas de API em vez de serviços Web OData. As APIs são mais rápidas no carregamento de dados em relatórios do Power BI do que os serviços Web OData. Além disso, elas são mais flexíveis porque permitem que você obtenha dados dos campos de tabela que não são definidos em um objeto de página.
Os desenvolvedores podem definir objetos de página e consultar objetos do tipo API. Dessa forma, eles podem expor dados das tabelas de banco de usuários por meio de um serviço REST habilitado para OData v4, com suporte para webhook. Esse tipo de dados não pode ser exibido na interface do usuário, mas destina-se a criar serviços de integração confiáveis.
O Business Central online é disponibilizado com um conjunto de APIs internas, que você pode usar para obter dados para as entidades comerciais mais comuns, como clientes, itens, ordens de venda e outros. Não é necessário nenhum trabalho ou configuração extra para usar essas APIs como uma fonte de dados para relatórios do Power BI. Para obter mais informações sobre essas APIs, consulte Business Central API V2.0.
O Business Central online também oferece suporte a APIs personalizadas. Os desenvolvedores de soluções do Business Central podem criar suas próprias páginas e consultas de API e empacotá-las em aplicativos. Em seguida, você instala os aplicativos no locatário. Depois de instalado, use as páginas de API para os relatórios do Power BI, como você faria com as APIs internas (v 2.0). Para obter mais informações sobre como criar uma API expondo páginas ou consultas, consulte Desenvolvendo uma API personalizada.
Os relatórios do Power BI para o Business Central Online são originados em uma réplica de banco de dados somente leitura secundária, para fins de desempenho. Como consequência, os desenvolvedores de AL devem evitar criar páginas de API que façam modificações no banco de dados, enquanto as páginas estiverem abrindo ou carregando registros. Considere principalmente o código nos gatilhos AL: OnInit, OnOpenPage, OnFindRecord, OnNextRecord, OnAfterGetRecord e OnAfterGetCurrRecord. Essas modificações do banco de dados, em alguns casos, podem causar problemas de desempenho e impedir que o relatório atualize dados. Para obter mais informações, consulte Artigos sobre desempenho para desenvolvedores no conteúdo de desenvolvimento do Business Central.
Em casos raros, o comportamento causa um erro quando um usuário tenta obter dados da API para um relatório no Power BI Desktop. No entanto, se as modificações do banco de dados forem necessárias na API personalizada, os usuários do Power BI Desktop poderão forçar o comportamento. Para obter mais informações, consulte Criar relatórios do Power BI para exibir dados do Business Central.
Vamos agora recriar a página e a consulta que desenvolvemos na unidade anterior como uma página de API e uma consulta de API.
Para criar uma página de API baseada na tabela Customer, siga estas etapas
No Visual Studio Code, adicione um novo arquivo ao projeto e nomeie-o CustomersAPI.Page.al.
Cole o código a seguir no arquivo CustomersAPI.Page.al:
page 50102 CustomersAPI { APIGroup = 'powerBI'; APIPublisher = 'microsoftLearn'; APIVersion = 'v1.0'; ApplicationArea = All; Caption = 'customers'; EntityName = 'customer'; EntitySetName = 'customers'; PageType = API; SourceTable = Customer; Editable = false; DataAccessIntent = ReadOnly; layout { area(content) { repeater(General) { field(no; Rec."No.") { Caption = 'No.'; } field(name; Rec.Name) { Caption = 'Name'; } field(city; Rec.City) { Caption = 'City'; } field(countryRegionCode; Rec."Country/Region Code") { Caption = 'Country/Region Code'; } } } } }
Como você pode ver, a página API expõe os mesmos campos que o WebService de página criado na unidade anterior. A diferença está nas propriedades do objeto da página.
As propriedades: APIVersion, APIPublisher, APIGroup, EntityName e EntitySetName afetam o ponto de extremidade personalizado:
https://api.businesscentral.dynamics.com/v1.0/<user domain name>/api/<API publisher>/<API group>/<API version>/companies(<company id>)/
Para obter mais informações, consulte Pontos de extremidade de API do Business Central API e Chamar a API.
Para criar uma consulta de API baseada na tabela Customer Ledger Entry, siga estas etapas:
No Visual Studio Code, adicione um novo arquivo .al ao projeto e nomeie-o como CustomerLedgersAPI.Query.al.
Cole o código a seguir no arquivo CustomerLedgersAPI.Query.al:
query 50102 CustomerLedgersAPI { APIGroup = 'powerBI'; APIPublisher = 'microsoftLearn'; APIVersion = 'v1.0'; EntityName = 'customerLedger'; EntitySetName = 'customerLedgers'; QueryType = API; DataAccessIntent = ReadOnly; elements { dataitem(custLedgerEntry; "Cust. Ledger Entry") { column(customerNo; "Customer No.") { } column(postingDate; "Posting Date") { } column(amountLCY; "Amount (LCY)") { } } } trigger OnBeforeOpen() begin end; }
Agora você criou um novo objeto de página de API e um novo objeto de consulta de API. Você pode ajustar ainda mais os objetos de página de API e consulta de API adicionando mais campos ou filtros. Neste exemplo, vamos deixá-los como estão no momento.
Para páginas de API e consultas de API, você não precisa criar um arquivo webservices.xml para que as APIs fiquem disponíveis no Business Central. Você só precisa publicar a extensão no locatário do Business Central.
Para fazer isso, siga estas etapas:
No Visual Studio Code, acesse a Paleta de Comandos e selecione a opção: AL: Publish sem depuração.
Aguarde até que a extensão seja publicada. Ao publicar, seu navegador será aberto automaticamente e estabelecerá conexão com a área restrita no Business Central.
No Business Central, abra a página Gerenciamento de Extensões para verificar se a extensão foi publicada e instalada com êxito.
Agora você pode usar o Power BI Desktop e ver essas novas APIs, usando o conector Business central para Power BI.
Como você pode ver, as APIs personalizadas estão disponíveis em APIs avançadas no conector do Business Central no Power BI Desktop.