airflow-powerbi-provider

A hook, operator, and sensor for triggering and tracking Power BI dataset refreshes from an Airflow DAG, authenticating against the Power BI REST API with an Azure AD app-only (client credentials) grant.

Connection setup

For a screenshot walkthrough of creating this connection in the Airflow UI, see Power BI connection.

Create an Airflow connection of type http (power_bi, default connection id powerbi_default):

Field

Value

Login

Azure AD app registration client ID

Password

Azure AD app registration client secret

Extra

{"tenant_id": "<Azure tenant ID>"}

Operators and sensors

PowerBIDatasetRefreshOperator

Triggers a dataset refresh (POST .../datasets/{id}/refreshes) and pushes the resulting Power BI request id to XCom (powerbi_dataset_refresh_id). Parameters: conn_id, dataset_id, group_id (the workspace id), wait_for_termination (default False — block until the refresh reaches a terminal status), timeout (seconds, default 7 days), check_interval (seconds, default 60).

PowerBIDatasetRefreshSensor

Polls a refresh triggered by the operator above until it reaches Completed/Failed, pulling the request id from XCom via xcom_task_id. Raises PowerBIDatasetRefreshException on a Failed status.

Usage

from PowerBI_Operator.operators.powerbi_refresh_dataset_operator import (
    PowerBIDatasetRefreshOperator,
)
from PowerBI_Operator.sensors.powerbi_refresh_dataset_sensor import (
    PowerBIDatasetRefreshSensor,
)

refresh = PowerBIDatasetRefreshOperator(
    task_id="refresh_dataset",
    conn_id="powerbi_default",
    dataset_id="<dataset-id>",
    group_id="<workspace-id>",
)

wait_for_refresh = PowerBIDatasetRefreshSensor(
    task_id="wait_for_refresh",
    conn_id="powerbi_default",
    dataset_id="<dataset-id>",
    group_id="<workspace-id>",
    xcom_task_id="refresh_dataset",
)

refresh >> wait_for_refresh