New to Kestra?
Use blueprints to kickstart your first workflows.
Extract a PostgreSQL table and upload it as CSV into a Microsoft Fabric Lakehouse on OneLake with Kestra. Build date-partitioned Bronze-layer ingestion pipelines.
Land operational data into Microsoft Fabric without hand-built scripts or fragile cron jobs. This blueprint extracts rows from a PostgreSQL database and uploads the result as a CSV file into a Microsoft Fabric Lakehouse through OneLake, giving you a repeatable database-to-Lakehouse ingestion path. It solves the common gap between a transactional database and the Fabric analytics layer: getting yesterday's records into a Lakehouse landing zone, partitioned by date, ready for Spark, notebooks, or SQL endpoints.
extract task (io.kestra.plugin.jdbc.postgresql.CopyOut) runs a SQL query (SELECT * FROM orders WHERE created_at::date = current_date - 1) and writes the result to Kestra internal storage as a CSV with a header row (format: CSV, header: true).upload_to_onelake task (io.kestra.plugin.microsoft.fabric.onelake.Upload) takes that file from outputs.extract.uri and uploads it to the target Lakehouse, addressed by workspaceId and itemId (the Fabric workspace and Lakehouse GUIDs).filePath (raw/orders/{{ now() | dateFormat('yyyy-MM-dd') }}/orders.csv) builds a date-partitioned folder layout in OneLake so each run lands in its own dated path.pluginDefaults for PostgreSQL, keeping the task definitions clean and reusable.uri output (the OneLake path) ready to chain into downstream Fabric jobsFabric pipelines and OneLake do not orchestrate your upstream databases. Kestra closes that gap: event-driven and scheduled triggers, automatic retries on transient failures, full execution lineage across the extract and upload steps, and a declarative YAML definition you can version and review. You get one place to coordinate the database query and the Fabric load, with visibility the Fabric scheduler alone cannot provide for external sources.
pluginDefaults for another JDBC source)FABRIC_TENANT_ID: Entra tenant ID for the service principalFABRIC_CLIENT_ID: service principal application (client) IDFABRIC_CLIENT_SECRET: service principal client secretDB_PASSWORD: password for the PostgreSQL userFABRIC_TENANT_ID, FABRIC_CLIENT_ID, FABRIC_CLIENT_SECRET, and DB_PASSWORD as Kestra secrets.workspace_id and lakehouse_id variables to your Fabric GUIDs.url, username, and database name in pluginDefaults.filePath to match your table and partition strategy.Files/ area.CopyOut for another JDBC plugin (MySQL, SQL Server, Oracle) to source from a different database.