Data-Warehouse-Integration
Dokumente als BigQuery-Zeilen, bereit für Joins
Holofin liest PDFs und Scans und schreibt jedes Feld in eine BigQuery-Tabelle in Ihrem Projekt, in der EU-Region Ihrer Wahl.
| field | value | confidence | page | needs_review | |
|---|---|---|---|---|---|
| 1 | employer_name | Lumen Logistique SAS | 0.99 | 1 | false |
| 2 | employee_name | Camille Martin | 0.98 | 1 | false |
| 3 | pay_period | 2026-09 | 0.99 | 1 | false |
| 4 | contract_type | CDI | 0.95 | 1 | false |
| 5 | gross_salary | 3450.00 | 0.98 | 1 | false |
| 6 | net_before_tax | 2689.12 | 0.96 | 1 | false |
| 7 | net_paid | 2451.37 | 0.66 | 1 | true |
✓7 Felder geladen
!1 zur Prüfung markiert
So funktioniert es
- 1
BigQuery einmal verbinden
Legen Sie eine Rolle mit Schreibrechten auf ein einziges Schema an und hinterlegen Sie ihre Zugangsdaten in Holofin. Holofin erstellt die Tabelle beim ersten Laden; darüber hinaus gibt BigQuery nichts preis.
- 2
Dokumente wie gewohnt senden
Per Upload in der App, per E-Mail-Weiterleitung oder über die API. Holofin klassifiziert jede Datei, trennt Sammeldateien in einzelne Dokumente und liest die Felder jedes Dokumenttyps.
- 3
Zeilen abfragen
Jedes Feld landet als eigene Zeile, mit Konfidenz, Quellseite und needs_review-Flag. BigQuery behandelt diese Zeilen wie jede andere Quelle: Verknüpfen Sie sie mit Ihren eigenen Tabellen.
So schreibt der BigQuery-Connector
Holofin schreibt über die BigQuery Storage Write API im Committed-Modus: Jede Zeile ist sofort nach dem Schreiben abfragbar und wird nie doppelt geladen. Dafür nutzt Holofin ein Dienstkonto mit der Rolle BigQuery Data Editor auf einem einzigen Dataset, am Standort Ihrer Wahl (standardmäßig EU).
Die einzige Berechtigung, die Holofin braucht:
-- Service account: [email protected] GRANT `roles/bigquery.dataEditor` ON SCHEMA `holofin-analytics.extracted` TO "serviceAccount:[email protected]";
Die Tabelle, die Holofin schreibt
Eine Zeile pro Feld, damit ein neuer Dokumenttyp die Tabelle nie verändert. Die Spalten sind überall dieselben; die Datentypen tragen die Namen, die BigQuery verwendet.
| document_id | STRING | Holofins Kennung des Dokuments, stabil über erneute Ladevorgänge hinweg. |
|---|---|---|
| document_type | STRING | Die Klasse, die Holofin dem Dokument zugewiesen hat: supplier_invoice, payslip, bank_statement und so weiter. |
| field | STRING | Der Feldname in snake_case, wie in Ihrem Extraktionsschema definiert. |
| value | STRING | Der Wert als normalisierter Text: ISO-Datumsangaben, Punkt als Dezimaltrennzeichen, IBANs ohne Leerzeichen. |
| confidence | FLOAT | Zwischen 0 und 1. Wie sicher sich Holofin bei dem Wert ist. |
| page | INTEGER | Die Seite der Quelldatei, auf der der Wert gelesen wurde. |
| bbox | ARRAY<FLOAT> | Die Position auf dieser Seite: x, y, Breite, Höhe, als Anteile der Seite. |
| needs_review | BOOLEAN | True, wenn die Konfidenz niedrig ist oder eine Regel fehlschlägt, etwa ein Saldo, der nicht aufgeht. |
| reviewed_by | STRING | Wer den Wert in Holofin bestätigt oder korrigiert hat, sobald das geschehen ist. |
| loaded_at | TIMESTAMP | Wann die Zeile geschrieben wurde. Korrekturen schreiben eine neue Zeile; die jüngste gilt. |
Abfragen in BigQuery
Durchschnittliches Nettogehalt pro Arbeitgeber auf den Abrechnungen dieser Woche, ohne Werte, die noch auf Prüfung warten:
-- 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
Sicherheit
- Die Dokumente werden in Europa verarbeitet, auf ISO-27001-zertifizierten OVHcloud-Servern in Frankreich.
- Holofin schreibt ausschließlich in das Schema, das Sie freigeben. Ihre übrigen Tabellen kann Holofin nicht lesen.
- Die Aufbewahrung der Quelldateien in Holofin wird pro Organisation festgelegt, von Zero Data Retention bis unbegrenzt. Für die Zeilen in Ihrem Warehouse gelten Ihre eigenen Richtlinien.
- DSGVO: Holofin handelt als Ihr Auftragsverarbeiter. Kein Dokument verlässt die Europäische Union.
Häufig gestellte Fragen
Ist die Tabelle partitioniert?
Ja. Holofin legt sie mit Tagespartitionen auf loaded_at und Clustering auf document_type und field an, damit Abfragen auf aktuelle Dokumente wenig Daten scannen.
Können die Daten in der EU bleiben?
Ja. Das Dataset liegt in Ihrem Projekt, an dem Standort, den Sie beim Anlegen wählen, etwa EU oder europe-west9 (Paris). Holofin selbst verarbeitet die Dokumente in Frankreich.
Wie schnell erscheinen die Felder in BigQuery?
Wenige Sekunden, nachdem das Dokument gelesen wurde. Die meisten Dokumente sind in unter einer Minute gelesen, eine per E-Mail gesendete Datei ist in BigQuery also meist eine Minute später abfragbar.
Was passiert, wenn jemand einen Wert korrigiert?
Holofin schreibt für dieses Feld eine neue Zeile mit dem korrigierten Wert, needs_review auf false und ausgefülltem reviewed_by. Behalten Sie pro Dokument und Feld die jüngste Zeile für den aktuellen Stand, oder alle Zeilen für einen vollständigen Audit-Trail.
Kann ich festlegen, welche Felder geladen werden?
Ja. Jeder Dokumenttyp hat in Holofin ein Extraktionsschema. Fügen Sie dort Felder hinzu, benennen Sie sie um oder entfernen Sie sie, und die nächsten Dokumente werden mit den neuen Namen geladen. An der Tabellenstruktur ändert sich nichts.
Welche Dokumente liest Holofin?
Jedes Geschäftsdokument als PDF, Scan oder Foto: Rechnungen, Gehaltsabrechnungen, Kontoauszüge, Steuerbescheide, Handelsregisterauszüge, Ausweise, Bescheinigungen. Holofin prüft außerdem jede Datei auf Manipulationen und kann ein verdächtiges Dokument markieren, bevor man seinen Feldern vertraut.
Testen Sie Holofin mit Ihren eigenen Dokumenten.
Jeder Wert mit der Seite verknüpft, von der er stammt, jedes PDF auf Manipulation geprüft, Regeln über die gesamte Fallakte geprüft.