New to Kestra?
Use blueprints to kickstart your first workflows.
Refresh a Power BI dataset right after your warehouse load with Kestra. Wait for completion and confirm fresh dashboards in Slack.
End the "dashboard shows yesterday" problem. When the warehouse load and the Power BI refresh live on separate schedules, executives open reports that lag the data by hours. This blueprint chains io.kestra.plugin.powerbi.RefreshGroupDataset directly after the load step, so the semantic model refreshes the moment new data lands, and Slack confirms it.
load_warehouse (io.kestra.plugin.core.log.Log) stands in for your real ELT step. Swap it for your actual load, for example the dlt REST API to DuckDB blueprint or the federated Trino query blueprint, keeping the rest of the chain unchanged.refresh_dataset (io.kestra.plugin.powerbi.RefreshGroupDataset) authenticates with an Azure AD service principal (tenantId, clientId, clientSecret), triggers a refresh of the dataset in the given workspace, and polls every 10 seconds for up to 30 minutes because wait: true. If Power BI reports the refresh as failed, the task fails and the flow stops.notify posts the final refresh status to Slack, so the team knows the dashboards reflect the data that just landed.errors block posts a distinct Slack alert when either the load or the refresh fails, naming the flow and execution.Power BI's built-in scheduled refresh runs on a timer that knows nothing about your pipeline. Kestra makes the refresh an explicit step in the same flow as the load, so it runs exactly once per load, waits for a verified completion, feeds its status into notifications, and leaves a full execution history for every refresh.
groupId) and dataset id (datasetId) from the Power BI service URLs.AZURE_TENANT_ID: Azure AD tenant id.AZURE_CLIENT_ID: Azure AD application (client) id.AZURE_CLIENT_SECRET: Azure AD client secret.SLACK_WEBHOOK_URL: Slack incoming webhook URL.groupId and datasetId with your workspace and dataset ids.load_warehouse for your real load step.io.kestra.plugin.dlt.Run or io.kestra.plugin.jdbc.trino.Query.