在本教程中,你将构建一个有向无环图(DAG),以运行包括 Microsoft Fabric 项目在内的内容。
- Notebooks
- dbt 作业
- 复制作业
- Spark 任务定义
- Pipelines
- 语义模型刷新
- 用户数据函数
先决条件
若要开始,必须满足以下先决条件:
在 Apache Airflow 作业中,选择 “设置 ”齿轮按钮,选择 “环境配置”,并在数据工作流中 启用触发器 ,以允许使用可延迟的运算符。
若要使用 Fabric API 对 DAG 进行身份验证,可按照以下步骤使用以下任一方式:服务主体
在 Fabric 中,选择 “设置”、“ 管理门户”、“ 租户设置”,并允许服务主体在构造租户上调用 Fabric 公共 API。
在 Microsoft Entra ID 中, 创建服务主体。 保存以下值,供稍后用于 Apache Airflow 凭据:
租户 ID
客户端 ID
机密
授予服务主体适当的权限:
- 在 Microsoft Entra ID 中,在 应用注册下查找服务主体。
- 从菜单中选择 “管理” ,然后选择 “API 权限”。
- 选择“添加权限”,然后选择“Power BI 服务”
- 选择“委托权限”。
- 添加 Item.Read.All 和 Item.Execute.All。 (或者,也可以根据项类型添加读取和执行权限,如 DataPipeline.Execute.All、DataPipeline.Read.All、Notebook.Read.All 或 Notebook.Execute.All)。
- 最后,在将使用 Airflow 运行的项目所在的 工作区中,将服务主体添加为参与者 。
设置 Apache Airflow 连接
Apache Airflow 连接用于存储使用 Microsoft Fabric API 进行身份验证所需的凭据。 可以通过两种方式设置连接:
Fabric Apache Airflow 作业 UI
在 “主页 ”栏上,选择“ 添加连接”。
此时会打开一个弹出窗口,帮助你设置 Apache airflow Fabric 连接。 在本教程中,我们将使用服务主体。 遵循说明,并添加以下具体信息:
- 连接 ID:连接 ID 的名称。
- 描述: 连接说明
- 端点: 您的 Fabric API 端点。 Ex. “https://api.fabric.microsoft.com"
- 租户 ID: 租户 ID
- 客户端 ID: 分配给应用的应用程序客户端 ID。
- 客户端密码: 应用注册客户端密码。
完成连接后,选择 “创建 ”。 还可以直接在 Airflow UI 中创建和管理 Microsoft Fabric 连接。 需要执行此操作才能定期刷新 SPN 机密。 如果使用 GIT 同步,以下说明将不起作用 - 在这种情况下,需要手动编辑 DAG。
Apache Airflow UI
导航到 “查看 Airflow 连接 ”以添加新的 Apache Airflow 连接。
添加新连接并填写以下详细信息:
连接 ID:连接 ID 的名称。
连接类型:泛型
登录: 分配给应用的应用程序(客户端)ID。
密码: 上一步提取的刷新令牌。
额外信息:此字段包含以下参数:
- tenantId:(必填)请求路径中的 {tenant} 值可用于控制哪些用户可以登录到应用程序。
- clientSecret:(可选,仅 Web 应用需要)应用注册的客户端密码。
- scopes:(必需)应用访问 Microsoft Fabric API 所需的作用域的空格分隔字符串。
复制以下 json 对象格式,更新值,删除注释,并将其粘贴到“额外”字段中。
{ "tenantId": "{tenant}", "scopes": "https://api.fabric.microsoft.com/Item.Execute.All https://api.fabric.microsoft.com/Item.Read.All offline_access", "clientSecret": "{client-secret}" // (Optional) NOTE: Only required for web apps. }
选择“保存”。
创建 DAG 以触发 Microsoft Fabric 项运行
在 Apache Airflow 作业画布上,有三个磁贴。 选择 “运行结构”项目。 这将打开一个新的弹出窗口。 (未打开 DAG 时可访问)
使用下拉列表选择 Fabric 连接。 如果尚未创建连接,请选择 + 添加新的 Fabric 连接。
然后,使用下拉列表选择工作区。
选择要运行的项类型。
然后,选择要运行的项。
命名 DAG,然后配置最大超时时间,以及是否要启用 可延迟执行。
选择 创建。 这将在编辑器中打开一个新的 DAG,供你查看和编辑。 然后,可以保存更改并运行 DAG。
在 Fabric 管理的存储的“dags”文件夹中创建一个含以下代码的新 DAG 文件。 替换以下占位符:
-
fabric_conn_id:在上一步创建的连接 ID。 -
workspace_id:项所在的工作区 ID。 -
item_id:要运行项的 ID。 例如笔记本 ID 或管道 ID。 -
job_type:要运行的项的类型。 例如,对于笔记本,请使用“RunNotebook”,对于 Spark 作业定义,请使用“sparkjob”,对于管道使用“Pipeline”。 需要区分大小写。 -
wait_for_termination:如果设置为 True,则运算符会等待项运行完成,然后再继续执行下一个任务。 -
deferrable:如果设置为 True,则运算符可以在等待项运行完成时释放资源。
from airflow import DAG
from datetime import datetime
from apache_airflow_microsoft_fabric_plugin.operators.fabric import FabricRunItemOperator
with DAG(
dag_id="Run_Fabric_Item",
schedule_interval="@daily",
start_date=datetime(2023, 8, 7),
catchup=False,
) as dag:
run_fabric_item = FabricRunItemOperator(
task_id="run_fabric_item",
fabric_conn_id="fabric_conn",
workspace_id="<workspace_id>",
item_id="<item_id>",
job_type="<job_type>",
wait_for_termination=True,
deferrable=True,
)
run_fabric_item