Copilot是您在DataWorks的智能助手,它能够根据自然语言快速完成多种SQL相关操作,包括生成SQL、改写SQL、SQL错误纠正及生成注释等。使用DataWorks的Copilot,可帮助您轻松、高效、便捷地完成数据ETL及数据分析工作,节省大量时间和精力。本文为您介绍如何使用Copilot及增强分析实现一站式智能数据查询与可视化。
注意事项
本教程使用的相关SQL代码,详情请参见附录:报告中所有卡片用到的SQL代码。
环境准备
开通DataWorks
登录免费试用。
进入阿里云免费试用,单击页面右上方的登录/注册,根据页面提示完成账号的登录操作。
账号登录:已有阿里云账号则直接登录。
账号注册:若无阿里云账号,需先进行账号注册。
实名认证:根据试用产品要求完成个人实名认证或企业实名认证。
成功登录后,在免费试用页面单击大数据开发治理平台 DataWorks产品的立即试用。
在弹出的DataWorks产品购买面板选择开通地域为华东2(上海),勾选服务协议后单击确认订单并支付,按照界面指引开通DataWorks。
开通MaxCompute
本教程还需使用MaxCompute产品,您可进入申请免费试用MaxCompute页面,在免费试用中申请免费额度的MaxCompute资源包进行本教程的操作。MaxCompute免费资源包的支持地域及免费额度介绍,请参见新用户免费试用额度。
若此前已申请过MaxCompute的免费试用,可登录MaxCompute控制台查看华东2(上海)地域是否已开通,若界面提示该地域未开通,您可单击欢迎界面的立即开通MaxCompute进行开通。
若您不符合免费使用MaxCompute规则的条件,则可开通按量计费版本的MaxCompute使用,计费详情请参见计费概述。
DataWorks创建MaxCompute数据源
登录MaxCompute控制台,在左上角选择本教程使用的华东2(上海)地域。
单击左侧导航的工作区>项目管理,在项目列表页面单击新建项目。
根据界面指引配置项目信息。主要参数说明如下。
参数
描述
项目名称
自定义项目名称。本教程示例名称配置为doc_test_000。
项目名称需全局唯一,若界面提示您项目名称已存在,您可根据提示修改名称。
计算资源付费类型
定义MaxCompute项目按照哪种付费方式进行计费。本教程选择按量付费。
说明您通过免费试用选购的资源抵扣包仅可用于抵扣后付费资源消耗。
默认Quota
用于实现计算资源分配。本教程选择默认后付费Quota。
单SQL消费限制
可选项,本教程不设置。
该参数为单SQL消费的最高阈值。单位为扫描量(GB)*复杂度。当选择按量付费计费类型时建议设置,以避免非预期的单SQL消费过高。同时建议配置实时消费监控告警,多方位监控限制消费超出预期,详情请参见消费监控告警。
数据类型
MaxCompute数据类型包含1.0数据类型、2.0数据类型和Hive兼容类型。本教程选择2.0数据类型。
是否加密
指定创建的MaxCompute项目是否需要开启数据加密功能。更多数据加密信息,请参见存储加密。本教程选择不加密。
配置完成后单击确定,完成项目创建。
绑定MaxCompute项目
进入DataWorks工作空间管理中心。
登录DataWorks控制台,在左上角选择本教程使用的华东2(上海)地域。
单击左侧导航的工作空间,进入工作空间列表页面,找到需绑定MaxCompute项目的工作空间。本教程示例使用默认工作空间,您也可以使用您已创建的工作空间。
单击您所创建的工作空间右侧操作栏中的管理,进入管理中心。
将MaxCompute项目创建为数据源。
在管理中心左侧导航栏,单击
,进入数据源管理页面。单击
,创建MaxCompute数据源。配置数据源信息。
主要参数说明如下。
参数
描述
数据源名称
定义数据源在DataWorks的名称,名称必须唯一。本教程示例名称配置为doc_test_000。
认证方式
默认通过阿里云账号及阿里云RAM角色身份进行认证。
数据源创建方式
选择已有MaxCompute项目。
所属云账号
选择当前阿里云主账号。
地域
选择华东2(上海)。
MaxCompute项目名称
选择本文示例创建的doc_test_000。
默认访问身份
选择阿里云主账号。
说明若您使用的是标准模式的工作空间,则开发环境选择执行者,生产环境选择阿里云主账号。
Endpoint
选择自动适配。
更多数据源配置介绍,详情请参见创建MaxCompute数据源。
测试Serverless资源组连通性。
您需测试所需的Serverless资源组与数据源的连通性。若资源组与数据源无法连通,则相应数据源任务将无法正常执行。资源组连通详情请参考:网络连通。
DataWorks数据开发绑定MaxCompute数据源。
在管理中心页面,单击左侧导航栏的
,进入数据开发页面,在左侧导航栏单击数据源,按照界面指引选择上述步骤创建的数据源,将该数据源绑定到数据开发。
在DataWorks体验SQL生成等Copilot产品功能
进入Copilot功能界面。
在DataStudio(数据开发)页面,单击顶部菜单栏右侧的Copilot,进入Copilot功能界面。
查看Copilot支持的用户操作。
在Copilot对话框(后续简称Copilot Chat),输入“/”,可查看Copilot支持的用户操作。您可选中某一项操作后,通过自然语言输入您的需求;也可直接通过自然语言输入您的需求。
您可根据需要选择合适的操作使用,具体如下表。
操作
描述
快捷找表
在Copilot Chat中输入指令,如“网站用户页面访问日志表”,在Copilot的返回结果单击要选择的表名前方的单选框,选中该表后,后续SQL操作将会基于该表展开。
SQL生成
在Copilot Chat中输入指令,如“统计不同时间段的页面访问次数”,单击发送按钮,等待Copilot返回结果。
新建节点
生成SQL后,我们可将生成的SQL插入到当前节点或新的节点。
示例:在Chat返回结果中,单击SQL片段右上角的插入到新节点,则会生成新的ODPS SQL节点,且生成的SQL也会插入到新生成的节点中。
SQL改写
单击SQL改写,在出现的输入框中输入指令,如“将结果写入到分区表dws_ali_e_commerce中,并生成dws_ali_e_commerce的建表语句”,单击发送按钮,等待Copilot返回结果。
生成注释
上述步骤生成的DDL语句中,由于缺少字段的COMMENT信息,任务发布后,表的使用者会较难理解表的字段内容。我们可通过Copilot的生成注释功能,为这段DDL语句增加COMMENT信息。
在编辑器中,鼠标右键单击SQL代码,选择
,单击发送按钮,等待Copilot返回结果。SQL纠错
在编辑器中,鼠标右键单击SQL代码,选择
,单击发送按钮,等待Copilot返回结果。SQL解释
在编辑器中选中目标SQL,鼠标单击页面顶部的Copilot,在Chat对话框中输入指令,如“解释一下这段SQL”,单击发送按钮,等待Copilot返回结果。
调度配置
对于已经准备好的数据开发代码,在将其发布为调度任务之前,需先完成调度配置。
在Chat对话框中输入指令,如“将调度时间设置为每天凌晨两点,可重跑”,单击发送按钮,等待Copilot返回结果。
任务提交
对于已经准备好的数据开发代码,在完成调度配置后,可发起任务提交。
单击Chat中调度配置卡片下方的应用并提交节点,即可进入任务提交流程。
在DataWorks进行数据查询体验
在已打开的DataStudio(数据开发)页面,单击左上角的图标,选择全部产品>数据分析>SQL查询。
在DataWorks的SQL查询页面中,默认会创建一个新的SQL查询页面,将上述步骤生成的SQL代码拷贝至该页面。
SELECT CASE WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 0 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 3 THEN '00点-03点' WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 3 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 6 THEN '03点-06点' WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 6 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 9 THEN '06点-09点' WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 9 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 12 THEN '09点-12点' WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 12 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 15 THEN '12点-15点' WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 15 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 18 THEN '15点-18点' WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 18 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 21 THEN '18点-21点' WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 21 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 24 THEN '21点-24点' ELSE '其他' END AS 时间段 ,COUNT(1) as 页面访问次数 FROM public_cloud_simple.dwd_ali_e_commerce WHERE behavior_type = 1 GROUP BY 时间段 order by 时间段;
单击SQL查询文件右上角的图标,设置工作空间及引擎信息。
完成设置后,单击SQL查询文件操作栏中的运行按钮,运行成功后,在SQL文件下方会显示查询结果。
创建DataWorks增强分析-卡片
在SQL查询结果区域,若希望将查询结果数据通过可视化的图示方式展现,则可单击图标,系统会默认为您生成一个可视化的图表。
如系统默认生成的可视化图表不符合预期,则可单击图表右上方的图标,进入图表编辑页面。
本教程以修改图表横纵坐标标题的展示示例。
单击图表编辑页面右侧的
。单击X轴和Y轴的辅标题,根据需要修改标题。修改完毕后,单击页面右上方的保存,返回SQL查询结果页面。
如系统默认生成的可视化图表或者修改后的可视化图表符合预期,您可单击图表右上方的保存卡片,将该结果持久化保存下来并分享。单击页面左侧一级菜单中的图标,即可查看已保存的卡片。
创建DataWorks增强分析-报告
如需把沉淀在DataWorks报告中的若干个卡片,通过有图表、有描述、有逻辑地一同分享给其他人,则可通过创建报告实现。
单击页面左侧一级菜单中的报告图标,在打开的报告列表页中,单击页面右上角的创建报告。
在打开的弹窗中,勾选需要加入到当前报告的若干个卡片。
单击弹窗右下角的确定,返回报告编辑页面。
如需调整卡片在报告中的展示顺序,可在页面左侧卡片顺序编辑区域中拖动卡片来完成。
如需修改报告标题,双击图表标题修改为所需的图表标题。
本教程将图表标题修改为“某购物APP用户分析报告”。单击页面右侧的报告主题,选择合适的主题。
单击页面右上角的创建,返回报告列表页;鼠标hover到需要分享给他人的报告上,单击右上角的图标,在分享的弹窗中复制分享链接,发送给需要分享的对象。本教程中报告的分享地址为《某购物APP的用户分析报告》。
上传自定义数据至MaxCompute
在日常工作中,我们需要将本地文件中的数据一次性上传至计算引擎中进行大量的数据计算或与其他在线数据一起进行联合分析。您可参考下文步骤操作:
在已打开的SQL查询页面,单击左上角的图标,选择全部产品>数据集成>上传与下载。
单击左侧导航栏的上传图标,进入数据上传页面。
单击数据上传,根据界面指引上传所需数据。
在数据上传操作页面,支持您将本地.csv文件上传至MaxCompute Project中已有的表中,也支持在上传过程中新建MaxCompute表。本教程以上传本地文件“2013-2020全球PS4游戏销量.csv”至准备环境中已开通的MaxCompute项目public_cloud_simple_dev的新建表dws_game_salse_nd示例。
主要参数配置如下:
指定待上传数据:选择文件“2013-2020全球PS4游戏销量.csv。文件请参见2013-2020全球PS4游戏销量.csv获取。
设置目标表:选择MaxCompute项目名称为doc_test_000,目标表设置为新建表,表名设置为dws_game_salse_nd,表类型设置为非分区表,生命周期设置为365天。
配置后可在上传文件数据预览中,检查上传的数据是否显示正常,如出现数据乱码,可调整文件编码。
单击左下角的数据上传,开始上传数据。
在弹出的对话框中,您可看到数据上传的进度,关闭当前弹窗不会停止数据上传的进程。您也可单击返回列表,查看此次数据上传的进度,也可发起新的数据上传。
数据上传结束后,您可在弹窗中执行如下操作。
查看上传任务的成功或失败状态,以及上传任务的结束时间。
单击数据查询,进行上传数据的数据查询及联合分析。
发起一次新的数据上传,或返回上传列表页查看列表详情。
基于以上操作,本教程展示了如何将本地数据单次手动上传到MaxCompute中,如需将业务生产过程中产生的数据定时同步至MaxCompute等大数据计算引擎中,推荐使用DataWorks数据集成,详情请参见数据集成概述。
附录:报告中所有卡片用到的SQL代码
不同时间段的页面访问次数
SELECT CASE WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 0 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 3 THEN '00点-03点' WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 3 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 6 THEN '03点-06点' WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 6 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 9 THEN '06点-09点' WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 9 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 12 THEN '09点-12点' WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 12 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 15 THEN '12点-15点' WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 15 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 18 THEN '15点-18点' WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 18 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 21 THEN '18点-21点' WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 21 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 24 THEN '21点-24点' ELSE '其他' END AS 时间段 ,COUNT(1) as 页面访问次数 FROM public_cloud_simple.dwd_ali_e_commerce WHERE behavior_type = 1 GROUP BY 时间段 order by 时间段;
高频下单时间段
SELECT CASE WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 0 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 3 THEN '00点-03点' WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 3 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 6 THEN '03点-06点' WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 6 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 9 THEN '06点-09点' WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 9 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 12 THEN '09点-12点' WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 12 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 15 THEN '12点-15点' WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 15 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 18 THEN '15点-18点' WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 18 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 21 THEN '18点-21点' WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 21 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 24 THEN '21点-24点' ELSE '其他' END AS 时间段 ,COUNT(DISTINCT user_id) AS 下单用户数 FROM public_cloud_simple.dwd_ali_e_commerce WHERE behavior_type = '4' GROUP BY 时间段 ORDER BY 时间段 ASC LIMIT 100 ;
不同时间段的下单用户数
SELECT CASE WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 0 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 3 THEN '00点-03点' WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 3 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 6 THEN '03点-06点' WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 6 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 9 THEN '06点-09点' WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 9 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 12 THEN '09点-12点' WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 12 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 15 THEN '12点-15点' WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 15 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 18 THEN '15点-18点' WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 18 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 21 THEN '18点-21点' WHEN CAST(SUBSTR(behavior_time,12) AS BIGINT) >= 21 AND CAST(SUBSTR(behavior_time,12) AS BIGINT) < 24 THEN '21点-24点' ELSE '其他' END AS 时间段 ,COUNT(DISTINCT user_id) AS 下单用户数 FROM public_cloud_simple.dwd_ali_e_commerce WHERE behavior_type = '4' GROUP BY 时间段 ORDER BY 时间段 ASC LIMIT 100 ;
用户行为时间趋势
SELECT CAST(SUBSTR(behavior_time,12) AS BIGINT) AS 时间段 ,CASE WHEN behavior_type = '1' THEN '商品页浏览' WHEN behavior_type = '2' THEN '商品收藏' WHEN behavior_type = '3' THEN '加入购物车' WHEN behavior_type = '4' THEN '购买成功' ELSE behavior_type END AS 用户操作 ,COUNT(DISTINCT user_id) AS 用户数 FROM public_cloud_simple.dwd_ali_e_commerce WHERE behavior_type IN ('1','3','4') GROUP BY 时间段 ,用户操作 ORDER BY 时间段 ASC LIMIT 10000 ;
下单人数或浏览人数
SELECT CASE WHEN behavior_type = '1' THEN '商品页浏览' WHEN behavior_type = '2' THEN '商品收藏' WHEN behavior_type = '3' THEN '加入购物车' WHEN behavior_type = '4' THEN '购买成功' ELSE behavior_type END AS behavior_type ,COUNT(DISTINCT user_id) AS 下单用户数 FROM public_cloud_simple.dwd_ali_e_commerce GROUP BY behavior_type ORDER BY 下单用户数 DESC LIMIT 10000 ;
网上购物下单时间分布
SELECT CAST(SUBSTR(behavior_time,12) AS BIGINT) AS 时间段 ,COUNT(DISTINCT user_id) AS 用户数 FROM public_cloud_simple.dwd_ali_e_commerce WHERE behavior_type IN ('4') GROUP BY 时间段 ORDER BY 时间段 ASC LIMIT 10000 ;