Conexão do Fusion Operations com o Power BI

Saiba como obter seus dados no Power BI para criar seus painéis

David Andrade avatar
Escrito por David Andrade
Atualizado há mais de uma semana

O Microsoft Power BI é um software de visualização de dados interativos com foco principal na inteligência de negócios. Combinar essa ferramenta com o serviço de API do Fusion Operations (documentação disponível aqui) permite obter seus dados, análises de construção e painéis no Power BI.

Neste artigo, descreveremos as etapas necessárias.

Recuperação de dados do Fusion Operations

1. Abra um novo Power BI, clique em (1) "Get Data" e (2) "Blank Query".

2. No menu superior, selecione (1) "Gerenciar parâmetros" e, em seguida, crie um novo parâmetro.

Crie os seguintes parâmetros:

2.1. apiKey, com o tipo definido como "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 "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 "Número decimal" e obrigatório. Este parâmetro determinará quantos dias de dados serão recuperados do Fusion Operations. Tenha em mente que, quanto maior for esse número, mais tempo será necessário para que o painel seja atualizado.

2.4. retryAfter, com o tipo definido como "Número decimal" e obrigatório. Este parâmetro será usado como o buffer (em segundos) entre as solicitações consecutivas a serem feitas para a API do Fusion Operations. Defina-o como 0,25.

Todos os quatro parâmetros estarão visíveis no lado esquerdo da tela.

3. Selecione "Nova origem" e, em seguida, "Consulta em branco".

4. No menu à esquerda, clique duas vezes na consulta (1) e renomeie-a como "getProductionRecords" e clique em (2) "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 as etapas 3 e 4, mas renomeie a nova função "allProductionRecords". Caso você esteja tentando obter dados por meio da API, além dos registros de produção, altere o nome da consulta e a "endpointUrl" adequadamente.

7. Repita a etapa 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. Agora tudo deve estar pronto para você continuar! Uma lista com os dados agora deve ser retornada pelo Fusion Operations.

Processamento dos dados

1. Para processar os dados (que estão no formato JSON), clique em (1) "To Table".

2. Selecione as opções abaixo e pressione OK.

3. Clique no ícone de setas divergentes (1) para expandir as listas e em "Expand to New Rows" (2).

4. Clique novamente no ícone de setas divergentes (1) para expandir os registros, selecione as informações a serem processadas (2) no Power BI, remova a opção "Use original column as prefix" (3) e clique OK (4).

5. Clique em nas setas divergentes (1) das colunas relevantes a serem expandidas, que dependerão da análise a ser executada.

Neste caso, expandiremos as colunas (i) operation, (ii) worker, (iii) quantity, (iv) work-time, (v) start-time, and (vi) end-time. Para obter uma melhor compreensão do que cada coluna significa, a opção "Use original column as prefix" deve estar ativa (ponto de verificação 4).

6. Para cada coluna relevante, clique em (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 que processá-lo) e start-time e end-time devem ser definidos como date/time/timezone.

7. Como mencionado, 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 desta coluna em minutos.

7.1. Clique em (1) Add Column e (2) Custom Column.

7.2. Nesta coluna personalizada, nomeie-a como (1) work-time-minutes 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. Salve a coluna "work-time-minutes" com o tipo "decimal number".

8. Também adicionaremos duas novas colunas dos campos start-time e end-time. Esses campos serão nomeados start-day e end-day. Essas duas colunas serão úteis para o painel final.

8.1. Selecione (1) a coluna, clique em (2) Date e selecione (3) Date Only.

8.2. Renomeie (1) a coluna "start-date".

8.3. Repita o processo para a coluna end-time. Nomeie a coluna final como "end-date".

9. Selecione (1) a guia Home e clique em (2) Close & Apply.

Criação de um painel simples

1. Na tela a seguir, selecione (1) um tipo de painel. Selecionaremos um gráfico de barras agrupadas, mas qualquer outro pode ser selecionado. 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. Essas opções dependerão do tipo de painel selecionado.

4. Adicione mais dados, visualizações e crie seus painéis de produção personalizados!

Tenha em mente que a criação do painel acima exigiu um número substancialmente maior de etapas em comparação com as descritas neste documento (como você pode ver no lado direito da imagem, no menu Data).

Solução de problemas de erros

Ao levar os dados do Fusion Operations para o Power BI, alguns erros podem ser retornados. Você pode encontrar uma lista abaixo e como resolvê-los:

1. Formula.Firewall: Query 'allProductionRecords' is accessing data sources that have privacy levels which cannot be used together. Please rebuild this data combination.

Para corrigir esse erro, siga as etapas abaixo:

1.1 Clique em "Data source settings"

1.2 Selecione (1) todas as entradas relacionadas ao Fusion Operations e clique em (2) "Edit Permissions"

1.3. Selecione o nível de privacidade "Public". Não se esqueça de salvar as alterações.

2. An error occurred in the ‘’ query. DataSource.Error: Web.Contents with the Content option is only supported when connecting anonymously.
Detalhes:
DataSourceKind=Web
DataSourcePath=https://fusionoperations.autodesk.com/api/authorization

Para corrigir esse erro, siga as etapas abaixo:

2.1 Clique em "Data source settings"

2.2 Selecione "https://fusionoperations.autodesk.com/api/authorization" e clique em "Editar permissões"

2.3 Em "Credentials", selecione "Edit..."

2.4 No menu esquerdo, selecione (1) "Anonymous". Não se esqueça de (2) salvar as alterações.

Se você ainda tiver dúvidas, sinta-se à vontade para entrar em contato com nosso recurso de bate-papo ao vivo.

Precisa de ajuda? Peça para um especialista do Fusion Operations entrar em contato com você aqui.

Respondeu à sua pergunta?