# apache-airflow-microsoft-fabric-plugin **Repository Path**: mirrors_microsoft/apache-airflow-microsoft-fabric-plugin ## Basic Information - **Project Name**: apache-airflow-microsoft-fabric-plugin - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: dynamic-retry-delay - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-15 - **Last Updated**: 2025-06-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Apache Airflow Plugin for Microsoft Fabric Plugin. 🚀 ## Introduction A Python package that helps Data and Analytics engineers trigger run on demand job items of [Microsoft Fabric](https://www.microsoft.com/en-us/microsoft-fabric) in Apache Airflow DAGs. [Microsoft Fabric](https://www.microsoft.com/microsoft-fabric) is an end-to-end analytics and data platform designed for enterprises that require a unified solution. It encompasses data movement, processing, ingestion, transformation, real-time event routing, and report building. It offers a comprehensive suite of services including Data Engineering, Data Factory, Data Science, Real-Time Analytics, Data Warehouse, and Databases. ## How to Use ### Install the Plugin Pypi package: https://pypi.org/project/apache-airflow-microsoft-fabric-plugin/ ```bash pip install apache-airflow-microsoft-fabric-plugin ``` ### Prerequisities Before diving in, * The plugin supports the authentication using user tokens. Tenant level admin account must enable the setting Allow user consent for apps. Refer to: [Configure user consent](https://learn.microsoft.com/en-us/entra/identity/enterprise-apps/configure-user-consent?pivots=portal) * [Create a Microsoft Entra Id app](https://learn.microsoft.com/entra/identity-platform/quickstart-register-app?tabs=certificate) if you don’t have one. * You must have [Refresh token](https://learn.microsoft.com/entra/identity-platform/v2-oauth2-auth-code-flow#refresh-the-access-token). Since custom connection forms aren't feasible in Apache Airflow plugins, use can use `Generic` connection type. Here's what you need to store: 1. `Connection Id`: Name of the connection Id 2. `Connection Type`: Generic 3. `Login`: The Client ID of your service principal. 4. `Password`: The refresh token fetched using Microsoft OAuth. 5. `Extra`: { "tenantId": "The Tenant Id of your service principal", "clientSecret": "(optional) The Client Secret for your Entra ID App" "scopes": "(optional) Scopes you used to fetch the refresh token" } > **_NOTE:_** Default scopes applied are: https://api.fabric.microsoft.com/Item.Execute.All, https://api.fabric.microsoft.com/Item.ReadWrite.All, offline_access, openid, profile ## Operators ### FabricRunItemOperator This operator composes the logic for this plugin. It triggers the Fabric item run and pushes the details in Xcom. It can accept the following parameters: * `workspace_id`: The workspace Id. * `item_id`: The Item Id. i.e Notebook and Pipeline. * `fabric_conn_id`: Connection Id for Fabric. * `job_type`: "RunNotebook" or "Pipeline". * `wait_for_termination`: (Default value: True) Wait until the run item. * `timeout`: int (Default value: 60 * 60 * 24 * 7). Time in seconds to wait for the pipeline or notebook. Used only if `wait_for_termination` is True. * `check_interval`: int (Default value: 60s). Time in seconds to wait before rechecking the refresh status. * `max_retries`: int (Default value: 5 retries). Max number of times to poll the API for a valid response after starting a job. * `retry_delay`: int (Default value: 1s). Polling retry delay. * `deferrable`: Boolean. Use the operator in deferrable mode. * `job_params`: Dict. Parameters to pass into the job. ## Features * #### Refresh token rotation: Refresh token rotation is a security mechanism that involves replacing the refresh token each time it is used to obtain a new access token. This process enhances security by reducing the risk of stolen tokens being reused indefinitely. * #### Xcom Integration: The Fabric run item enriches the Xcom with essential fields for downstream tasks: 1. `run_id`: Run Id of the Fabric item. 2. `run_status`: Fabric item run status. * `In Progress`: Item run is in progress. * `Completed`: Item run successfully completed. * `Failed`: Item run failed. * `Disabled`: Item run is disabled by a selective refresh. 3. `run_location`: The location of item run status. * #### External Monitoring link: The operator conveniently provides a redirect link to the Microsoft Fabric item run. * ### Deferable Mode: The operator runs in deferrable mode. The operator is deferred until the target status of the item run is achieved. ## Sample DAG to use the plugin. Ready to give it a spin? Check out the sample DAG code below: ```python from __future__ import annotations from airflow import DAG from apache_airflow_microsoft_fabric_plugin.operators.fabric import FabricRunItemOperator from airflow.utils.dates import days_ago default_args = { "owner": "airflow", "start_date": days_ago(1), } with DAG( dag_id="fabric_items_dag", default_args=default_args, schedule_interval="@daily", catchup=False, ) as dag: run_notebook = FabricRunItemOperator( task_id="run_fabric_notebook", workspace_id="", item_id="", fabric_conn_id="fabric_conn_id", job_type="RunNotebook", wait_for_termination=True, deferrable=True, ) run_notebook ``` Feel free to tweak and tailor this DAG to suit your needs! ## Contributing We welcome any contributions: - Report all enhancements, bugs, and tasks as [GitHub issues](https://github.com/ambika-garg/apache-airflow-microsoft-fabric-plugin/issues) - Provide fixes or enhancements by opening pull requests in GitHub.