Com o Power BI, você pode obter insights valiosos a partir dos seus dados. Certifique-se de que o Power BI esteja instalado em um computador com sistema operacional Windows.
Conectar o Power BI ao Factorial permite consultar e analisar todas as informações da empresa disponíveis na API pública do Factorial.
Como integrar o Power BI ao Factorial
A única forma suportada de integração com o Power BI é utilizando a documentação disponível em https://apidoc.factorialhr.com/reference.
Primeiros passos
- No menu lateral, acesse Configurações. Role até Configuração avançada e clique em Chaves de API. Crie uma nova chave.
- Abra o Power BI Desktop e vá para o editor Power Query.
- Clique em “Obter dados” > “Mais” > “Consulta em branco”. Copie e cole os 3 scripts do Power BI (veja abaixo) em uma consulta em branco. Cada script corresponde a uma função (uma nova consulta).
3. Depois de criar as funções GetPage, GetAllPages e ListDataToTable, você deve executá-las usando sua chave API e a baseURL. A baseURL pode ser obtida no site de referência da API pública do Factorial (Bem-vindo(a) ao desenvolvimento com o Factorial). Para cada recurso (como Employees, ContractVersions, Shifts, etc.), execute a função ListDataToTable passando a chave API e a URL do endpoint da API (por exemplo: https://api.factorialhr.com/api/2024-10-01/resources/attendance/shifts). O resultado será uma tabela por recurso, que você poderá utilizar para criar seu relatório no Power BI. Depois de obter os recursos desejados, você pode salvar as consultas com o botão “Salvar” caso queira modificá-las posteriormente (por exemplo, para adicionar um novo recurso). Por fim, clique em “Fechar e aplicar” para sair do editor Power Query. Agora seus dados estão prontos para uso no Power BI.
4. Pronto! Agora você pode visualizar os dados na Visualização de Dados ou na Visualização de Relatórios. Em ambas, use o menu lateral direito para adicionar colunas com base nas funções chamadas no passo 3.
Scripts do Power BI
- Obter uma página de dados da API pública de um recurso – GetPage
= (baseURL as text, apiKey as text, page as number) =>
let
Url = baseURL & "?page=" & Text.From(page),
Response = Json.Document(Web.Contents(Url, [Headers=[#"x-api-key"= apiKey ]])),
Data = Response[data],
HasNextPage = Response[meta][has_next_page]
in
[Data = Data, HasNextPage = HasNextPage]
2. Obter todas as páginas de forma recursiva – GetAllPages
= let
Source = (baseURL as text, apiKey as text) =>
let
GetAllPages = (baseURL as text, apiKey as text, page as number, AccumulatedData as list) =>
let
CurrentPage = GetPage(baseURL, apiKey, page),
NewData = List.Combine({AccumulatedData, CurrentPage[Data]}),
NextStep = if CurrentPage[HasNextPage] then @GetAllPages(baseURL, apiKey, page + 1, NewData) else NewData
in
NextStep,
AllData = GetAllPages(baseURL, apiKey, 1, {})
in AllData
in
Source
3. Transformar a lista de dados em uma tabela – ListDataToTable
= let
Source = (baseURL as text, apiKey as text) =>
let
TableData = Table.FromList(GetAllPages(baseURL, apiKey), Splitter.SplitByNothing(), null, null)
in TableData
in
Source