Desenvolver objetos de consulta e página para o Power BI
Quando for necessário desenvolver um relatório do Power BI, é aconselhável desenvolver os conjuntos de dados exigidos pelo relatório. Você pode usar o ambiente de desenvolvimento para criar esses conjuntos de dados. Normalmente, esse processo envolve a criação de uma pequena extensão que contém as consultas ou páginas necessárias para seu relatório. Nos serviços Web, uma coleção de serviços Web para garantir que, ao instalar e publicar a extensão, as consultas e páginas publiquem automaticamente na tabela de serviços Web.
Ao desenvolver páginas ou consultas de API, elas serão disponibilizadas automaticamente depois que a extensão for implantada. As consultas e páginas de API não exigem um arquivo de coleção de serviços Web e não são publicadas na tabela de serviços Web.
Agora, antes de começar a desenvolver sua extensão, para o Power BI, é recomendado primeiro analisar os requisitos em mais detalhes. Por exemplo, você pode ser solicitado a criar um determinado relatório do Power BI que exija alguns dados específicos. Então, com base nesse requisito, você cria seus conjuntos de dados. Na próxima vez que for solicitado a criar outro relatório do Power BI, você começa tudo novamente e cria mais conjuntos de dados.
Em vez dessa abordagem, seria melhor pensar sobre as tabelas que costumam ser exigidas em todos os relatórios do Power BI (ou na maioria deles) e criá-las como conjuntos de dados separados. Dessa forma, elas poderão ser reutilizadas sempre que for preciso. Portanto, primeiro crie os blocos de construção dos relatórios típicos do Power BI; depois, ao criar um relatório, é só reutilizar esses blocos. No final, você terá menos conjuntos de dados e nem sempre precisará começar do zero para cada novo relatório do Power BI.
No próximo módulo deste roteiro de aprendizagem, explicaremos como você deve pensar sobre o modelo de dados de um relatório típico. Com base nesse modelo de dados, normalmente chamado de esquema em estrela ou floco de neve, você pode criar consultas (ou páginas) e publicá-las como serviços Web.
No procedimento a seguir, explicarei como é possível criar uma nova extensão que inclua novas páginas e consultas, para disponibilizá-las como serviços Web para o Power BI.
Primeiro, você precisa baixar e instalar o Visual Studio Code.
Em seguida, depois de iniciar o Visual Studio Code, adicione a extensão AL para o Business Central.
Há um exemplo disponível detalhando como fazer isso. Use estes links para acessar as informações sobre cada assunto.
Depois de instalar o Visual Studio Code e habilitar a extensão AL Language, você precisará criar um novo projeto, conforme descrito aqui.
Criar uma nova extensão do Business Central no Visual Studio Code
Depois de criar a nova extensão no Visual Studio Code, você pode editar o arquivo launch.json e app.json, conforme descrito aqui.
Trabalhar com arquivos de configuração JSON
Agora você está pronto para adicionar novas páginas e consultas nessa extensão.
Como exemplo, agora criaremos uma consulta baseada na tabela Customer Ledger Entry e uma página baseada na tabela Customer.
Para criar uma página baseada na tabela Customer, siga estas etapas.
No Visual Studio Code, adicione um novo arquivo .al ao seu projeto e nomeie-o
Customers.Page.al.Use o trecho tpage para criar o esqueleto da nova página.
Altere a propriedade SourceTable para Customer.
Agora, remova todos os elementos, menos o repetidor. O código deve ter agora a aparência a seguir.
page 50101 Customers { PageType = List; ApplicationArea = All; UsageCategory = Lists; SourceTable = Customer; SourceTableView = where(Blocked = filter(" ")); Editable = false; InsertAllowed = false; DeleteAllowed = false; ModifyAllowed = false; layout { area(Content) { repeater(GroupName) { field(Name; NameSource) { ApplicationArea = All; } } } } }Na seção do repetidor, agora você pode adicionar os campos necessários da tabela Customer. Como exemplo, você pode adicionar os campos a seguir.
repeater(GroupName) { field(CustomerNo; Rec. "No.") { ApplicationArea = All; ToolTip = 'CustomerNo' } field(CustomerName; Rec.Name) { ApplicationArea = All; ToolTip = 'CustomerName' } field(CustomerCity; Rec.City) { ApplicationArea = All; ToolTip = 'CustomerCity' } field(CustomerCountry; Rec. "Country/Region Code") { ApplicationArea = All; ToolTip = 'CustomerCountry' } }Ao fornecer nomes para os campos provenientes da tabela Customer, é recomendável verificar se todos os nomes são fáceis de compreender e indicar as informações disponíveis nas colunas.
Opcionalmente, agora você também pode filtrar a página, de modo que ela retorne somente os registros que interessam. Para fazer isso, utilize a propriedade SourceTableView da página e/ou adicione código nos gatilhos da página. Como exemplo, usamos a propriedade SourceTableView para remover os clientes bloqueados da página. Para isso, implemente a propriedade a seguir.
SourceTableView = where(Blocked = filter(" "));Mais informações sobre a propriedade SourceTableView estão disponíveis aqui: Propriedade SourceTableView.
Use a propriedade Editable para tornar a página somente leitura
Editable = false;.Por fim, defina as propriedades a seguir para garantir que a página só possa ler dados da tabela Cliente.
Editable = false;
InsertAllowed = false;
DeleteAllowed = false;
ModifyAllowed = false;
O código completo da página deve ser semelhante ao exemplo abaixo.
page 50101 Customers { PageType = List; ApplicationArea = All; UsageCategory = Lists; SourceTable = Customer; SourceTableView = where(Blocked=filter(" ")); Editable = false; InsertAllowed = false; DeleteAllowed = false; ModifyAllowed = false; layout { area(Content) { repeater(GroupName) { field(CustomerNo; Rec. "No.") { ApplicationArea = All; ToolTip = 'CustomerNo'; } field(CustomerName; Rec.Name) { ApplicationArea = All; ToolTip = 'CustomerName'; } field(CustomerCity; Rec.City) { ApplicationArea = All; ToolTip = 'CustomerCity'; } field(CustomerCountry; Rec."Country/Region Code") { ApplicationArea = All; ToolTip = 'CustomerCountry'; } } } } }Salve o objeto .al usando Ctrl + S.
Para criar uma consulta baseada na tabela Customer Ledger Entry, siga estas etapas:
No Visual Studio Code, adicione um novo arquivo
.alao seu projeto e nomeie-o comoCustomerLedgers.Query.al.Use o trecho tquery para criar o esqueleto da nova consulta:
Altere o item de dados de forma que ele use a tabela Customer Ledger Entry e defina a propriedade DataAccessIntent da consulta como ReadOnly.
QueryType = Normal;DataAccessIntent = ReadOnly;Adicione colunas à consulta. Faça isso para todos os campos que você deseja que essa consulta retorne como colunas:
column(CustomerNo; "Customer No.") { } column(PostingDate; "Posting Date") { } column(Amount; "Amount (LCY)") { }Remova tudo o mais que o trecho tquery adicionou ao seu objeto.
Sua consulta agora deve ter esta aparência:
query 50101 CustomerLedgers { QueryType = Normal; DataAccessIntent = ReadOnly; elements { dataitem(CustomerLedgers; "Cust. Ledger Entry") { column(CustomerNo; "Customer No.") { } column(PostingDate; "Posting Date") { } column(Amount; "Amount (LCY)") { } } } }Agora você pode aplicar filtros à consulta para remover linhas da tabela que não são necessárias no conjunto de dados. Para fazer isso, utilize a propriedade DataItemTableFilter do item de dados, adicione colunas de filtro ou use o gatilho de consulta OnBeforeOpen.
Mais informações sobre a filtragem de objetos de consulta estão disponíveis aqui: Filtros de consulta
Agora você criou um novo objeto de página e um novo objeto de consulta. Você pode ajustar ainda mais os objetos de página e de consulta adicionando mais campos ou filtros. Neste exemplo, vamos deixá-los como estão no momento.
A próxima etapa é verificar se os objetos de página e de consulta são publicados automaticamente como serviços Web, de modo que o Power BI possa se conectar e importar os dados. Para isso, você precisa adicionar uma coleção de serviços Web à extensão. Em seguida, a coleção de serviços Web precisa de uma entrada de serviço Web para cada objeto que você deseja publicar como um serviço Web.
Para criar a coleção de serviços Web, siga estas etapas:
No Visual Studio Code, adicione um novo arquivo .al ao seu projeto e nomeie-o
webservices.xml.Use o trecho twebservices para criar o esqueleto da coleção de serviços Web.
O arquivo webservices.xml agora terá a seguinte aparência:
<?xml version="1.0" encoding="UTF-8"?> <ExportedData> <TenantWebServiceCollection> <TenantWebService> <ObjectType>Page</ObjectType> <ServiceName>serviceName</ServiceName> <ObjectID>objectId</ObjectID> <Published>false</Published> </TenantWebService> </TenantWebServiceCollection> </ExportedData>Agora, vamos alterar essa coleção de serviços Web de forma que ela inclua nosso novo objeto de página e de consulta. Use o código a seguir como exemplo:
<?xml version="1.0" encoding="UTF-8"?> <ExportedData> <TenantWebServiceCollection> <TenantWebService> <ObjectType>Page</ObjectType> <ServiceName>CustomerPage_PowerBI</ServiceName> <ObjectID>50101</ObjectID> <Published>true</Published> </TenantWebService> <TenantWebService> <ObjectType>Query</ObjectType> <ServiceName>CustomerLedgersQuery_PowerBI</ServiceName> <ObjectID>50101</ObjectID> <Published>true</Published> </TenantWebService> </TenantWebServiceCollection> </ExportedData>Para cada página ou consulta que você precisa publicar como um serviço Web no Business Central, é preciso criar uma entrada nesse arquivo XML.
Agora você está pronto para publicar e instalar essa extensão na sua área restrita do Business Central. Para fazer isso, siga estas etapas:
No Visual Studio Code, acesse a Paleta de Comandos e selecione a opção: AL: Publicar sem depurar.
Aguarde até que a extensão seja publicada. Quando terminar, 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 abra a página de serviços Web e filtre-a no _PowerBI.
A nova página e consulta agora são publicadas como serviços Web.
Como explicado em outra unidade deste módulo, Usando o Business Central como uma fonte de dados no Power BI, você agora pode usar o Power BI Desktop e ver esses novos serviços Web e APIs, usando o Conector do Business Central para Power BI.