DataWorks Notebook 提供一个交互式、模块化的数据分析与开发环境。您可以使用 Python、SQL 和 Markdown 单元格,连接 MaxCompute、EMR、AnalyticDB 等多种计算引擎,实现从数据处理、探索性分析、可视化到模型开发的全链路任务。本文档将指导您如何高效使用 Notebook 完成数据开发与调度任务。
快速入门:5分钟运行您的第一个Notebook
本节将引导您完成一个最简流程:创建一个 Notebook,使用 Python 传递参数给 SQL,并查询 MaxCompute 表数据。
开始前,请确保您已满足以下条件:
当前工作空间已开通并使用新版数据开发(Data Studio)。
已创建Serverless 资源组。Notebook在生产环境运行需要依赖Serverless资源组。
已创建个人开发环境实例。Notebook在开发环境调试运行需要依赖个人开发环境实例。
如果您尚未创建,请参见创建个人开发环境实例。
操作步骤:

创建 Notebook 节点
进入 Data Studio,在数据开发的项目目录下,新建 Notebook 节点。
为 Notebook 命名(例如
hello_notebook)并提交。
选择个人开发环境
在顶部导航处单击个人开发环境,从下拉列表中选择您已创建的个人开发环境实例。
编写 Python 单元格以定义参数
添加一个Python单元格,并输入以下代码。此步骤定义一个城市变量,用于后续的 SQL 查询。
# 定义一个变量,用于后续SQL查询 city = 'Beijing' print(f"已定义城市变量 city = {city}")编写 SQL 单元格以查询数据
在第一个单元格下方,新增一个 SQL 单元格。
在单元格右下角,将 SQL 类型切换为
MaxCompute SQL。输入以下 SQL 代码。代码通过
${city}语法引用了上一步 Python 单元格中定义的city变量。-- 使用Python中定义的变量进行查询 SELECT '${city}' AS city;
运行并查看结果
单击 Notebook 上方工具栏的全部运行按钮。
观察每个单元格的运行情况:
Python 单元格下方会输出
已定义城市变量 city = Beijing。SQL 单元格下方会显示查询结果的表格。
至此,您已成功创建并运行一个包含 Python 和 SQL 交互的 Notebook。
核心概念
理解以下核心概念,是确保 Notebook 在开发和生产环境中行为一致的关键。
开发环境 vs. 生产环境
对比项 | 开发环境 | 生产环境 |
运行载体 | 个人开发环境实例 | 调度配置中指定的资源组和镜像 |
核心差异 | 使用个人独占的开发实例,您可以在其中自由安装 Python 库进行调试。 | 无论是通过运维中心周期性调度,还是在 Data Studio 中手动触发工作流运行,任务都会在调度配置中指定的资源组上运行。其环境(如依赖库、网络等)完全由您选择的镜像和资源组配置决定。 |
如何保障一致 | 如果您在个人开发环境实例中通过 pip install 等方式进行了Python包的安装,为确保生产环境具备与开发环境时相同的依赖,您需将个人开发环境制作DataWorks镜像,并在调度配置中选用该自定义镜像。 重要 网络连通情况说明:个人开发环境不绑定VPC时,默认绑定一个带宽有限的随机公网IP,可直接连通公网;但发布至生产环境的Notebook节点网络是跟随调度配置里配置的资源组。建议在个人开发环境中绑定调度配置的资源组,此时两者环境保持网络一致。 | |
计算资源与内核
计算资源:指 Notebook 连接的后端计算引擎,如 MaxCompute、EMR Serverless Spark 等。SQL 单元格必须绑定一个计算资源来执行。
Python 内核:指执行 Python 代码的后端环境。在 DataWorks Notebook 中,这通常是您的个人开发环境实例。您可以通过 Magic Command(如
%odps)在 Python 代码中建立与计算资源的连接,从而提交任务或操作数据。
目录类型与适用场景
您创建 Notebook 的位置决定其协作模式、权限和发布流程。
目录类型 | 适用场景 | 协作与发布 |
项目目录 | 团队协作与周期性生产任务。此目录下的节点是工作空间共享的,遵循标准的开发、提交、发布流程。 | 允许多人协作开发。节点需要发布到生产环境,才能被周期性调度。 |
个人目录 | 个人开发与调试。此目录对其他工作空间成员不可见,用于存放个人脚本和临时任务。 | 仅自己可见。若要被调度,需先提交到项目目录,再进行发布。 |
开发与调试 Notebook
Data Studio默认不自动保存,建议您开发过程及时手动保存,避免丢失代码。您也可在Data Studio的编辑器设置 > Files: Auto Save中,设置为自动保存。
若运行过程中卡顿或长时间无反应,可点击上方工具栏的重启按钮重启Notebook内核。
单元格管理
添加单元格:将鼠标悬停在现有单元格的上方或下方边缘,单击出现的+ SQL等按钮。也可以使用顶部工具栏的按钮。
切换单元格类型:单击单元格右下角的类型标识(如
Python),在弹出的菜单中选择新的类型,如SQL、Markdown。切换类型时,单元格内的代码内容会保留,您需要手动修改以适应新类型。移动单元格:将鼠标悬停在单元格左侧的蓝色竖线上,按住并拖动即可调整顺序。
运行单元格:
运行单个:单击单元格左侧的运行按钮。
运行全部:单击 Notebook 顶部工具栏的全部运行按钮。
参数传递
Python 变量传递至 SQL
在 Python 单元格中定义的变量,可以在后续的 SQL 单元格中通过 ${变量名} 的格式直接引用。
示例:
Python 单元格
table_name = "dwd_user_info_d" limit_num = 10SQL 单元格
SELECT * FROM ${table_name} LIMIT ${limit_num};
SQL 结果传递至 Python
当一个 SQL 单元格执行SELECT 查询后,其结果会自动生成一个 DataFrame 变量,可供后续的 Python 单元格使用。
若存在多个SQL语句,仅会将最后一条SQL语句的结果存入DataFrame变量。
变量命名:默认变量名为
df_开头,您可以单击 SQL 单元格左下角的变量名进行重命名。变量类型:
若支持多种变量类型,点击左下角DataFrame也切换类型。
对于 MaxCompute SQL,支持
Pandas DataFrame和MaxCompute MaxFrame对象。对于ADB Spark SQL,支持
Pandas DataFrame和PySpark MaxFrame对象。对于其他 SQL 类型,生成的是
Pandas DataFrame对象。
示例:

Copilot 辅助编程
DataWorks Copilot 是内置的智能编程助手,可以帮助您生成和解释代码。
唤起方式:
在选择的单元格左上方单击 Copilot
图标。在SQL单元格内右键,选择 Copilot。
使用快捷键
Cmd+I(Mac) 或Ctrl+I(Windows)。
调度与发布 Notebook
为了让 Notebook 能够按计划周期性运行,您需要进行调度配置并将其发布到生产环境。
1、配置调度参数(参数化调度)
如需每次调度运行时,Notebook 中的参数能动态变化(例如,按天处理不同分区的数据),可以设置参数化调度。
标记参数单元格: 在包含核心参数定义的 Python 单元格中,单击右上角的
...菜单,选择 Mark Cell as Parameters。该单元格会被添加一个parameters标签,表明它是调度任务的参数入口。
配置调度参数:
在 Notebook 右侧面板,单击调度配置。
在调度参数区域,为您在代码中定义的变量(如
var)赋值。
当任务被调度系统自动执行时,代码中 var 参数的实际值,将由在调度参数中配置的值动态替换。
2、配置运行环境与资源
配置镜像:在调度配置中,选择一个包含 Notebook 运行所需全部依赖的镜像。这是确保生产环境成功运行的关键。
重要如果您在个人开发环境实例中通过 pip install 等方式进行了Python包的安装,为确保生产环境具备与开发环境时相同的依赖,您需将个人开发环境制作DataWorks镜像,并在调度配置中选用该自定义镜像。
配置资源组:选择用于执行任务的资源组。对于 Serverless 资源组,建议配置不超过
16CU,以避免因资源不足导致任务启动失败。单个任务最大支持64CU。配置关联角色:如需进行细粒度的权限管控,可以为节点关联一个特定的 RAM角色,使其以该角色的身份运行。详情请参见配置节点关联角色。
3、发布节点
只有项目目录下的节点才能被发布和周期性调度。
对于项目目录下的 Notebook:完成配置后,单击顶部工具栏的发布按钮。
对于个人目录下的 Notebook:需先单击保存按钮,将其提交到项目目录,然后再执行发布操作。
发布成功后,您可以在运维中心的周期任务页面监控和管理您的 Notebook 任务。
常见问题
Q:为什么我的代码在开发时能访问公网,但调度运行时却失败了?
A:这是因为开发环境和生产环境的网络策略不同。
开发环境 (个人开发环境):为了方便调试,个人开发环境实例在未设置VPC的情况下,默认会提供有限的公网访问能力,让您可以临时安装包或调用API。
生产环境 (周期调度任务): 出于安全和稳定考虑,默认在专有网络中运行,不能直接访问公网。任务的网络配置由您在调度配置中选择的资源组决定。如果该资源组所在VPC没有配置NAT网关,则无法访问公网。
解决方案: 确保个人开发环境实例和Serverless资源组设置相同的VPC专有网络。
Q:为什么我的代码在开发环境时成功运行,但调度运行时却找不到三方包?
A:请确保已将所有依赖包(如Python库)提前制作成自定义镜像,并在调度配置中指定该镜像。详情请参见个人开发环境制作DataWorks镜像。
Q:我如何更换Python内核版本?
A:可在个人开发环境的终端
手动安装需要Python版本,然后在Notebook工具栏右侧单击
按钮,切换其他Python内核版本。不推荐使用额外安装Python内核,因为新建版本不具备SQL单元格需要的依赖,无法正常使用。