在笔记本中运用Python经验

Python笔记本是在Fabric笔记本基础上构建的新体验。 它是一款多功能且互动的工具,专为数据分析、可视化和机器学习设计。 它提供了一种用于编写和执行 Python 代码的无缝开发体验。 此功能使它成为数据科学家、分析师和 BI 开发人员的重要工具,尤其是对于不需要大数据和分布式计算的探索任务。

使用Python笔记本,你可以获得:

  • 多个内置 Python 内核:Python 笔记本提供了一个纯 Python 编程环境,无需 Spark,内置三个 Python 内核版本:Python 3.10、Python 3.11 和 Python 3.12。 该环境支持原生IPython功能,如iPyWidget和magic命令。

  • 经济高效:新的 Python 笔记本默认在具有 2vCores/16GB 内存的单个节点群集上运行可提供节省成本的优势。 此设置可确保在数据较小的情况下,数据探索项目能够高效利用资源。

  • Lakehouse 和资源原生可用:Fabric lakehouse 以及笔记本内置资源的完整功能都可在 Python 笔记本中实现。 这个功能让用户可以轻松地将数据导入 Python 笔记本,只需尝试拖拽即可获取代码片段。

  • 与 T-SQL 混合编程:Python notebook 提供了与资源管理器中 Data Warehouse 和 SQL 分析端点交互的便捷方式。 通过使用 notebookutils data connector,你可以在 Python 上下文下轻松执行 T-SQL 脚本。

  • 支持流行数据分析库:Python笔记本预装了DuckDB、Polars和Scikit-learn等库,提供全面的数据处理、分析和机器学习工具包。

  • 高级 IntelliSense:Python 笔记本采用 Pylance 作为 IntelliSense 引擎,并与其他 Fabric 定制语言服务一起,旨在为笔记本开发者提供最先进的编程体验。

  • NotebookUtils 和 Semantic Link:强大的 API 工具包帮助你以代码优先的方式轻松使用 Fabric 和 Power BI 功能。

  • 丰富的可视化功能:除了流行的丰富数据帧预览“表格”功能和“图表”功能外,它还支持Matplotlib、Seaborn和Plotly等流行的可视化库。 PowerBIClient 也支持这些库,以帮助用户更好地了解数据模式和见解。

  • Fabric笔记本的通用功能:所有笔记本级别的功能自然适用于Python笔记本,如编辑功能、自动保存、协作、共享与权限管理、Git集成、导入导出等。

  • 全堆栈数据科学功能:高级低代码工具包数据整理器、机器学习框架 MLFlow 和功能强大的 Copilot 均在 Python 笔记本上提供。

如何访问 Python 笔记本

在 Fabric 中打开笔记本后,你可以在主页标签的语言下拉菜单切换到 Python,并将整个笔记本设置转换为 Python。

显示从笔记本语言菜单切换到 Python 的屏幕截图。

大多数常见功能在笔记本层面都支持。 想了解更多,请参见《如何使用 Fabric 笔记本》和《开发、执行和管理 Fabric 笔记本》。 本文列出了一些针对 Python 场景的关键能力。

运行 Python 笔记本

Python笔记本支持多种作业执行方法:

  • 交互式运行:可以像本机 Jupyter 笔记本一样以交互方式运行 Python 笔记本。
  • 计划运行:你可以在笔记本设置页面使用轻量级计划程序功能,将 Python 笔记本作为批处理作业运行。
  • 管道运行:可以将 Python 笔记本编排为 管道中的笔记本任务。 该进程在作业执行后生成快照。
  • 引用运行:可以使用 notebookutils.notebook.run()notebookutils.notebook.runMultiple() 引用另一个 Python 笔记本中的运行 Python 笔记本作为批处理作业。 该进程在参考运行结束后生成快照。
  • %run:你可以用它 %run 在同一执行上下文中引用和执行其他笔记本,这样你可以直接调用函数并重用那些笔记本中定义的变量。 有关更多详细信息,请参阅有关如何 引用运行笔记本的文档。
  • 公共 API 运行:您可以使用 笔记本运行公共 API 来计划您的 Python 笔记本的执行。 作业调度程序 API 支持参数化运行,并返回笔记本执行的退出值。 在自动化和 CI/CD 场景中管理 Python 笔记本时,可以使用退出值来进行条件编排和传达结果。 确保正确设置公共 API 负载中的笔记本元数据的语言和内核属性。 通过公共 API 传递的参数值可以使用 Fabric 笔记本中使用的标准参数访问模式在运行时提供给 Python 笔记本。 有关参数的请求形状和退出值检索的详细信息,请参阅 使用 API 在 Fabric 中管理和执行笔记本。 可以通过作业计划程序 API 监控运行状态和取消作业实例,从而增强用户界面(UI)中的 \查看所有运行\ 体验。

Note

项目 REST API(笔记本的 CRUD)和作业调度 API(执行)支持服务主体身份验证,从而能够为 Python 笔记本提供安全的无人参与自动化和 CI/CD。 将服务主体添加到工作区,并赋予适当的角色,以便于使用这些 API。

可以在功能区选项卡 “运行 ->查看所有运行”上查看 Python 笔记本作业的运行详细信息。

Note

目前,只%run支持引用Python笔记本上的笔记本项目,不支持笔记本资源文件夹中的代码模块(如.py文件)。

数据交互

你可以与 Lakehouse、仓库、SQL 分析端点以及 Python 笔记本中的内置资源文件夹进行交互。

Note

Python笔记本运行时预装了delta-rsduckdb库,支持读写Delta Lake数据。 不过,Delta Lake的一些功能可能未被完全支持。 欲了解更多细节和最新更新,请参见 delta-rsDuckDB 文档。

Lakehouse 交互

你可以设置一个湖屋作为默认,或者添加多个湖屋来探索并在笔记本中使用。

如果你不熟悉读取数据对象,比如 Delta表,可以试着拖拽文件和Delta表到笔记本画布,或者使用对象下拉菜单中的 加载数据 选项。 笔记本会自动将代码片段插入代码单元格,并生成用于读取目标数据对象的代码。

Note

如果你在加载大量数据时遇到OOM,可以尝试用DuckDB、Polars或PyArrow数据帧代替pandas。

你可以在浏览代码片段>——将数据写入 Delta 表中找到写 lakehouse 操作。

显示 write lakehouse 操作的 显示写入湖屋操作的屏幕截图。

仓库交互和将编程与 T-SQL 相结合

你可以从笔记本的仓库浏览器中添加仓库或SQL分析端点。 同样,你可以将表格拖放到笔记本的画布上,或者使用表格下拉菜单中的快捷操作。 笔记本会自动为你生成一段代码片段。 可以使用 notebookutils.data 实用工具与仓库建立连接,并在Python上下文中使用 T-SQL 语句查询数据。

显示仓库表快捷方式的屏幕截图。

Note

SQL 分析终结点是只读的。

笔记本资源文件夹

Notebook 资源内置的 resources 文件夹在 Python 笔记本上是原生可用的。 你可以像操作本地文件系统一样,使用 Python 代码轻松与内置资源文件夹里的文件交互。 目前,环境资源文件夹不被支持。

内核操作

Python笔记本支持三个内置内核:Python 3.10Python 3.11Python 3.12。 默认选择的内核是 Python 3.12。 你可以很容易地在它们之间切换。

你可以在功能区的 开始 选项卡上中断、重启或切换内核。 在 Python 笔记本中中断内核,就像在 Spark 笔记本中取消单元一样。

显示内核操作的 显示屏幕内核操作的屏幕截图。

异常的内核退出会导致代码执行中断并丢失变量,但不会停止笔记本会话。

有些命令可能导致内核死亡。 例如,quit()exit()

关于每个 Python 内核版本的支持生命周期,包括支持终止日期和迁移步骤,请参见 Python 笔记本运行时和 Fabric 中的内核生命周期

库管理

使用 %pip%conda 命令进行内联安装。 这些命令既支持公共库,也支持自定义库。

对于自定义库,将库文件上传到 内置资源 文件夹。 该平台支持多种类型的库,包括 Wheel(.whl)、JAR(.jar)、DLL(.dll)和 Python(.py)等格式。 只需拖拽文件,代码片段会自动生成。

你可能需要重启内核才能使用更新后的包。

为了更好地理解和使用类似命令,请参考下表。

Command/Syntax 主要用途 它在 Jupyter Notebook 中的工作原理 典型用例 Notes
%pip install package 安装 Python 包 在笔记本的Python内核中运行 pip 安装包的建议方法 在 Python 笔记本中,和 ; !pip一样,不会自动重启内核
!pip install package 通过 shell 安装 Python 包 以 shell 命令的形式运行 pip 安装包的替代方法 在 Python 笔记本中,和 ; %pip一样,不会自动重启内核
import sys; sys.exit(0) 重启笔记本内核 立即重启内核 以编程方式重启内核 清除所有变量和状态; 不建议 直接使用
notebookutils.session.restartPython() 重启笔记本内核 内部调用sys.exit(0) 重启内核的建议方法 与直接使用 sys.exit(0) 相比,官方 API 更安全和更兼容

Note

  • 在 Python 笔记本中,%pip!pip它们的行为是一样的:两者都将包安装到当前内核的环境中,且安装后都不会自动重启内核。
  • 如果你需要重启内核(例如安装某些包后),请用 notebookutils.session.restartPython() 代替 import sys; sys.exit(0)
    • notebookutils.session.restartPython() 是一个封装了 sys.exit(0) 的官方 API,并且在笔记本环境中更安全、兼容性更好。
  • 除非必要,不要直接使用 sys.exit(0)

Python 笔记本实时资源使用情况监视

重要

此功能目前为预览版

通过使用资源监控窗格,你可以直接在笔记本内跟踪关键运行时信息,如会话时长、计算类型和实时资源指标,包括CPU和内存消耗。 此功能提供您当前会话及其所用资源的立即概览。

资源监视器可提高 Python 工作负载利用系统资源的可见性。 它有助于优化性能、管理成本并降低内存不足(OOM)错误的风险。 通过实时监视指标,可以识别资源密集型作、分析使用模式,以及做出有关缩放或修改代码的明智决策。

若要开始使用它,请将笔记本语言设置为 Python 并启动会话。 然后,可以通过单击笔记本状态栏中的计算资源或从工具栏中选择 “查看资源使用情况 ”来打开监视器。 资源监控窗格会自动出现,为 Fabric 笔记本中的 Python 代码提供集成的监控体验。

显示 Python 笔记本实时资源使用情况监视的屏幕截图。

会话配置魔术命令

类似于在笔记本中个性化 Spark 会话配置,你也可以在 Python 笔记本中使用 %%configure。 Python笔记本支持自定义计算节点大小、挂载点和笔记本会话的默认湖屋。 你可以在交互式笔记本和管道笔记本活动中使用这些设置。 请使用笔记本开头的 %%configure 命令,否则必须重启笔记本会话才能让设置生效。

下面是 Python 笔记本%%configure中支持的属性:

%%configure -f
{
    "vCores": 4, // Recommended values: [4, 8, 16, 32, 64], Fabric will allocate matched memory according to the specified vCores.
    "defaultLakehouse": {  
        // Will overwrites the default lakehouse for current session
        "name": "<lakehouse-name>",
        "id": "<(optional) lakehouse-id>",
        "workspaceId": "<(optional) workspace-id-that-contains-the-lakehouse>" // Add workspace ID if it's from another workspace
    },
    "mountPoints": [
        {
            "mountPoint": "/myMountPoint",
            "source": "abfs[s]://<file_system>@<account_name>.dfs.core.windows.net/<path>"
        },
        {
            "mountPoint": "/myMountPoint1",
            "source": "abfs[s]://<file_system>@<account_name>.dfs.core.windows.net/<path1>"
        },
    ],
}

你可以在笔记本状态栏上查看计算资源的更新情况,实时监控计算节点的CPU和内存使用情况。

显示计算资源更新的屏幕截图。

Note

API 触发的运行遵循会话配置,例如计算 vCore,并通过 defaultLakehouse 笔记本元数据 %%configure指定。 作业调度器 API 还支持在运行时选择目标湖屋和环境。 有关有效负载字段的详细信息,请参阅 使用 API 在 Fabric 中管理和执行笔记本

NotebookUtils

Notebook Utilities(NotebookUtils)是一个内置包,帮助你轻松执行 Fabric Notebook 中的常见任务。 它预装在 Python 运行时。 使用 NotebookUtils 处理文件系统,获取环境变量,串联笔记本,访问外部存储,并处理秘密。

notebookutils.help() 来列出可用的API,并获得方法方面的帮助。 更多信息请参见 NotebookUtils文档

数据实用工具

Note

此功能目前为预览版。

notebookutils.data 工具连接数据源。 然后,你可以通过 T-SQL 语句读取和查询数据。

运行以下命令以概要了解可用的方法:

notebookutils.data.help()

Output:

Help on module notebookutils.data in notebookutils:

NAME
    notebookutils.data - Utility for read/query data from connected data sources in Fabric

FUNCTIONS
    connect_to_artifact(artifact: str, workspace: str = '', artifact_type: str = '', **kwargs)
        Establishes and returns an ODBC connection to a specified artifact within a workspace 
        for subsequent data queries using T-SQL.
        
        :param artifact: The name or ID of the artifact to connect to.
        :param workspace:  Optional; The workspace in which the provided artifact is located, if not provided,
                             use the workspace where the current notebook is located.
        :param artifactType: Optional; The type of the artifact, Currently supported type are Lakehouse, Warehouse and MirroredDatabase. 
                                If not provided, the method will try to determine the type automatically.
        :param **kwargs Optional: Additional optional configuration. Supported keys include:
            - tds_endpoint : Allow user to specify a custom TDS endpoint to use for connection.
        :return: A connection object to the specified artifact.
        
        :raises UnsupportedArtifactException: If the specified artifact type is not supported to connect.
        :raises ArtifactNotFoundException: If the specified artifact is not found within the workspace.
        
        Examples:
            sql_query = "SELECT DB_NAME()"
            with notebookutils.data.connect_to_artifact("ARTIFACT_NAME_OR_ID", "WORKSPACE_ID", "ARTIFACT_TYPE") as conn:
                df = conn.query(sql_query)
                display(df)
    
    help(method_name: str = '') -> None
        Provides help for the notebookutils.data module or the specified method.
        
        Examples:
        notebookutils.data.help()
        notebookutils.data.help("connect_to_artifact")
        :param method_name: The name of the method to get help with.

DATA
    __all__ = ['help', 'connect_to_artifact']

FILE
    /home/trusted-service-user/jupyter-env/python3.10/lib/python3.10/site-packages/notebookutils/data.py

从湖屋查询数据

conn = notebookutils.data.connect_to_artifact("lakehouse_name_or_id", "optional_workspace_id", "optional_lakehouse_type")
df = conn.query("SELECT * FROM sys.schemas;")

从仓库查询数据

conn = notebookutils.data.connect_to_artifact("warehouse_name_or_id", "optional_workspace_id", "optional_warehouse_type")
df = conn.query("SELECT * FROM sys.schemas;")

从 SQL 数据库查询数据

conn = notebookutils.data.connect_to_artifact("sqldb_name_or_id", "optional_workspace_id", "optional_sqldatabase_type") 
df = conn.query("SELECT * FROM sys.schemas;")

Note

NotebookUtils 中的数据工具目前仅在 Python 笔记本上可用。

浏览代码片段

你可以在编辑标签页选择“浏览代码片段”找到有用的 Python 代码片段。 现在已经有新的 Python 样本可用。 要开始探索笔记本,可以从Python代码片段中学习。

显示 python 代码片段浏览位置的屏幕截图。

语义链接是一个功能,你可以用来连接 语义模型 和Synapse数据科学。 Python笔记本原生支持此功能。 BI工程师和Power BI开发者可以使用语义链接轻松连接和管理语义模型。 欲了解更多信息,请参阅 公开文档

Visualization

除了使用库绘制图表之外, 内置可视化 函数还允许将数据帧转换为格式丰富的数据可视化效果。 在数据帧上使用 display() 函数生成丰富的数据帧表视图和图表视图。

截图显示了Python笔记本中的可视化体验。

Note

Python笔记本会持久化图表配置。 重运行代码单元后,如果目标数据帧模式没有变化,保存的图表依然存在。

代码 IntelliSense

Python笔记本也使用Pylance作为语言服务器。 更多信息请参见“用Pylance增强Python开发”。

数据科学功能

想了解更多关于 Fabric 中的数据科学和 AI 体验,请参阅 Fabric 中的数据科学文档。 本文列出了Python笔记本原生支持的一些关键数据科学特性。

  • Data Wrangler:Data Wrangler 是一款基于笔记本的工具,提供沉浸式的探索性数据分析界面。 此功能将网格式数据显示与动态摘要统计信息、内置可视化效果和常见数据清理操作库相结合。 它提供数据清理、数据转换和集成,通过使用 Data Wrangler 加快数据准备。

  • MLflow:机器学习试验是所有相关机器学习运行的组织和控制的主要单元。 一个运行对应模型代码的一次执行。

  • Fabric 自动日志:Synapse 数据科学包含自动日志,显著减少了在训练过程中自动记录机器学习模型参数、指标和项目所需的代码量。

    自动日志记录扩展了 MLflow 跟踪功能。 自动日志记录可以捕获各种指标,包括准确性、损失、F1 分数,以及定义的自定义指标。 使用自动日志记录,开发人员和数据科学家可以轻松跟踪和比较不同模型和试验的性能,而无需手动跟踪。

  • Copilot:用于数据工程和数据科学笔记本的 Copilot 是一个 AI 助手,可帮助你分析和可视化数据。 Copilot 可立即了解上下文,无需启动会话。 它了解工作区、附加的 Lakehouse 架构、表和文件、笔记本结构和运行时状态,并且可以在整个笔记本工作流中运行。

    Copilot 支持笔记本范围的多步功能:它可以生成、重构、总结并验证 Python 笔记本中多个单元和步骤的代码。 可以在笔记本中使用 Copilot 聊天面板和聊天命令,如/fix

    当单元格失败时,使用 Copilot 修复 会呈现错误摘要、根本原因的分析和推荐的修复措施,并在显示批准差异后可以选择自动应用代码更改。 你还可以在 Copilot 聊天中使用 /fix 命令,对特定单元格或整个笔记本进行有针对性的诊断。

已知的限制

  • 并不保证每次运行 Python 笔记本时都能获得实时池体验。 如果笔记本运行没有进入实时池,游戏开始时间可能长达三分钟。 随着Python笔记本使用率的增长,智能池化方法逐步增加活池分配以满足需求。

  • Python笔记本无法实现环境集成。

  • 无法设置会话超时。

  • Copilot 改进了针对 Python 笔记本的上下文感知和辅助功能,但有时可能会建议一些在 Python 笔记本中不能直接执行的 Spark 代码。 Copilot 功能中的修复机制适用于 Python 单元格失败的情况, 而 Spark 作业诊断不适用于纯 Python 运行。

  • 目前,Python笔记本上的Copilot在多个地区尚未得到全面支持。 部署过程仍在进行中。 敬请关注,支持将陆续扩展到更多地区。