如何通过REST API捕获Microsoft Fabric中Notebook的输出值?
解决Microsoft Fabric Notebook运行输出的捕获问题
方案1:通过Job实例输出API直接获取
当你轮询到Notebook作业状态变为Completed后,可以调用Fabric的Job输出API来获取Notebook单元格的输出内容:
- 构造请求URL:
var outputUrl = "https://api.fabric.microsoft.com/v1/workspaces/{WorkspaceId}/items/{NotebookId}/jobs/instances/{JobInstanceId}/outputs";
- 发起GET请求(使用同一个带Bearer token的HttpClient):
var outputResponse = await client.GetAsync(outputUrl); outputResponse.EnsureSuccessStatusCode(); var outputContent = await outputResponse.Content.ReadAsStringAsync();
- 解析返回的JSON,里面会包含Notebook各单元格的输出,你可以定位到最后一个SELECT语句所在单元格的
output字段,提取结果。
注意:如果SELECT结果集很大,这个API返回的内容可能会被截断,此时建议用方案2。
方案2:将输出写入Lakehouse临时表再查询
如果需要获取完整的输出结果,更可靠的方式是在Notebook末尾把SELECT结果写入临时表,再通过Lakehouse API查询:
- 修改Notebook的最后一行,将SELECT结果存入临时表:
CREATE OR REPLACE TABLE temp_notebook_output AS -- 你的原SELECT语句 SELECT * FROM your_table WHERE ...;
- 当作业完成后,调用Lakehouse的表数据查询API:
构造URL:
var lakehouseDataUrl = "https://api.fabric.microsoft.com/v1/workspaces/{WorkspaceId}/items/{LakehouseId}/tables/temp_notebook_output/data";
发起GET请求获取数据:
var tableDataResponse = await client.GetAsync(lakehouseDataUrl); tableDataResponse.EnsureSuccessStatusCode(); var tableContent = await tableDataResponse.Content.ReadAsStringAsync();
- 解析返回的JSON即可得到完整的查询结果,使用完可以删除临时表避免占用空间。
权限注意事项
确保你的Bearer token拥有以下权限:
WorkspaceItem.Read(访问Notebook作业输出)Lakehouse.Read(查询Lakehouse表数据)
内容的提问来源于stack exchange,提问作者Joseph
相关产品推荐
相关产品推荐

