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 |
|
Operators and sensors¶
PowerBIDatasetRefreshOperatorTriggers 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(defaultFalse— block until the refresh reaches a terminal status),timeout(seconds, default 7 days),check_interval(seconds, default 60).PowerBIDatasetRefreshSensorPolls a refresh triggered by the operator above until it reaches
Completed/Failed, pulling the request id from XCom viaxcom_task_id. RaisesPowerBIDatasetRefreshExceptionon aFailedstatus.
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