在笔记本上使用 Python 体验

注意

此功能目前为预览版。

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

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

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

  • 经济高效:新的 Python 笔记本默认在具有 2 个 vCore/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 笔记本后,可以在“主页”选项卡的语言下拉菜单中切换到 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 终结点和内置资源文件夹进行交互。

湖屋交互

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

如果您不熟悉如何读取数据对象(如 Delta 表),可以尝试将文件和 Delta 表拖放到笔记本工作区,或者使用对象下拉菜单中的 加载数据 功能。 笔记本会自动将代码片段插入代码单元,并生成用于读取目标数据对象的代码。

注意

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

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

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

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

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

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

注意

SQL 终结点在此处为只读。

笔记本资源文件夹

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

内核操作

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

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

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

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

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

库管理

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

对于自定义库,可以将库文件上传到内置资源文件夹中。 我们支持多种类型的库,例如 .whl、.jar、.dll、.py 等,只需尝试拖放到文件中,就会自动生成代码片段

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

会话配置魔术命令

与在笔记本中个性化 Spark 会话配置类似,还可以在 Python 笔记本中使用 %%configure。 Python 笔记本支持自定义笔记本会话的计算节点大小、装载点和默认湖屋。 可在交互式笔记本和管道笔记本活动中使用它们。 建议在笔记本开头使用 %%configure 命令,或者必须重启笔记本会话才能使设置生效。

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

%%configure
{
    "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

数据工具

注意

此功能目前为预览版。

可以使用 notebookutils.data 实用工具与提供的数据源建立连接,然后使用 T-SQL 语句读取和查询数据。

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

notebookutils.data.help()

输出:

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;")

注意

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

浏览代码片段

可以在“编辑”选项卡 ->“浏览代码片段”上找到有用的 python 代码片段,现在有新的 Python 示例可供使用。 可以通过 Python 代码片段进行学习,开始探索笔记本。

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

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

可视化

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

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

注意

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

代码 intelliSense

Python 笔记本集成了 Pylance 以增强 Python 编码体验,Pylance 是 Visual Studio Code 中 Python 的默认语言服务支持。 它提供多个易于使用的函数,例如关键字突出显示、快速信息、代码完成、参数信息和语法错误检测。 此外,当笔记本较长时,Pylance 的性能会更好。

数据科学功能

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

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

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

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

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

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

公共预览版已知限制

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

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

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

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

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