O Microsoft Power BI é um software de visualização de dados interativo com foco principal nas informações de negócios. A combinação desta ferramenta com o serviço de API do Fusion Operations (documentação disponível aqui) permite-lhe obter os seus dados, criar análises e painéis no Power BI.
Neste artigo, abordaremos os passos necessários.
Obter os dados a partir do Fusion Operations
1. Abra um novo Power BI, clique em (1) "Get Data" (Obter dados) e (2) "Blank Query" (Consulta em branco).
2. No menu superior, selecione (1) "Manage Parameters" (Gerir parâmetros) e, em seguida, crie um novo parâmetro.
Crie os seguintes parâmetros:
2.1. apiKey, com o tipo definido como "Text" (Texto) e obrigatório. O valor para este parâmetro pode ser obtido a partir do seu perfil do Autodesk Fusion Operations (1).
2.2. apiSecret, com o tipo definido como "Text" (Texto) e obrigatório. O valor para este parâmetro também pode ser obtido a partir do seu perfil do Autodesk Fusion Operations (2).
2.3. lastNDays, com o tipo definido como "Decimal Number" (Número decimal) e obrigatório. Este parâmetro determinará quantos dias de dados serão obtidos a partir do Fusion Operations. Tenha em atenção que, quanto maior for este número, mais tempo vai demorar a atualização do painel.
2.4. retryAfter, com o tipo definido como "Decimal Number" (Número decimal) e obrigatório. Este parâmetro será utilizado como o buffer (em segundos) entre os pedidos consecutivos a serem feitos à API do Fusion Operations. Defina-o como 0,25.
Os quatro parâmetros estarão visíveis no lado esquerdo do ecrã.
3. Selecione "New Source" (Nova origem) e, em seguida, "Blank Query" (Consulta em branco).
4. No menu esquerdo, faça duplo clique na consulta (1), mude o respetivo nome para "getProductionRecords" e clique em (2) "Advanced Editor" (Editor avançado).
5. Copie o texto abaixo e cole-o no Editor avançado, para criar uma função no Power BI.
(page as number) =>let Source = Json.Document(Web.Contents("https://fusionoperations.autodesk.com/api/authorization", [Headers= [#"Content-Type"="application/json", Authorization="Basic " & Binary.ToText(Text.ToBinary(apiKey & ":" & apiSecret), 0), #"Accept"="*/*"], Content = Json.FromValue([scopes = {"productions_write"}, random=Number.Random()]) ])), access_token= Record.ToTable(Source){2}[Value], endpointUrl = "https://fusionoperations.autodesk.com/api/productions", startTime = Number.ToText(Date.Year(Date.AddDays(DateTime.FixedLocalNow(),-lastNDays))) & "-" & Number.ToText(Date.Month(Date.AddDays(DateTime.FixedLocalNow(),-lastNDays))) & "-" & Number.ToText(Date.Day(Date.AddDays(DateTime.FixedLocalNow(),-lastNDays))), Origin = Json.Document(Web.Contents(endpointUrl, [Query=[access_token = access_token, #"start-time-after" = startTime, #"worker-name" = "true", page = Number.ToText(page)]]))in Origin
6. Repita os passos 3 e 4, mas mude o nome da nova função para "allProductionRecords". Caso esteja a tentar obter dados através da API além dos registos de produção, altere o nome da consulta e o "endpointUrl" em conformidade.
7. Repita o passo 5, mas copie e cole o conteúdo abaixo.
let Query = List.Generate(()=>[Result = if List.IsEmpty(getProductionRecords(1)) then null else getProductionRecords(1), page=1],each [Result]<>null,each [MidRes = Function.InvokeAfter(()=>getProductionRecords([page]+1), #duration(0,0,0,retryAfter)), Result = if List.IsEmpty(MidRes) then null else MidRes,page=[page]+1],each [Result])in Query
8. Deverá ter tudo pronto! Uma lista com os dados deve agora ser fornecida pelo Fusion Operations.
Processar os dados
1. Para processar os dados (que estão no formato JSON), clique em (1) "To Table" (Para a tabela).
2. Selecione as opções abaixo e prima ok.
3. Clique no (1) ícone de setas divergentes para expandir as listas e (2) em "Expand to New Rows" (Expandir para novas linhas).
4. Clique novamente no (1) ícone de setas divergentes para expandir os registos, selecione (2) as informações a serem processadas no Power BI, remova (3) a opção "Use original column as prefix" (Utilizar a coluna original como prefixo) e clique em (4) OK.
5. Clique em (1) nas setas divergentes das colunas relevantes a serem expandidas, que dependerão da análise a ser realizada.
Neste caso, expandiremos as colunas (i) operation (operação), (ii) worker (trabalhador), (iii) quantity (quantidade), (iv) work-time (tempo de trabalho), (v) start-time (tempo de início) e (vi) end-time (tempo de fim). Para obter uma melhor compreensão do significado de cada coluna, a opção "Use original column as prefix" (Utilizar a coluna original como prefixo) deve agora estar ativa (ponto de verificação 4).
6. Para cada coluna relevante, clique (1) no lado esquerdo do cabeçalho e defina os dados para o tipo correto.
Neste exemplo, operation.code e operation.product devem ser definidos como "text", worker.number deve ser definido como "whole number", "quantity" deve ser definida como "decimal number", "work-time" deve ser definido como "text" (teremos de processá-lo) e "start-time" e "end-time" devem ser definidos para "date/time/time zone".
7. Como referido, a coluna de duração deve ser processada, já que o Power BI não pode analisar "00H00m16s" para um campo de duração. Em vez disso, converteremos os valores nesta coluna em minutos.
7.1. Clique em (1) Add Column (Adicionar coluna) e (2) Custom Column (Coluna personalizada).
7.2. Nesta coluna personalizada, nomeie-a (1) como work-time-minutes (minutos de trabalho) e cole na caixa (2) a fórmula abaixo. Clique em (3) OK para enviar a fórmula e criar a coluna.
Number.From(Text.Start([#"work-time"],Text.Length([#"work-time"])-7))*60 +Number.From(Text.Middle([#"work-time"],Text.Length([#"work-time"])-6,2)) +Number.From(Text.Middle([#"work-time"],Text.Length([#"work-time"])-3,2))/60
7.3. Guarde a coluna "work-time-minutes" com o tipo "decimal number".
8. Também adicionaremos duas novas colunas dos campos "start-time" e "end-time". Estes campos serão nomeados como "start-day" (dia de início) e "end-day" (dia de fim). Estas duas colunas serão úteis para o painel final.
8.1. Selecione (1) a coluna, clique em (2) Date (Data) e selecione (3) Date Only (Apenas data).
8.2. Renomeie (1) a coluna como "start-date".
8.3. Repita o processo para a coluna de "end-time". Nomeie a coluna final como "end-date".
9. Selecione (1) o separador Home (Início) e clique em (2) Close and Apply (Fechar e aplicar).
Criar um painel simples
1. No ecrã seguinte, selecione (1) um tipo de painel. Selecionaremos um gráfico de barras agrupadas, mas pode ser selecionado qualquer outro. Em seguida, expanda (2) productionRecordsList.
2. Arraste (1) os campos de dados para os campos do painel.
3. Toque em (1) para personalizar o painel. Estas opções dependem do tipo de painel selecionado.
4. Adicione mais dados, visualizações e crie os seus painéis de produção personalizados!
Tenha em mente que a criação do painel acima exigiu um número substancialmente maior de passos em comparação com os que são descritos neste documento (como pode ver do lado direito da imagem, no menu Data (Dados)).
Resolução de problemas de erros
Ao obter os dados do Fusion Operations para o Power BI, podem ser apresentados certos erros. Abaixo pode encontrar uma lista e indicações sobre como resolvê-los:
1. Formula.Firewall: a consulta 'allProductionRecords' está a aceder origens de dados que têm níveis de privacidade que não podem ser utilizados em conjunto. Reconstrua esta combinação de dados.
Para corrigir este erro, siga os passos abaixo:
1.1 Clique em "Data source settings" (Definições de origem de dados).
1.2 Selecione (1) todas as entradas relacionadas com o Fusion Operations e clique em (2) "Edit Permissions" (Editar permissões).
1.3. Selecione o nível de privacidade para "Public" (Público). Não se esqueça de guardar as alterações.
2. Ocorreu um erro na consulta ‘’. DataSource.Error: Web.Contents com a opção Content apenas é suportado quando estabelece uma ligação anónima.
Detalhes:
DataSourceKind=Web
DataSourcePath=https://fusionoperations.autodesk.com/api/authorization
Para corrigir este erro, siga os passos abaixo:
2.1 Clique em "Data source settings" (Definições de origem de dados)
2.2 Selecione "https://fusionoperations.autodesk.com/api/authorization" e clique em "Edit Permissions" (Editar permissões)
2.3 Em "Credentials" (Credenciais), selecione "Edit..." (Editar)
2.4 No menu esquerdo, selecione (1) "Anonymous" (Anónimo). Não se esqueça de (2) guardar as alterações.
Se ainda tiver dúvidas, entre em contacto connosco através do chat em direto.
Precisa de ajuda? Peça a um especialista do Fusion Operations para entrar em contacto consigo aqui.