Fabric用户数据函数调用报错:404及Power BI实体未找到问题排查
Fabric User Data Function REST API 404/Power BI实体未找到错误排查
问题背景
需求为通过REST API连接Fabric工作区并从Delta表获取数据,采用预览版Fabric User Data Function实现方案,租户区域为UK South。调用过程中出现两类错误:
- REST API调用返回404错误
- Fabric数据管道调用时提示「Power BI实体未找到」
已完成的实施步骤:
- 在Azure门户注册应用,配置存储、Power BI及User Data Function相关权限
- 将应用ID添加至目标Fabric工作区
- 在Fabric管理门户启用User Data Function功能
- 创建并发布函数,内部测试执行正常
- 开启函数公共访问属性后重新发布
- 使用函数公共URL通过Python代码调用REST API,收到404错误
- 尝试从Fabric数据管道调用该函数,仍报错
相关代码示例
User Data Function 代码
from pyspark.sql import SparkSession def main(): # 初始化Spark会话 spark = SparkSession.builder.getOrCreate() # 读取Delta表数据 delta_df = spark.read.format("delta").load("abfss://container@storageaccount.dfs.core.windows.net/path/to/delta_table") # 返回JSON格式结果 return delta_df.toJSON().collect()
Python REST API 调用代码
import requests # 函数公共访问URL function_url = "https://uksouth-fabric.azurewebsites.net/api/MyDataFunction?code=<access-code>" headers = { "Authorization": "Bearer <azure-ad-access-token>", "Content-Type": "application/json" } response = requests.get(function_url, headers=headers) print(f"状态码: {response.status_code}") print(f"响应内容: {response.text}")
错误截图
排查与解决方案建议
1. 区域与URL合法性验证
确认函数公共URL的区域后缀与租户区域(UK South)匹配,正确的URL格式应为https://uksouth-fabric.azurewebsites.net/...,避免因跨区域访问或URL拼写错误导致404。
2. 权限配置复核
- 检查Azure AD应用的权限是否已完成管理员同意,尤其是Power BI相关的应用权限(如
PowerBIWorkspace.Read.All),未授予同意会导致实体访问权限不足。 - 确认应用ID在Fabric工作区中的角色为成员及以上,确保具备访问Delta表和函数资源的权限。
3. 公共访问配置确认
- 开启公共访问后,需确认函数已完成成功重发布,部分场景下预览版功能发布存在延迟,可等待5-10分钟后重试。
- 检查函数公共访问设置是否为「允许所有用户访问」,而非仅组织内部用户。
4. API调用参数校验
- 验证Azure AD访问token的权限范围,确保包含
https://analysis.windows.net/powerbi/api/.default等Fabric相关的权限范围。 - 确认URL中的访问代码(
code参数)与函数发布后生成的密钥一致,避免密钥过期或错误。
5. 预览版功能限制检查
由于User Data Function为预览版功能,需确认租户已加入预览计划,且UK South区域已开放该功能的预览支持。
内容的提问来源于stack exchange,提问作者Maha lakshmi
相关产品推荐
相关产品推荐

