使用 API 在 Fabric 中管理和执行笔记本

Microsoft Fabric REST API 为 Fabric 项的创建、读取、更新和删除 (CRUD) 操作提供服务终结点。 本文介绍可用的笔记本 REST API 及其用法。

重要

此功能目前为预览版

注意

服务主体身份验证适用于 Notebook CRUD API。 目前不支持运行笔记本 API。

使用笔记本 API,数据工程师和数据科学家可以实现其自己的管道的自动化,方便高效地建立 CI/CD。 这些 API 还使用户可以轻松地管理和操作 Fabric 笔记本项,并将笔记本与其他工具和系统集成。

这些项管理操作适用于笔记本:

操作 说明
创建项目 在工作区中创建笔记本。
更新项目 更新笔记本的元数据。
更新项定义 更新笔记本的内容。
删除物品 删除笔记本。
获取项目 获取笔记本的元数据。
获取项定义 获取笔记本的内容。
列表项 列出工作区中的所有项。

有关详细信息,请参阅项 - REST API

以下作业计划程序操作适用于笔记本:

操作 说明
按需运行项作业 使用参数化运行笔记本。
取消项作业实例 取消笔记本作业运行。
获取项作业实例 获取笔记本运行状态。

有关详细信息,请参阅作业计划程序

笔记本 REST API 用法示例

按照以下说明测试特定笔记本公共 API 的用法示例并验证结果。

注意

这些场景仅涵盖笔记本特有的用法示例。 Fabric 项常用 API 示例不在此介绍。

先决条件

Fabric Rest API 为操作定义统一终结点。 按照本文中的示例操作时,请将占位符 {WORKSPACE_ID}{ARTIFACT_ID} 替换为相应的值。

创建带定义的笔记本

使用现有的 .ipynb 文件和其他类型的源文件创建笔记本项。

Request

POST https://api.fabric.microsoft.com/v1/workspaces/{{WORKSPACE_ID}}/items
 
{
    "displayName":"Notebook1",
    "type":"Notebook",
    "definition" : {
        "format": "ipynb", // Use "fabricGitSource" for source file format.
        "parts": [
            {
                "path": "notebook-content.ipynb", // fabric source file format, .py, .scala, .sql files are supported.
                "payload": "eyJuYmZvcm1hdCI6NCwibmJmb3JtYXRfbWlub3IiOjUsImNlbGxzIjpbeyJjZWxsX3R5cGUiOiJjb2RlIiwic291cmNlIjpbIiMgV2VsY29tZSB0byB5b3VyIG5ldyBub3RlYm9va1xuIyBUeXBlIGhlcmUgaW4gdGhlIGNlbGwgZWRpdG9yIHRvIGFkZCBjb2RlIVxuIl0sImV4ZWN1dGlvbl9jb3VudCI6bnVsbCwib3V0cHV0cyI6W10sIm1ldGFkYXRhIjp7fX1dLCJtZXRhZGF0YSI6eyJsYW5ndWFnZV9pbmZvIjp7Im5hbWUiOiJweXRob24ifX19",
                "payloadType": "InlineBase64"
            }
        ]
    }
}

请求中的有效负载是从以下示例笔记本转换而来的 base64 字符串。

{
    "nbformat": 4,
    "nbformat_minor": 5,
    "cells": [
        {
            "cell_type": "code",
            "source": [
                "# Welcome to your new notebook\n# Type here in the cell editor to add code!\n"
            ],
            "execution_count": null,
            "outputs": [],
            "metadata": {}
        }
    ],
    "metadata": {
        "language_info": {
            "name": "python"
        },
        "dependencies": {
            "environment": {
                "environmentId": "6524967a-18dc-44ae-86d1-0ec903e7ca05",
                "workspaceId": "c31eddd2-26e6-4aa3-9abb-c223d3017004"
            },
            "lakehouse": {
                "default_lakehouse": "5b7cb89a-81fa-4d8f-87c9-3c5b30083bee",
                "default_lakehouse_name": "lakehouse_name",
                "default_lakehouse_workspace_id": "c31eddd2-26e6-4aa3-9abb-c223d3017004"
            }
        }
    }
}

注意

可以通过更改笔记本内容 metadata.trident.lakehousemetadata.trident.environment 来更改笔记本默认湖屋或附加环境。

获取带定义的笔记本

使用以下 API 获取笔记本内容。 Fabric 支持你在查询字符串中将格式设置为 .ipynb 以获取 .ipynb 笔记本。

请求

POST https://api.fabric.microsoft.com/v1/workspaces/{{WORKSPACE_ID}}/items/{{ARTIFACT_ID}}/GetDefinition?format=ipynb

响应

状态代码:200

{
    "definition": {
        "parts": [
            {
                "path": "notebook-content.ipynb",
                "payload": "eyJuYmZvcm1hdCI6NCwibmJmb3JtYXRfbWlub3IiOjUsImNlbGxzIjpbeyJjZWxsX3R5cGUiOiJjb2RlIiwic291cmNlIjpbIiMgV2VsY29tZSB0byB5b3VyIG5ldyBub3RlYm9va1xuIyBUeXBlIGhlcmUgaW4gdGhlIGNlbGwgZWRpdG9yIHRvIGFkZCBjb2RlIVxuIl0sImV4ZWN1dGlvbl9jb3VudCI6bnVsbCwib3V0cHV0cyI6W10sIm1ldGFkYXRhIjp7fX1dLCJtZXRhZGF0YSI6eyJsYW5ndWFnZV9pbmZvIjp7Im5hbWUiOiJweXRob24ifX19",
                "payloadType": "InlineBase64"
            }
        ]
    }
}

按需运行笔记本

使用以下 API 计划笔记本运行。 Spark 作业在请求成功后开始执行。

Fabric 支持在请求正文中传递 parameters 以参数化笔记本运行。 这些值由笔记本参数单元格使用。

你还可以使用 configuration 来个性化笔记本运行的 Spark 会话。 configurationSpark 会话配置 magic 命令共享同一协定。

Request

POST https://api.fabric.microsoft.com/v1/workspaces/{{WORKSPACE_ID}}/items/{{ARTIFACT_ID}}/jobs/instances?jobType=RunNotebook

{
    "executionData": {
        "parameters": {
            "parameterName": {
                "value": "new value",
                "type": "string"
            }
        },
        "configuration": {
            "conf": {
                "spark.conf1": "value"
            },
            "environment": {
                "id": "<environment_id>",
                "name": "<environment_name>"
            },
            "defaultLakehouse": {
                "name": "<lakehouse-name>",
                "id": "<lakehouse-id>",
                "workspaceId": "<(optional) workspace-id-that-contains-the-lakehouse>"
            },
            "useStarterPool": false,
            "useWorkspacePool": "<workspace-pool-name>"
        }
    }
}

响应

状态代码:202

Location: https://api.fabric.microsoft.com/v1/workspaces/4b218778-e7a5-4d73-8187-f10824047715/items/431e8d7b-4a95-4c02-8ccd-6faef5ba1bd7/jobs/instances/f2d65699-dd22-4889-980c-15226deb0e1b
Retry-After: 60

通过 location,你可以使用获取项作业实例来查看作业状态,或使用取消项作业实例来取消当前笔记本运行。