Notebook

更新时间:2025-03-26 07:49:15

DataWorksNotebook支持多种类型的单元格,提供了一个交互式且模块化的分析环境,旨在帮助用户高效地完成数据处理、分析、可视化以及模型构建。

功能介绍

DataWorks中,可以通过Notebook节点构建交互式、模块化的可复用分析环境。

  • 多引擎开发:DataWorks Notebook拥有SQL Cell功能,支持多种大数据引擎的SQL开发与分析。

  • 交互式分析

    • 交互式SQL查询:通过Python编写Widgets组件,通过在组件中直观选择或设置参数的取值,后续可以进一步在SQL中引用相同参数及取值,从而实现PythonSQL间的交互式查询功能。

    • SQL查询结果写入DataFrame:SQL查询结果可直接存储在Pandas DataFrame 或 MaxFrame DataFrame对象中,以变量的形式传递至后续单元格。

    • 可视化图表生成:基于DataFrame中的数据内容,您可以在Python Cell中读取DataFrame变量并绘制图表,实现PythonSQL的高效联动。

  • 大数据+AI一体化开发:在DataWorks Notebook中可以使用Pandas等库进行数据清洗与准备,使数据内容满足算法模型的输入要求。随后,基于清洗后的数据,轻松完成算法模型的开发、训练与评估,实现大数据与AI的无缝衔接。

  • 智能代码生成:DataWorks Notebook内置智能编程助手,支持通过DataWorks Copilot辅助生成SQL代码和Python代码,提升开发效率。

使用限制

  • 已创建工作空间,并参加数据开发(Data Studio)(新版)公测。用户可通过创建工作空间创建新版数据开发工作空间。

  • 已拥有Serverless资源组。详情请参见使用Serverless资源组

  • 已创建个人开发环境实例。在Data Studio中运行Notebook依赖个人开发环境实例,详情请参见创建个人开发环境实例

支持的单元格类型

  • SQL单元格:

    • 支持的单元格类型:MaxCompute SQLHologres SQLEMR SPARK SQLStarRocks SQLFlink SQL BatchFlink SQL Streaming

    • 支持的计算资源: MaxComputeHologresEMR Serverless SparkEMR Serverless StarRocks全托管Flink

  • Python单元格。

  • Markdown单元格。

创建个人开发环境实例

Notebook运行依赖个人开发环境实例,使用前需先创建并切换至目标实例,详情请参见创建个人开发环境实例

创建Notebook节点

  1. 进入数据开发(新版)页面。

    进入DataWorks工作空间列表页,在顶部切换至目标地域,找到已创建的工作空间,单击操作列的快速进入 > Data Studio,进入Data Studio。

  2. 创建Notebook。

    DataWorks支持在项目目录个人目录以及手动目录下创建Notebook。

    • 在左侧导航栏单击image按钮,进入数据开发页面,在项目目录人目录下创建Notebook。

      • 项目目录下创建Notebook

        • 单击image按钮,选中Notebook,来新建Notebook。

        • 若已创建的工作目录,鼠标悬浮在目录名上右键选择新建 > 新建节点 > Notebook新建Notebook。

        • 若已创建的工作流编辑工作流时,可添加Notebook节点。

      • 个人目录下创建Notebook

        • 单击image按钮,新建Notebook文件。

        • 单击image按钮,新增.ipynb格式的文件,实现新建Notebook。

        • 若已创建的文件夹,鼠标悬浮在文件夹名上右键选择新建Notebook来新建Notebook。

    • 在左侧导航栏单击image按钮,进入手动页面,在手动目录下单击image按钮,选择新建节点 > Notebook,新建Notebook。

开发Notebook节点

image

1. 添加单元格

Notebook节点工具栏中,可以根据需要,选择SQLPythonMarkdown新增按钮,快速创建对应的单元格。此外,您也可以在代码编辑区具体单元格上下方快速新增单元格。

  • 从当前单元格上方新增单元格:鼠标悬浮至单元格上边缘时展示新增按钮,单击新增按钮即可在当前单元格上方插入一个新单元格。

  • 从当前单元格下方新增单元格:鼠标悬浮至单元格下边缘时展示新增按钮,单击新增按钮即可在当前单元格下方插入一个新单元格。

说明

若您想重新调整单元格位置,可通过鼠标悬浮在单元格前蓝色线条上拖拽调整单元格顺序。

2. (可选)切换单元格类型

在单元格中,您可通过单元格右下角的单元格类型按钮,相互切换单元格类型。更多单元格类型可参见:支持的单元格类型

  • SQL单元格从MaxCompute SQL单元格变更为Hologres SQL或其他SQL单元格。

  • SQL单元格变更为Python单元格或Markdown单元格,或者将Python单元格或Markdown单元格切换为SQL单元格。

说明

在切换单元格类型时,编辑内容将保留,需手动将单元格内的代码调整为合适的类型。

3. 开发单元格代码

在相应的单元格内可编辑SQLPython以及Markdown代码,使用SQL单元格开发时,需确保SQL语法与选择的SQL单元格类型,即计算资源类型匹配。您可使用智能助手(DataWorks Copilot)辅助编程,以下为进入智能助手的方式:

  • 单元格工具栏进入:单击单元格右上方的image按钮,唤起Copilot的编辑器内聊天框,进行辅助编程。

  • 单元格右键菜单进入:选中单元格右键选择Copilot > 编辑器内聊天框,进行辅助编程。

  • 快捷键进入。

    • Mac系统Command+I键快捷呼出智能助手聊天框。

    • Windows系统Ctrl+I键快捷呼出智能助手聊天框。

运行Notebook

1. 选择个人开发环境

DataStudio中直接运行Notebook时,Notebook中的Python单元格需要基于个人开发环境来运行,因此需在页面上方手动选择已创建个人开发环境实例作为Notebook运行的环境。

2. 确认/切换Python内核

确认/切换Python内核:单击Notebook节点右上角的image按钮,确认当前Python单元格运行的Python内核版本,切换其他Python内核版本。

3. (可选)选择计算资源

4. 运行Notebook单元格

完成Notebook的单元格开发后,对所有单元格进行测试运行,也可以仅对单个单元格进行测试运行。

  • 运行全部单元格:编辑完成Notebook后,单击上方image按钮,测试运行该Notebook节点下的所有单元格。

  • 运行单个单元格:编辑完成Notebook内部的单元格后,单击单元格左侧image按钮,测试运行。

5. 查看运行结果

SQL单元格

单元格内支持撰写多种类型的SQL脚本,在运行SQL脚本后,将在单元格下方打印SQL运行结果。

  • 场景一:若SQL不包含SELECT语句,单元格运行之后默认只展示运行日志。

    CREATE TABLE IF NOT EXISTS product (
        product_id BIGINT,
        product_name STRING,
        product_type STRING,
        price DECIMAL(10, 2)
    )
    LIFECYCLE 30; -- 表示数据的生命周期为30天,超出后数据将被自动删除,这是一个可选设置
  • 场景二:若SQL包含SELECT语句,单元格运行之后将展示运行日志,并提供两种查看方式:表格和可视化图表。同时,系统会自动将查询结果生成一个DataFrame变量

    SELECT 
    product_id,
    product_name,
    product_type,
    price 
    FROM product;
    • 生成DataFrame数据对象:

      SQL单元格自动生成返回变量,可通过单击SQL单元格左下方的df_*变量名,为生成的DataFrame变量重新命名

      image

    • 查看SQL查询的表格:

      SQL查询运行完成后,在日志区域默认展示SQL查询表格。

      image

    • 查看SQL查询的可视化图表

      SQL查询运行完成后,在日志区域左侧单击image按钮,可以查看通过SQL查询生成的表数据的可视化图表。

      image

Python单元格

单元格内支持撰写Python脚本,在运行Python脚本后,将在单元格下方打印Python代码的运行结果。

  • 场景一:仅打印输出文本。

    print("Hello World")
  • 场景二:使用Pandas DataFrame。

    import pandas as pd
    
    # 定义产品数据,包括详细信息:产品名称、区域和登录频率。
    product_data = {
        'Product_Name': ['DataWorks', 'RDS MySQL', 'EMR Spark', 'MaxCompute'],
        'Product_Region': ['East China 2 (Shanghai)', 'North China 2 (Beijing)', 'South China 1 (Shenzhen)', 'Hong Kong'],
        'Login_Frequency': [33, 22, 11, 44]
    }
    
    # 根据给定的数据创建一个DataFrame。
    df_products = pd.DataFrame(product_data)
    
    # 打印DataFrame以显示产品信息。
    print(df_products)
    

    image

  • 场景三:绘制图表。

    import matplotlib.pyplot as plt
    
    # 数据
    categories = ['DataWorks', 'RDS MySQL', 'MaxCompute', 'EMR Spark', 'Hologres']
    values = [23, 45, 56, 78, 30]
    
    # 创建条形图
    plt.figure(figsize=(10, 6))
    plt.bar(categories, values, color=['blue', 'green', 'red', 'purple', 'orange'])
    
    # 添加标题和标签
    plt.title('Example Bar Chart')
    plt.xlabel('category')
    plt.ylabel('value')
    
    # 显示图形
    plt.show()
    

    image

Markdown单元格

  • 在编写完成后,单击image按钮后,可展示Markdown的文本和格式效果。

    # DataWorks Notebook
说明

在已展示的格式效果的Markdown单元格中,单击image按钮,可继续编辑该单元格。

后续操作:发布节点

  • 配置调度项目目录下的Notebook若要在生产环境中周期性调度运行,需要配置调度相关属性。例如:指定周期调度时间

    项目目录个人目录手动目录下的Notebook均默认使用个人开发环境的内核运行,当发布Notebook至生产环境时,系统将默认使用您在调度配置中选择的镜像环境执行。因此,发布Notebook前,请确保调度配置中选择的镜像,已包含运行Notebook节点需要的依赖环境。您可基于个人开发环境制作镜像,以便在调度时使用。

  • 发布节点:Notebook节点发布至生产环境后才会按照调度配置中的配置项运行,您可通过以下方式将节点发布至生产环境。

    • 项目目录下发布Notebook:保存Notebook后,单击image发布Notebook,发布后可在运维中心内的任务运维 > 周期任务运维 > 周期任务页面查看该Notebook任务。

    • 个人目录下发布Notebook:保存Notebook后,先单击image按钮将个人目录下的Notebook提交至项目目录下,再单击image发布Notebook,发布后可在运维中心内的任务运维 > 周期任务运维 > 周期任务页面查看该Notebook任务。

    • 手动目录下发布Notebook:保存Notebook后,单击image发布Notebook,发布后可在运维中心内的任务运维 > 手动任务运维 > 手动任务页面查看该Notebook任务。

  • 下线任务:下线Notebook时,右键单击节点或工作流,选择删除,根据界面提示对Notebook进行下线或删除。

场景与实践

使用内置Magic Command建立MaxCompute计算资源连接

Python单元格中,可使用内置的Magic Command建立与MaxCompute计算资源的连接,从而无需在Python中频繁重复定义连接信息和明文AccessKey信息

说明

在建立MaxCompute计算资源连接前,请确保已绑定MaxCompute(ODPS)计算资源

场景一:建立MaxCompute MaxFrame Session连接

使用Python单元格进行开发时,您可以使用以下内置的Magic Command唤起MaxCompute计算资源选择器,访问MaxCompute MaxFrame服务

  • 使用Magic Command连接并访问MaxCompute MaxFrame Session 。

    mf_session = %maxframe
  • 使用Python单元格的Magic Command释放MaxCompute MaxFrame连接:

    mf_session.destroy()

场景二:连接MaxCompute计算资源

使用Python单元格进行开发时,您可以使用以下内置的Magic Command唤起MaxCompute计算资源选择器,通过 Python 语言与 MaxCompute 进行交互,包括数据加载、查询、DDL 操作。

  1. 使用Magic Command创建MaxCompute连接。

    在单元格中输入以下命令会唤起MaxCompute计算资源选择器。

    o=%odps 
  2. 使用获取到的MaxCompute计算资源运行PyODPS脚本。

    例如,获取当前项目下的所有表:

    with o.execute_sql('show tables').open_reader() as reader:
        print(reader.raw)

SQL单元格结果传递至Python单元格

SQL单元格有输出结果时,将自动生成DataFrame变量,这些变量可被Python单元格获取,从而实现SQL单元格和Python单元格联动。

  1. 运行SQL单元格,生成DataFrame。

    • SQL单元格中包含一段查询SQL,则自动获取的这段SQL的结果作为DataFrame变量。

    • SQL单元格中包含多段查询SQL,则获取的DataFrame变量是多段查询SQL的最后一个查询结果。

    说明
    • DataFrame变量名默认为df_**,您可以通过单击单元格左下角的变量名对变量进行自定义。

    • 如果一个单元格中包含多个查询SQL,那么DataFrame变量存储的数据内容将仅包含最后一个运行的SQL查询结果。

  2. Python单元格中获取DataFrame变量。

    Python 单元格中可通过直接填写变量名获取DataFrame变量。

image

Notebook引用Python资源

Notebook在进行开发时,可通过##@resource_reference{"自定义名.py"}的方式引用MaxCompute资源,以下为引用Python资源的简单示例:

说明

Notebook引用Python资源仅在生产环境下生效,在开发环境下无法正常获取资源,请将Notebook发布至生产环境后,在运维中心执行。

新建Python的资源

  1. 添加Python资源文件。

    1. 进入DataWorks工作空间列表页,在顶部切换至目标地域,找到已创建的工作空间,单击操作列的快速进入 > Data Studio,进入Data Studio。

    2. 在左侧导航栏单击image,进入资源管理。

    3. 资源管理页面,单击新建按钮或image,您也可以先新建目录,规划资源管理目录后,再在相应目录上右键,选择新建,选择具体创建的资源或函数类型。

    4. 新建MaxCompute Python资源。

      本示例将该Python资源命名为:hello.py

  2. 编辑Python资源文件内容,示例代码如下:

    # your_script.py
    def greet(name):
        print(f"Hello, {name}!")

    编辑完成后,单击保存,保存Python代码。

  3. 完成代码的编辑与保存后,单击image按钮,保存hello.py资源。

  4. 资源保存成功后,单击image按钮,发布hello.py资源至开发以及生产环境。

引用Python资源

  1. 新增Notebook节点,详情可参见创建Notebook节点

  2. Notebook中新增Python单元格,详情可参见1. 添加单元格

    Python单元格中编写的##@resource_reference{"hello.py"}引用新建的MaxCompute Python资源,以下为示例代码:

    # 通过该注释在调度时引用一个名称为hello.py的Python资源
    ##@resource_reference{"hello.py"}
    
    import sys
    import os
    
    # 将当前工作目录添加到路径中
    sys.path.append(os.path.abspath('./hello.py'))  # 或者使用相对路径,根据实际情况进行调整
    from hello import greet  # 替换为实际的函数名
    greet('DataWorks')
    
  3. 完成Python单元格的代码编写与节点调度配置后,保存并发布Notebook节点。

  4. 进入运维中心(工作流),在周期任务运维 > 周期任务中找到已发布的Notebook节点,单击操作列补数据,对Notebook节点进行补数据,补数据详情可参见:执行补数据并查看补数据实例(新版)

  5. 完成补数据后,即可通过查看Notebook节点运行日志来确认Python单元格是否执行成功。

附录:通用操作

DataWorksNotebook操作基于VSCodeJupyter Notebook以下是单元格中的一些通用操作:

单元格工具栏操作

image

  • 单元格添加标签

    • 首次添加:单击单元格工具栏的image按钮,选择Add Cell Tag后,在弹窗内添加标签。

    • 后续添加:单击单元格下方的image按钮,快速为单元格添加更多标签。

  • 编辑单元格标签:单击单元格工具栏的image按钮,选择Edit Cell Tags(JSON)后,会进入该JSON编辑页面,对标签进行编辑。

  • 标记单元格为参数:单击单元格工具栏的image按钮,选择Mark Cell as Parameters为单元格添加参数标签。

节点通用操作

image

  • 查看Notebook变量:在Notebook上方工具栏单击image按钮,可查看Notebook中所有的变量参数信息,包含变量的NameTypeSize以及Value信息。

  • 查看Notebook大纲:在Notebook上方工具栏单击image按钮,可查看Markdown单元格形成的Notebook文本大纲。

  • 切换Python运行内核:单击Notebook节点右上角的image按钮,确认当前Python单元格运行的Python内核版本,切换其他Python内核版本。

  • 本页导读 (1)
  • 功能介绍
  • 使用限制
  • 支持的单元格类型
  • 创建个人开发环境实例
  • 创建Notebook节点
  • 开发Notebook节点
  • 1. 添加单元格
  • 2. (可选)切换单元格类型
  • 3. 开发单元格代码
  • 运行Notebook
  • 1. 选择个人开发环境
  • 2. 确认/切换Python内核
  • 3. (可选)选择计算资源
  • 4. 运行Notebook单元格
  • 5. 查看运行结果
  • 后续操作:发布节点
  • 场景与实践
  • 使用内置Magic Command建立MaxCompute计算资源连接
  • 将SQL单元格结果传递至Python单元格
  • Notebook引用Python资源
  • 附录:通用操作
  • 单元格工具栏操作
  • 节点通用操作