Integrazione con data warehouse

Dai documenti alle righe BigQuery, pronte per le join

Holofin legge PDF e scansioni e scrive ogni campo in una tabella BigQuery del vostro progetto, nella regione UE che scegliete.

Lumen Logistique SAS
BULLETIN DE PAIE
Période du 01/09/2026 au 30/09/2026
SalariéCamille Martin
EmploiResponsable d'entrepôt, CDI
Heures151,67
Salaire brut3 450,00
Net à payer avant impôt2 689,12
Net payé2 451,37

✓7 campi caricati

!1 da verificare

Documento letto da Holofin e caricato in BigQuery: busta paga. È un esempio: tutti i nomi e i numeri sono inventati.

Come funziona

  1. 1

    Collegate BigQuery una sola volta

    Create un ruolo con permessi di inserimento su un solo schema e incollatene le credenziali in Holofin. Holofin crea la tabella al primo caricamento e non vede nient'altro: BigQuery gli mostra solo quello schema.

  2. 2

    Inviate i documenti come fate già

    Caricamento nell'app, inoltro via email o chiamata API. Holofin classifica ogni file, divide i plichi in singoli documenti e legge i campi di ciascun tipo.

  3. 3

    Interrogate le righe

    Ogni campo arriva come una riga, con la sua confidenza, la pagina di provenienza e un flag needs_review. BigQuery le tratta come qualsiasi altra sorgente: unitele alle vostre tabelle.

Come scrive il connettore BigQuery

Holofin scrive tramite la BigQuery Storage Write API in modalità committed: ogni riga è interrogabile appena scritta e non viene mai caricata due volte. Usa un service account con il ruolo BigQuery Data Editor su un solo dataset, nella location che scegliete (EU per impostazione predefinita).

L'unico permesso di cui Holofin ha bisogno:

-- Service account: [email protected]
GRANT `roles/bigquery.dataEditor`
ON SCHEMA `holofin-analytics.extracted`
TO "serviceAccount:[email protected]";

La tabella scritta da Holofin

Una riga per campo, così un nuovo tipo di documento non modifica mai la tabella. Le colonne sono le stesse su ogni piattaforma; i tipi sono quelli che usa BigQuery.

`holofin-analytics.extracted.document_fields`
document_idSTRINGL'identificativo Holofin del documento, stabile tra un caricamento e l'altro.
document_typeSTRINGLa classe assegnata da Holofin al documento: supplier_invoice, payslip, bank_statement e così via.
fieldSTRINGIl nome del campo, in snake_case, come definito nel vostro schema di estrazione.
valueSTRINGIl valore come testo normalizzato: date ISO, punto come separatore decimale, IBAN senza spazi.
confidenceFLOATTra 0 e 1. Quanto Holofin è sicuro del valore.
pageINTEGERLa pagina del file di origine su cui è stato letto il valore.
bboxARRAY<FLOAT>La posizione su quella pagina: x, y, larghezza, altezza, in frazioni della pagina.
needs_reviewBOOLEANTrue quando la confidenza è bassa o una regola non è rispettata, per esempio un saldo che non quadra.
reviewed_bySTRINGChi ha confermato o corretto il valore in Holofin, una volta fatto.
loaded_atTIMESTAMPQuando è stata scritta la riga. Le correzioni scrivono una nuova riga; vale la più recente.

Interrogare i dati in BigQuery

Stipendio netto medio per datore di lavoro sulle buste paga della settimana, escludendo i valori ancora in attesa di revisione:

-- Net pay declared on payslips this week, per employer,
-- keeping only fields nobody needs to look at again
SELECT
  employer.value AS employer,
  COUNT(*) AS payslips,
  ROUND(AVG(SAFE_CAST(net.value AS NUMERIC)), 2) AS avg_net_paid
FROM `holofin-analytics.extracted.document_fields` AS net
JOIN `holofin-analytics.extracted.document_fields` AS employer
  USING (document_id)
WHERE net.field = 'net_paid'
  AND employer.field = 'employer_name'
  AND NOT net.needs_review
  AND net.loaded_at >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
GROUP BY employer
ORDER BY payslips DESC

Sicurezza

  • I documenti sono elaborati in Europa, su server OVHcloud in Francia certificati ISO 27001.
  • Holofin scrive solo nello schema che autorizzate. Non può leggere le vostre altre tabelle.
  • La conservazione dei file di origine in Holofin si imposta per organizzazione, da zero data retention a conservazione illimitata. Le righe nel vostro data warehouse seguono le vostre policy.
  • GDPR: Holofin agisce come vostro responsabile del trattamento. Nessun documento lascia l'Unione europea.

Domande frequenti

La tabella è partizionata?

Sì. Holofin la crea partizionata per giorno su loaded_at e con clustering su document_type e field, così le query filtrate sui documenti recenti scansionano pochi dati.

I dati possono restare nell'UE?

Sì. Il dataset si trova nel vostro progetto e nella location impostata alla creazione, per esempio EU o europe-west9 (Parigi). Holofin stesso elabora i documenti in Francia.

In quanto tempo i campi compaiono in BigQuery?

Pochi secondi dopo la lettura del documento. La maggior parte dei documenti viene letta in meno di un minuto, quindi un file inviato via email è di solito interrogabile in BigQuery un minuto dopo.

Cosa succede quando un revisore corregge un valore?

Holofin scrive una nuova riga per quel campo con il valore corretto, needs_review a false e reviewed_by valorizzato. Tenete l'ultima riga per documento e campo per avere lo stato attuale, oppure tutte le righe per un audit trail completo.

Si possono scegliere i campi da caricare?

Sì. Ogni tipo di documento ha uno schema di estrazione in Holofin. Aggiungete, rinominate o rimuovete i campi lì e i documenti successivi verranno caricati con i nuovi nomi. La struttura della tabella non cambia.

Quali documenti legge Holofin?

Qualsiasi documento aziendale inviato come PDF, scansione o foto: fatture, buste paga, estratti conto, avvisi fiscali, visure camerali, documenti d'identità, certificati. Holofin verifica anche che ogni file non sia stato manomesso e può segnalare un documento sospetto prima che ci si fidi dei suoi campi.

Provi Holofin sui Suoi documenti.

Ogni valore collegato alla pagina da cui proviene, ogni PDF controllato contro le manomissioni, regole verificate sull'intera pratica.

Holofin