DataWorks 快速入门:交互式数据开发与分析

DataWorks快速入门指南:通过Notebook进行交互式数据开发和分析,体验SQL、Python及Copilot的强大功能。

原文标题:轻松搞定,数据开发与分析也能如此简单方便!

原文作者:阿里云开发者

冷月清谈:

本文介绍了如何使用阿里云 DataWorks 进行交互式数据开发与分析。DataWorks 是一款一站式智能大数据开发治理平台,支持多种计算服务。实验中,用户将使用 DataWorks Notebook 创建个人开发环境,连接 MaxCompute 等计算资源进行 SQL 数据开发,并使用 Python 进行数据分析。文章详细讲解了 Notebook 的新建、多引擎 SQL 开发、Python 开发以及交互式分析等步骤,并演示了如何使用 DataWorks Copilot 进行智能数据开发。

具体步骤包括:

1. 开通 DataWorks 产品并选择地域;
2. 创建工作空间和个人开发环境实例;
3. 新建 Notebook;
4. 使用 MaxCompute、Hologres、EMR Spark SQL、StarRocks SQL 和 Flink SQL 进行交互式 SQL 开发;
5. 使用 Python 进行数据分析和可视化;
6. 使用 Python 的 ipywidgets 组件实现交互式查询;
7. 使用 DataWorks Copilot 进行 SQL 改写、解释、注释生成以及智能建表。

怜星夜思:

1、DataWorks 的 Notebook 功能与传统的 IDE 相比,有哪些优势和劣势?
2、文章中提到了多种 SQL 引擎,实际应用中应该如何选择合适的引擎?
3、DataWorks Copilot 的智能化程度如何?它能完全替代人工编写代码吗?

原文内容

一、引言

DataWorks是一站式智能大数据开发治理平台,深度适配阿里云MaxCompute、EMR、Hologres、Flink、PAI 等数十种大数据和AI计算服务,为数据仓库、数据湖、OpenLake湖仓一体、Data+AI解决方案提供全链路智能化的数据集成、大数据AI一体化开发、数据分析与主动式数据资产治理服务,帮助企业进行Data+AI全生命周期数据管理。


本次DataWorks智能交互式数据开发与分析实验中,将使用数据开发Data Studio中的Notebook开发环境,创建一个独享的个人开发环境实例,并在该实例上,连接并使用MaxCompute等计算资源进行SQL数据开发,也可以连接并使用本地的Python环境进行数据开发与分析。同时在此过程中,可使用DataWorks 智能助手Copilot,体验智能的数据开发与分析体验。



本次实验将带您进行DataWorks Notebook的快速入门,包含:Notebook新建、多引擎SQL开发与分析、Python开发、交互式分析等。同时,使用DataWorks Copilot体验智能数据开发,体验智能交互式数据探索之旅。

二、操作教程


产品开通

1.请先确保具有DataWork产品,若无该产品可前往官网按需购买开通;按需选择地域:华东1(上海)。
2.进入DataWorks产品控制台,选择大数据体验下的DataWorks Gallery,点击Notebook快速入门的载入案例。
(https://dataworks.console.aliyun.com)
【操作注意】进入控制台后需要选择刚刚创建资源的对应地域


创建个人开发环境

1.在载入案例弹出框内,点击创建工作空间(若在DataWorks下无工作空间),并填写工作空间名称。若之前没有创建过资源组,则按照指引新建资源组,并绑定到刚刚创建的工作空间上。

2.创建个人开发环境实例,给实例命名,并选择资源组,设定资源配合,最小2CU即可满足实验要求。待个人开发状态显示为运行中。

3.工作空间和个人开发环境实例创建完后,点击确定后进入个人开发空间。并新建Notebook。


应用体验

(一)以MaxCompute为例进行交互式开发
1.点击图片,在弹出的SQL Cell中选择您想运行的大数据引擎

2.点击SQL Cell的请选择计算资源,在弹出框下选择要绑定的计算资源,若您在MaxCompute下无资源,则需点击“+绑定计算资源”


3.选择资源类型 MaxCompute,并点击绑定计算资源

4.新建MaxCompute项目后进行绑定

5.输入以下SQL命令
SELECT 'James' AS name, '25' AS age, 'Hangzhou' AS city;
6.再次点击执行SQL,可得到执行结果


7.(可选)同样,在Notebook中,支持新增各种SQL Cell,面向多样化大数据引擎进行数据开发与分析。您可以选择其他大数据引擎进行开发分析,以下是SQL示例。
说明:如果您选择其他大数据引擎进行开发分析,可能导致费用发生变化,请以控制台显示的实际价格和最终账单为准。
a. Hologres SQL Cell
SELECT 'James' AS name, '25' AS age, 'Hangzhou' AS city;
b. EMR Spark SQL Cell
SELECT 'James' AS name, '25' AS age, 'Hangzhou' AS city;
c. StarRocks SQL Cell
SELECT 'James' AS name, '25' AS age, 'Hangzhou' AS city;
d. 以上输入的输出结果均为

e. Flink SQL Cell
-- @conf name = flink_vvp_job_quick_start
-- @conf engineVersion=vvr-8.0.8-flink-1.17
-- @conf flinkConf."execution.checkpointing.interval"=10second
-- @conf flinkConf."taskmanager.numberOfTaskSlots"=4
-- @conf flinkConf."table.exec.state.ttl"=1hour
-- @conf flinkConf."execution.checkpointing.min-pause"=10second
-- @conf streamingResourceSetting.resourceSettingMode=BASIC
-- @conf streamingResourceSetting.basicResourceSetting.parallelism=4
-- @conf streamingResourceSetting.basicResourceSetting.taskmanagerResourceSettingSpec.memory=4GiB
-- @conf streamingResourceSetting.basicResourceSetting.taskmanagerResourceSettingSpec.cpu=1
-- @conf streamingResourceSetting.basicResourceSetting.jobmanagerResourceSettingSpec.memory=4GiB
-- @conf streamingResourceSetting.basicResourceSetting.jobmanagerResourceSettingSpec.cpu=1
--创建临时源表datagen_source。
CREATE TEMPORARY TABLE datagen_source(
randstr VARCHAR
) WITH (
'connector' = 'datagen' -- datagen连接器
);
--创建临时结果表print_table。
CREATE TEMPORARY TABLE print_table(
randstr  VARCHAR
) WITH (
'connector' = 'print',   -- print连接器
'logger' = 'true'        -- 控制台显示计算结果
);
--将randstr字段截取后打印出来。
INSERT INTO print_table
SELECT SUBSTRING(randstr,0,8) from datagen_source;
输出结果


(二)使用Python进行数据分析

1.  在Notebook中,能够新增Python Cell,编写Python代码进行数据处理和开发等

在Python Cell中输入示例代码
import matplotlib.pyplot as plt
# 数据准备
categories = ['Category A', 'Category B', 'Category C', 'Category D']
values = [23, 45, 17, 56]
# 创建柱状图
plt.figure(figsize=(10, 6))  # 设置图形大小
plt.bar(categories, values, color=['blue', 'green', 'red', 'purple'])  # 绘制柱状图,可自定义颜色
# 添加标题和轴标签
plt.title('Sample Bar Chart')
plt.xlabel('Categories')
plt.ylabel('Values')
# 显示数值
for i in range(len(values)):
plt.text(i, values[i], str(values[i]), ha='center', va='bottom')  # 在每个柱子下方显示数值
# 显示图形
plt.show()

运行后即可获得示例柱状图:



2. 交互式分析

在Notebook中,您可以使用Python封装ipywidgets交互组件,并在SQL中引用该交互组件的变量,以实现灵活的交互式查询。
a. 在Python Cell中输入以下内容,使用Python构建ipywidgest交互组件
from ipywidgets import interactive,IntSlider
query_age = 20
def f(age):
global query_age
query_age = age
interactive(f, age=IntSlider(value=20, min=1, max=100, step=1, description='查询年龄:'))
可得到下面的输出结果

图片


b. 使用SQL引用交互组件中对象进行查询
SELECT '${query_age}' AS age;




(三)体验智能助手Copilot

DataWorks Copilot⽀持根据⾃然语⾔对已有代码进⾏纠错、注释⽣成及代码解释等操作。同时,还⽀持为您解答SQL相关的语法及函数问题。

1.SQL改写

在代码编辑器中,输⼊并选中下面的代码,单击顶部菜单栏右侧的Copilot

图片,进⼊Copilot Chat功能界⾯,在Chat输⼊框中,输⼊您的改写要求,单击发送,等待Copilot返回结果。


预设代码:
SELECT ds
,spu_id
,SUM(sales_amt) AS total_sales
,COUNT(DISTINCT order_id) AS total_orders
,COUNT(DISTINCT sku_id) AS total_skus
,COUNT(DISTINCT buyer_id) AS total_buyers
,COUNT(DISTINCT buyer_id) / COUNT(DISTINCT order_id) AS avg_buyers
_per_order
,COUNT(DISTINCT buyer_id) / COUNT(DISTINCT sku_id) AS avg_buyers_p
er_sku
,SUM(sales_amt) / COUNT(DISTINCT order_id) AS avg_sales_per_order
,SUM(sales_amt) / COUNT(DISTINCT sku_id) AS avg_sales_per_sku
FROM default.dwd_ec_trd_create_ord_di
WHERE order_date BETWEEN '2024-09-01' AND '2024-09-18'
GROUP BY ds
,spu_id
ORDER BY total_sales DESC
LIMIT 10
;
预设指令:
修改SQL,将其结果从列转置为行,使用unpivot


2.SQL 解释
预设代码:
SELECT season
,SUM(tran_amt) AS total
FROM mf_cop_sales
PIVOT (SUM(tran_amt) FOR season IN ('Q1' AS spring,'Q2' AS summer,'Q3' AS a
utumn,'Q4' AS winter))AS pivot_tablel
;
预设指令:
解释这段代码


3.生成注释
预设代码:
CREATE TABLE ods_mbr_user_info
(
id BIGINT
,gmt_create STRING
,gmt_modified STRING
,id_card_number STRING
,id_card_type STRING
,is_delete STRING
,nick STRING
,reg_address STRING
,reg_birthdate STRING
,reg_city_id STRING
,reg_email STRING
,reg_fullname STRING
,reg_gender STRING
,reg_mobile_phone STRING
,reg_nation_id STRING
,reg_prov_id STRING
,user_active_time STRING
,user_active_type STRING
,user_id BIGINT
,user_regdate STRING
,user_regip STRING
,vip_level STRING
)
COMMENT '';
预设指令:
为每个字短添加注释


4.智能建表
在Data Studio⻚⾯,单击左侧⼀级菜单栏中的数据⽬录,在数据⽬录列表中,选择任意⼀个数据⽬录,新建表,进⼊新建表的功能界⾯,单击⻚⾯顶部中的Copilot 建表,进⼊Copilot 建表功能界⾯,在输⼊框中,输⼊您的指令,单击发送,等待Copilot返回结果。




点击阅读原文,体验DataWorks智能交互式数据开发与分析之旅,完成指定任务,可获得新年礼物,先到先得~

从数据分析师的角度来看,Notebook 的优势在于它更像一个“草稿本”,可以方便地进行数据探索和实验。而且可以图文并茂地展示结果,方便沟通和分享。但对于复杂的工程项目,IDE 则更胜一筹,毕竟代码管理、调试、协同开发等功能更完善。

我觉得 Notebook 最大的优势就是交互性强,可以一步步执行代码,方便调试和探索数据。而且结果可以直接展示在代码下方,很直观。不像传统 IDE,每次修改都要重新编译运行,比较麻烦。当然,Notebook 也有一些不足,比如代码版本管理不如 IDE 方便,大型项目的代码组织也比较困难。

我觉得 Copilot 最大的价值在于它可以帮助我们学习和理解代码,尤其是对于新手来说。它可以解释代码的含义,提供一些最佳实践,帮助我们快速上手。

Copilot 只是一个辅助工具,可以提高效率,但不能完全替代人工。它可以帮助我们生成一些代码片段、注释,或者解释代码的含义,但复杂的业务逻辑还是需要人工来实现。

选择引擎要根据具体的业务场景和数据特点。比如 MaxCompute 适合海量数据离线处理,Hologres 适合实时分析,EMR 適合大规模分布式计算。需要综合考虑性能、成本、易用性等因素。

目前来看,Copilot 的智能化程度还有待提高,有些生成的代码并不完全符合预期,需要人工进行修改。但我相信随着技术的进步,它会越来越智能,最终成为程序员的得力助手。

可以从数据量、数据类型、查询模式、延迟要求等方面入手。比如数据量小,查询模式简单,可以选择轻量级的引擎;数据量大,对实时性要求高,可以选择 Hologres 等实时分析引擎。

补充一点,Notebook 的可分享性也是一大优势,可以直接把整个分析过程分享给别人,复现也很方便。这一点在教学和协作方面非常有用。

如果对不同的引擎不熟悉,也可以先用 DataWorks 试用一下,看看哪个更符合自己的需求。DataWorks 提供了比较便捷的引擎切换方式,方便进行对比测试。