在笔记本上使用 Python 体验

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

使用 Python 笔记本,可以获取:

  • 多个内置 python 内核:Python 笔记本提供不含 Spark 的纯 Python 编码环境,默认情况下提供两个版本的 Python 内核(Python 3.10 和 3.11),以及受支持的本机 ipython 功能(如 iPyWidget、magic 命令)。

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

  • 和资源原生可用:Fabric 湖屋以及笔记本内置资源的完整功能可在 Python 笔记本中使用。 此功能使用户能够轻松地将数据引入 python 笔记本,只需尝试拖放 & 即可获取代码片段。

  • 将编程与 T-SQL 相结合:Python 笔记本提供了一种在资源管理器中与数据仓库和 SQL 终结点交互的简单方法,通过使用 notebookutils 数据连接器,可以轻松地在 Python 上下文中执行 T-SQL 脚本。

  • 支持常用数据分析库:Python 笔记本附带了预安装的库,例如 DuckDB、Polars 和 Scikit-learn,提供用于数据操作、分析和机器学习的综合工具包。

  • 高级 intellisense:Python 笔记本将 Pylance 用作 intellisense 引擎,结合其他定制的 Fabric 语言服务,目标是为笔记本开发人员提供最先进的编码体验。

  • NotebookUtils 和语义链接:功能强大的 API 工具包使你能够轻松地使用 Fabric 和 Power BI 功能并获得代码优先体验。

  • 丰富的可视化功能:除了常用的 Rich DataFrame 预览“Table”函数和“Chart”函数,我们还支持常用的可视化库,如 Matplotlib、Seaborn 和 Plotly。 PowerBIClient 也支持这些库,以帮助用户更好地了解数据模式和见解。

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

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

如何访问 Python 笔记本

打开 Fabric Notebook 后,可以在“开始”选项卡的语言下拉菜单中切换到 Python,并将整个笔记本设置转换为 Python。

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

大多数常用功能都在笔记本级别受支持,可以参考如何使用 Microsoft Fabric 笔记本开发、执行和管理 Microsoft Fabric 笔记本以了解详细用法。 下面列出了一些特定于 Python 场景的关键功能。

运行 Python 笔记本

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

  • 交互式运行:可以像本机 Jupyter 笔记本一样以交互方式运行 Python 笔记本。
  • 计划运行:可以使用笔记本设置页上的轻型计划程序体验将 Python 笔记本作为批处理作业运行。
  • 管道运行:可以将 Python 笔记本编排为 管道中的笔记本任务。 快照将在作业执行后生成。
  • 引用运行:可以使用 notebookutils.notebook.run()notebookutils.notebook.runMultiple() 引用另一个 Python 笔记本中的运行 Python 笔记本作为批处理作业。 引用运行完成后,将生成快照。
  • 公共 API 运行:可以使用笔记本运行公共 API 计划 Python 笔记本运行,确保正确设置公共 API 有效负载的笔记本元数据中的语言和内核属性。

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

数据交互

可以在 Python 笔记本上与 Lakehouse、Warehouses、SQL 终结点和内置资源文件夹进行交互。

Note

  • Python Notebook 运行时预安装了 delta-rsduckdb 库,以支持读取和写入 Delta Lake 数据。 但是,请注意,目前可能无法完全支持某些 Delta Lake 功能。 有关更多详细信息和最新更新,请参阅官方 delta-rsduckdb 网站。
  • 我们目前不支持 deltalake(delta-rs) 1.0.0 或更高版本。 请随时关注。

Lakehouse 交互

您可以将某个 Lakehouse 设置为默认选项,也可以添加多个 Lakehouse 以进行浏览和在笔记本中使用。

如果不熟悉读取 增量表等数据对象,请尝试将文件和增量表拖放到笔记本画布,或使用对象下拉菜单中的 “加载数据 ”。 笔记本会自动将代码片段插入代码单元,并生成用于读取目标数据对象的代码。

Note

如果在加载大量数据时遇到 OOM,请尝试使用 DuckDB、Polars 或 PyArrow 数据帧而不是 Pandas。

可以在“浏览代码片段”-“将数据写入 delta 表”中找到写入湖屋操作。>

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

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

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

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

Note

SQL 终结点在此处为只读。

笔记本资源文件夹

笔记本内嵌资源文件夹在 Python Notebook 中原生可用。 可以使用 Python 代码轻松与内置资源文件夹中的文件进行交互,就像使用本地文件系统一样。 目前不支持环境资源文件夹。

内核操作

Python 笔记本目前支持两个内置内核,它们是 Python 3.10Python 3.11,默认选定的内核是 Python 3.11。 可以轻松地在它们之间切换。

可以在功能区的 “开始 ”选项卡上中断、重启或切换内核。 在 Python 笔记本中中断内核类似于在 Spark 笔记本中取消代码单元。

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

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

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

库管理

可以使用 %pip%conda 命令进行内联安装,这些命令同时支持公共库和自定义库。

对于自定义库,可以将库文件上传到 内置资源 文件夹。 我们支持多种类型的库,包括 Wheel(.whl)、JAR(.jar)、DLL(.dll)和 Python(.py)。 只需尝试拖放到文件,代码片段就会自动生成。

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

若要清楚地了解和使用类似的命令,请参阅下表。

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

Note

  • 在 Python Notebook 中,%pip!pip具有相同的行为:两个工具都将软件包安装到当前内核的环境中,安装后都不会自动重启内核。
  • 如果需要重启内核(例如,安装某些包后), 建议 使用 notebookutils.session.restartPython() 而不是 import sys; sys.exit(0)
    • notebookutils.session.restartPython() 是一个官方 API,它包装 sys.exit(0) ,在笔记本环境中更安全、更兼容。
  • 除非有必要, 否则不建议 直接使用 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 和内存使用。

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

NotebookUtils

Notebook 实用工具 (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 代码片段浏览位置的屏幕截图。

语义链接是一项功能,可用于在 Microsoft Fabric 中的 语义模型 与 Synapse Data Science 之间建立连接。 Python 笔记本原生支持它。 BI 工程师和 Power BI 开发人员可以轻松使用语义链接连接和管理语义模型。 阅读 公共文档 ,了解有关语义链接的详细信息。

Visualization

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

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

Note

图表配置将保留在 Python 笔记本中,这意味着在重新运行代码单元后,如果目标数据帧架构未更改,保存的图表仍会保留。

代码 intelliSense

Python 笔记本还使用 Pylance 作为语言服务器。 有关详细信息,请参阅使用 Pylance 增强 Python 开发

数据科学功能

请访问 Microsoft Fabric 中的数据科学文档,了解 Fabric 中更多的数据科学和 AI 体验。 在这里,我们列出了一些在 Python Jupyter 笔记本上原生支持的关键数据科学功能。

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

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

  • Fabric 自动日志记录:Microsoft Fabric 中的 Synapse 数据科学包括自动日志记录,可以大大减少在训练期间自动记录机器学习模型的参数、指标和项所需的代码量。

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

  • Copilot:Copilot for Data Science and Data Engineering 笔记本是一个 AI 助手,可帮助你分析和可视化数据。 它适用于湖屋表、Power BI 数据集和 Pandas/Spark 数据帧,可直接在笔记本中提供回答和代码片段。 可以在笔记本中使用 Copilot 聊天面板和 Char-magics,AI 会提供响应或代码,您可以将其复制到笔记本中。

公共预览版已知限制

  • 每次运行 Python 笔记本时,实时交互体验无法得到保证。 如果笔记本运行未命中实时池,会话启动时间可能最长需要 3 分钟。 随着 Python 笔记本使用量的增长,我们的智能池方法会逐渐增加实时池分配以满足需求。

  • 公众预览版的 Python 笔记本不支持环境集成。

  • 设置会话超时暂时不可用。

  • Copilot 可能会生成 Spark 语句,该语句可能无法在 Python 笔记本中执行。

  • 目前,Python 笔记本上的 Copilot 在多个区域中不受完全支持。 随着我们继续在更多区域推出支持,部署过程仍在持续进行中,敬请期待。