Microsoft Fabric Notebook能否直接连接Dataflows(Gen1)而非Lakehouse?
在Microsoft Fabric Notebook中直接调用Dataflows Gen1数据的解决方案
核心方案:复用Dataflows Gen1输出的数据集
无需中转Lakehouse或重写Power Query逻辑,直接将Dataflows Gen1转换后的数据输出为Fabric数据集,再在Notebook中读取该数据集。
步骤1:配置Dataflows Gen1输出到数据集
- 打开目标Dataflows Gen1进入编辑模式
- 完成Power Query转换后,选择发布到数据集,指定输出的数据集名称及所在工作区
- 确认数据集已成功发布并可在工作区中找到
步骤2:在Notebook中加载数据集
- 打开Data Science persona下的Notebook,点击顶部添加数据
- 在数据源面板选择Fabric数据集,找到Dataflows Gen1发布的目标数据集
- 选择加载到数据帧,系统自动生成Python/R代码,将数据加载到Notebook的DataFrame中
自动生成的Python代码示例
from pyspark.sql import SparkSession spark = SparkSession.builder.getOrCreate() df = spark.read.format("com.microsoft.sqlserver.jdbc.spark") \ .option("url", "fabric://[工作区名称].fabric.microsoft.com/[数据集名称]") \ .option("dbtable", "[数据表名称]") \ .load() # 预览数据 df.show()
备选方案:通过Power BI REST API读取
如果可视化连接方式受限,可通过API直接调用数据集:
- 在Fabric工作区创建服务主体,并赋予数据集读取权限
- 在Notebook中编写API调用代码(Python示例):
import requests import pandas as pd # 配置参数 tenant_id = "你的租户ID" client_id = "服务主体ID" client_secret = "服务主体密钥" workspace_id = "工作区ID" dataset_id = "数据集ID" table_name = "目标表名" # 获取访问令牌 token_res = requests.post( f"https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token", data={ "grant_type": "client_credentials", "client_id": client_id, "client_secret": client_secret, "scope": "https://analysis.windows.net/powerbi/api/.default" } ) access_token = token_res.json()["access_token"] # 读取数据集数据 data_res = requests.get( f"https://api.powerbi.com/v1.0/myorg/groups/{workspace_id}/datasets/{dataset_id}/tables/{table_name}/rows", headers={"Authorization": f"Bearer {access_token}"} ) df = pd.DataFrame(data_res.json()["value"])
关键注意点
- 确保Dataflows Gen1已设置定时刷新,保证Notebook读取最新数据
- 服务主体需配置正确的数据集读取权限,避免API调用失败
- 该方案完全复用Dataflows Gen1的Power Query转换逻辑,无需重复开发
内容的提问来源于stack exchange,提问作者user18366639
相关产品推荐
相关产品推荐

