New to Kestra?
Use blueprints to kickstart your first workflows.
Schedule T-SQL queries against a Microsoft Fabric Warehouse with Kestra. Authenticate with a service principal, store results, run data quality checks.
Run a scheduled T-SQL query against a Microsoft Fabric Warehouse and land the result set in Kestra internal storage, ready for downstream tasks. This blueprint solves a common gap for Fabric teams: turning ad hoc Warehouse SQL into a reliable, observable, version-controlled pipeline that authenticates with a service principal, runs on a cron schedule, and hands results to alerting, exports, or transformations without manual clicks in the Fabric portal.
daily trigger (io.kestra.plugin.core.trigger.Schedule) fires every morning at 06:00 using the cron expression 0 6 * * *.query_warehouse task (io.kestra.plugin.microsoft.fabric.warehouse.Query) authenticates to Fabric with a service principal (tenantId, clientId, clientSecret), connects to the Warehouse via sqlEndpointId and warehouseId, and runs the sql statement, here a 30 day revenue aggregation grouped by product category.fetchType: STORE, the result set is written as an ION file to Kestra internal storage, which keeps memory flat regardless of row count.notify task (io.kestra.plugin.core.log.Log) logs the row count and storage URI via {{ outputs.query_warehouse.size }} and {{ outputs.query_warehouse.uri }}.Fabric's built in scheduling runs pipelines inside Fabric, but it cannot easily react to external events, chain Warehouse results into Slack, email, S3, or dbt, or give you declarative YAML you keep in Git. Kestra adds event and schedule triggers, automatic retries, full execution lineage and replay, and a declarative definition you version control, filling the orchestration gap a Warehouse query engine alone leaves open.
sqlEndpointId and Warehouse item GUID (warehouseId).FABRIC_TENANT_ID: Entra ID tenant ID.FABRIC_CLIENT_ID: service principal application (client) ID.FABRIC_CLIENT_SECRET: service principal client secret.FABRIC_TENANT_ID, FABRIC_CLIENT_ID, and FABRIC_CLIENT_SECRET as Kestra secrets.sql_endpoint_id (the server name prefix before .datawarehouse.fabric.microsoft.com) and warehouse_id (the Warehouse item GUID).sql with your own statement.cron expression, then run the flow.fetchType to FETCH for small in memory result sets, FETCH_ONE for scalar lookups, or NONE for DDL and DML statements.Schedule trigger with an event trigger to run on data arrival.outputs.query_warehouse.size and branch on failure.