Hier is een praktische, “ATS-proof” manier om Django te verbinden met Power BI, plus welke formaten Power BI vlot kan inladen.
1) Vier beproefde integratie-patronen
A. Direct (Database) – snelste weg
- Wat: Power BI (Desktop/Service) koppelt rechtstreeks op jullie DB (bv. PostgreSQL).
- Hoe: Power BI PostgreSQL-connector (+ on-premises data gateway voor refresh vanuit de cloud).
- Gebruik wanneer: je reeds een nette rapportage-schema/“star schema” hebt (fact & dimensions).
- Pro: geen extra exportlaag in Django nodig, hoge performance met juiste indexen.
- Let op: data-toegang, RLS (row-level security), en gateway-beheer.
B. Bestands-exports – robuust en goedkoop
- Wat: Django genereert geplande CSV/Parquet (of XLSX) naar een veilige locatie (SharePoint/OneDrive/Azure Blob/S3/Web).
- Hoe: cron/Celery-taak in Django → wegschrijven als
*.csv
of*.parquet
→ Power BI “Get data” (Web/SharePoint/Blob). - Gebruik wanneer: je deterministische snapshots en eenvoudige herlaadbaarheid per entiteit/tenant wilt.
- Pro: zeer transparant, makkelijk te auditen/archiveren.
- Let op: bestandsrotatie, naamconventies, incrementele refresh.
C. API/OData – flexibel en cloud-native
- Wat: Django biedt een REST-/OData-endpoint met paginatie & filters.
- Hoe: Django REST Framework (JSON), of OData v4; Power BI “Web” of “OData feed”.
- Gebruik wanneer: je near-real-time of fijne filters nodig hebt (datum, entiteit, status).
- Pro: geen gateway nodig indien publiek/secure via internet; herbruikbaar door andere apps.
- Let op: auth (OAuth2 via Entra ID), throttling, query-folding/filters server-side.
D. Power BI “Push” datasets – event/stream-gedreven
- Wat: Django “pusht” records naar een Power BI push/streaming dataset via Power BI REST API.
- Gebruik wanneer: je dashboards wil updaten in (near) real-time (selectiestatussen, SLA, wachtrijen).
- Pro: zeer lage latency naar het dashboard.
- Let op: governance, lifecycle van datasets, beperkingen op schema-wijzigingen.
2) Formaten die Power BI moeiteloos eet
-
CSV (aanbevolen voor batch/snapshots):
- Encodering: UTF-8
- Scheiding: komma of puntkomma (consistent)
- Datum/tijd: ISO-8601 (
2025-10-19T13:45:00Z
of2025-10-19
) - Decimaal: punt (
.
) is het veiligst - Nulls: leeg laten of expliciet
NULL
- Parquet (aanbevolen voor grote datasets): compact, typesafe, sneller laden.
- JSON (via “Web” connector): voor API’s; best in records/array per endpoint, niet genest of met duidelijke “expand” strategie.
- OData v4 (via “OData Feed”): ideaal voor query-able endpoints met filters en metadata.
- Excel (XLSX): bruikbaar, maar minder robuust voor grote/automatische pipelines.
- PostgreSQL connector: geen “bestand”, maar rechtstreeks naar tabel-/view-schema.
Comments
Post a Comment