Con Power BI puoi ottenere informazioni utili dai tuoi dati. Assicurati di avere Power BI installato su un computer con sistema operativo Windows.
Collegare Power BI a Factorial ti permetterà di interrogare e analizzare tutte le informazioni aziendali esposte tramite l’API pubblica di Factorial.
Come integrare Power BI con Factorial
L’unico metodo supportato per integrare Power BI è utilizzare la documentazione disponibile su https://apidoc.factorialhr.com/reference.
Primi passi
- Nel menu laterale, vai su Impostazioni. Scorri verso il basso fino a Configurazione avanzata e clicca su Chiavi API. Crea una nuova chiave API.
- Apri Power BI Desktop e accedi all’editor Power Query.
- Clicca su "Ottieni dati" > “Altro” > “Query vuota”. Copia e incolla i tre script Power BI (vedi sotto) all’interno di una “query vuota”. Ogni script è una funzione (una nuova query).
3. Una volta create le tre funzioni: GetPage, GetAllPages e ListDataToTable, invocale passando la tua chiave API e la baseURL. La baseURL è disponibile nella documentazione di riferimento dell’API pubblica di Factorial (Benvenuto/a nello sviluppo con Factorial). Per ogni risorsa (come Employees, ContractVersions, Shifts, ecc.), dovrai invocare la funzione ListDataToTable passando la chiave API e l’URL dell’endpoint API (ad esempio: https://api.factorialhr.com/api/2024-10-01/resources/attendance/shifts). Otterrai una tabella per ogni risorsa, che potrai utilizzare per creare il tuo report in Power BI. Dopo aver definito le risorse desiderate, puoi salvare le query con il pulsante "Salva" in modo da poterle modificare in futuro (per esempio, per aggiungere una nuova risorsa). Infine, clicca su “Chiudi e applica” per uscire dall’editor Power Query. A questo punto, i tuoi dati saranno pronti per essere utilizzati in Power BI.
4. Tutto pronto. Ora puoi visualizzare i dati nella vista Dati o nella vista Report. In entrambi i casi, usa il menu laterale destro per aggiungere le colonne derivate dalle funzioni invocate nel passo 3.
Script per Power BI
- Recuperare una pagina di dati dall’API pubblica di una risorsa - 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. Recuperare tutte le pagine in modo ricorsivo - 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. Convertire i dati della lista in una tabella - ListDataToTable
= let
Source = (baseURL as text, apiKey as text) =>
let
TableData = Table.FromList(GetAllPages(baseURL, apiKey), Splitter.SplitByNothing(), null, null)
in TableData
in
Source