前言
在测评DataWorks之前,对于非数据分析行业的技术从业者可能不太熟悉什么是DataWorks?那么这里先介绍一下什么是DataWorks。官方文档给出了一句话总结:【DataWorks基于MaxCompute、Hologres、EMR、AnalyticDB、CDP等大数据引擎,为数据仓库、数据湖、湖仓一体等解决方案提供统一的全链路大数据开发治理平台。】DataWorks的产品定位就是说:DataWorks致力于为数据开发者、数据分析师、数据资产管理者,打造一个具备开放自主开发与全栈数据研发能力的一站式、标准化、可视化、透明化的智能大数据全生命周期云研发平台。DataWorks赋予用户仅通过单一平台,即可实现数据传输、数据计算、数据治理、数据分享的各类复杂组合场景的能力。
同时,DataWorks持续打造符合企业级数仓、数据中台构建要求的功能模块,为企业业务的数字化转型提供支持。
在简单介绍了DataWorks 之后,下面我们就要开始今天的正式内容,基于DataWorks和MaxCompute产品组合实现用户画像分析。
开通服务
在使用DataWorks和MaxCompute产品组合进行数仓开发之前,我们首先需要开通 DataWorks 服务。进入阿里云DataWorks官网,单击【立即购买】,即可进入DataWorks服务开通页
在购买详情页选择地域、DataWorks版本、购买时长,其他默认,点击【确认订单并支付】
此时如果提示 DataWorks资源组:请先创建服务关联角色
那么我们就先创建服务关联角色,点击【创建】按钮,系统会帮我们自动关联好角色,然后再次点击【确认订单并支付】可以看到资源校验信息,
点击【下一步:价格清单】可以看到具体的价格清单内容
继续点击【下一步:创建订单】等待大约30s左右,可以看到生成的订单详情,这里我是新账号,还没有购买过Dataworks 服务,因此这里是免费试用资格,价格 0元,点击【支付】完成Dataworks 服务开通。
在Dataworks 控制台点击【资源组】可以看到我们已经创建成功的 Dataworks资源组信息
资源组开通公网
这里由于DataWorks访问该原始测试数据并确保本次实验可顺利开展,您需要确保您的DataWorks资源组已具备公网访问能力。如果没有开通公网访问能力,在后面操作绑定MaxCompute数据源导入数据时会提示以下错误信息,因此这里要开通DataWorks资源组已具备公网访问能力
登录专有网络-公网NAT网关控制台,切换地域到北京地域,单击创建NAT网关,配置相关参数,选择所属地域,实例名称,其他的默认
继续选择访问模式、选择新购弹性公网IP,其他的默认
点击【立即购买】后确认公网NAT网关信息后点击【立即开通】
等待大约5分钟,完成DataWorks 资源组公网访问能力的开通
创建工作空间
工作空间是DataWorks中进行任务开发和成员权限管理、协同开发的基本单元,DataWorks所有开发工作都将在工作空间内进行。下面需要先创作我们后面将要用到的工作空间,点击Dataworks控制台【工作空间】-【创建工作空间】,输入工作空间名称,选择生产、开发环境隔离
选择我们刚才开通 Dataworks服务时默认创建的资源组,点击【创建工作空间】完成工作空间的创建
创建MaxCompute数据源
由于我们后续的操作需要用到MaxCompute数据源,因此在DataWorks工作空间内绑定MaxCompute数据源前,需创建MaxCompute项目。登录MaxCompute控制台,在左上角选择地域。点击【项目管理】-【新建项目】输入项目名称、资源付费类型、数据类型等信息后点击【确定】完成MaxCompute项目的创建
创建成功后就可以点击【项目管理】看到我们创建成功的 MaxCompute项目
这里有个疑问就是说,按照文档操作,在创建完成 DataWorks 工作空间之后,需要在MaxCompute 控制台创建项目,但是上图中的项目名并不是我创建的,而是自动创建的,创建时间和我开通 Dataworks服务成功的时间是一致的。 另外就是文档中描述,在创建完成 MaxCompute 项目后,需要进行MaxCompute数据源绑定,按照文档中的操作点击 MaxCompute 后面的三点,这里我并没有看到文档中的操作描述,其中文档中是这样描述的:单击工作空间操作列的 > 创建数据源 > MaxCompute 文档中的截图如下
而在实际的 MaxCompute 的控制台项目管理并没有这样的内容,而是这样,那么这里我就先跳过这里的步骤,后面有问题再返回来排查
用户画像分析
下面我们就开始进行用户画像分析的任务开发操作。本次用户画像分析流程主要是:网站用户行为分析案例通过DataWorks数据集成模块的离线同步能力,将业务数据同步至MaxCompute,然后通过DataWorks数据开发(DataStudio)模块的ODPS SQL,完成用户画像的数据加工,最终将加工结果写入ads_user_info_1d表。
任务开发
登录Dataworks控制台:https://dataworks.console.aliyun.com/overview 选择【ETL工作流模版】找到 网站用户画像分析,点击【查看详情】
在 网站用户画像分析 详情页,点击【载入模版】
在载入模版详情页,选择工作空间、数据源名称、调度 资源组名称、集成资源组名称,其他默认
这里需要注意一点,由于我们上面在绑定 MaxCompute 数据源时根据文档操作无法正常创建数据源,此时我们在这里选择MaxCompute 数据源是没有的,因此我们可以点击【新建数据源】跳转到 MaxCompute数据源创建页面创建数据源
在跳转页面选择【数据源列表】-【新增数据源】
选择 MaxCompute后
在 MaxCompute 数据源创建页面输入数据源名称、选择所属云账号、地域、Maxcompute项目名称,开发环境和生产环境都要选择,然后点击【完成创建】
这里有点疑惑,就是说在创建 MaxCompute数据源时,区分开发环境和生产环境的MaxCompute项目名称,但是文档中在描述创建MaxCompute 项目时却明没有区分开发环境和生产环境,而只是简单的提了一下创建MaxCompute项目,
在后面创建MaxCompute数据源时文档中却可以选择开发环境和生产环境的独立的 MaxCompute项目。这里考虑到我是测试,并不是真的需要投产,因此这里不再区分MaxCompute项目的环境问题,默认都选择一个了。等待MaxCompute数据源创建成功之后,数据源列表自动刷新可以看到如下内容
此时再回到我们的载入模版页面选择 MaxCompute数据源之后,点击【确认】之后提示我们的数据源 DataStudio未绑定此类数据源,请先绑定
这个错误信息在部署文档中也是没有提到,那么我就先按照文字提示点击【绑定】
这里点击【绑定】跳转到的DataWorks 数据开发平台可以看到目前无法绑定数据源,因为开发和生产项目名冲突,那么这里我们只能回到
那么我们只能回到MaxCompute控制台,重新创建一个新的空间用于开发环境和生产环境,
创建完成之后,回到DataWorks 数据开发平台,点击【编辑】
更新完MaxCompute数据源生产环境 MaxCompute项目名称后,点击【完成编辑】
再次回到载入模版页面,DataStudio未绑定此类数据源,请先绑定 点击【绑定】跳转到 DataWorks数据开发页面点击【绑定】完成数据源绑定
然后回到载入模版页面点击【确认】等待数据导入成功,导入成功后的页面如图
点击【前往查看】跳转到DataWorks 数据开发页面 https://ide2-cn-beijing.data.aliyun.com/?defaultProjectId=218787# 在数据开发页面我们可以看到打开的业务流程画布
任务运行
任务开发完成后,我们可以通过运行任务的方式来确认是否符合我们的预期,点击【运行】按钮
等待大约5分钟,待用户画像分析的业务节点全部运行成功之后,运行成功后可以看到用户画像分析的业务流程执行状态
双击最后一个节点的【用户行为分析结果查询】节点,跳转到节点详情页面,并按照图示说明,单独运行代码,查询ads_user_info_1d
表,获取最终的用户画像数据。点击 ads_user_info_1d
表 查询语句前面的运行按钮
在弹框中选择查询日期参数后点击【运行】
在运行之前,对于本次sql执行会有一个费用预估情况,确认费用情况后,点击【运行】
这里我查询20240831没有数据,那么我尝试换个日期查询更换为文档的20240829 也还是不行
再次查阅文档发现有这么一句描述,本案例的SQL中使用了调度参数${bizdate}
,表示业务日期为前一天。由于这句话描述在说明文字中,没有加粗标识,因此这里才出现了上面我输入的日期没有数据的情况。希望后面可以明显标识一下。
至于为什么我没有查询到数据,那是因为我是20241214进行的任务开发,那么获取到的数据需要查询的是当前日期前一天的数据,也就是20241213这一天的数据才可以,更改查询日期之后就可以看到如下的数据了
这里有一点需要说明,文档中并没有描述如何在DataWorks 数据开发平台这个sql查询页面来更换新的查询日期操作,这里我自己找到了一个办法可以,那就是你可以点击窗口顶部的【带参运行】按钮
在弹出的弹框中修改日期参数
修改完成后点击【运行】这里运行不是真的运行,在弹出的费用预估页面我们再点击【取消】
然后再次回到我们想要运行的sql语句前面,点击【运行】按钮
此时可以看到弹出的费用预估页面的时间参数已经是20241212了,不再是我们刚才第一次查询的时间参数20241213了
点击运行可以看到20241212也是没有数据的
DataWorks运维操作
在DataWorks数据开发页面的业务流程页面,点击顶部导航栏的【提交】按钮,【发布】按钮将任务发布至生产调度系统进行周期性自动调度运行
查看调度任务
任务发布后,我们可以在运维中心的周期任务页面查看空间下所有周期性调度的任务,并在此对周期任务执行相关运维操作,点击DataWorks数据开发平台的左上角的 三横
选择【运维中心(工作流)】
跳转到周期任务运维页面,点击【周期任务】菜单可以查看空间下所有处于调度系统中的任务
单击【用户行为分析案例说明】任务名称,点击【DAG图】按钮进入DAG面板,右键用户行为分析案例说明 -- 展开父/子节点 --六层,快速查看任务的上下游依赖关系。
双击DAG图任意节点可快速展开节点属性面板,您可以在此查看节点的基本信息、节点责任人、执行时间、操作日志以及调度运行的代码等
补同期数据
也可以通过补数据 来补历史或未来一段时间的数据,将写入数据至对应时间分区,可实现指定业务日期的数据处理,主要用于历史数据回刷,在周期任务列表找到【用户行为分析案例说明】节点,右键选择补数据 -- 当前节点及下游节点
在补数据页面,默认补数据名称,补数据包含当前任务选择【是】,下游任务全选
业务日期配置为去年的同期业务日期,点击【提交并跳转】
DataWorks通过实例的方式运行离线调度任务,对任务执行补数据操作后,我们可以查看实例详情确认补数据任务执行情况
我们可以点击任务名称,查看任务的具体执行信息以及任务的执行日志
点击【查看日志】可以看到当前节点的任务执行日志情况
后续任务正常调度后,我们可以在左侧导航栏单击周期任务运维 -- 周期实例界面,查看单个实例的运行情况
查询同期数据
待补数据实例运行完成后,请前往数据开发(DataStudio),创建临时查询节点,获取用户画像分析业务流程通过补数据产出的去年同期的分区数据,点击左上角的三横,选择 【DataStudio(数据开发)】
点击【临时查询】-【新建】-【ODPS SQL】
选择路径,输入查询名称,点击【确认】
在临时查询节点中,查询生产表ads_user_info_1d
去年同期的数据
select * from <生产项目名称>.ads_user_info_1d where dt = '<生产表实际被写入的分区>';
生产项目名称可以去MaxCompute控制台 https://maxcompute.console.aliyun.com/cn-beijing/project-list 查看具体的项目名称
整理后的sql内容如下
select * from user_project_pro.ads_user_info_1d where dt = '20231213';
查询结果如图
到这里,我们关于使用DataWorks和MaxCompute产品组合来实现用户画像分析的目标已经实现,如果后面你不再使用的话,考虑到可能会造成的任务执行扣费,这里你可以选择释放资源。
释放资源
登录DataWorks控制台,切换至目标地域后,点击【运维中心】,选择你绑定的DataWorks工作空间,点击【进入运维中心】
选择【周期任务】菜单,勾选全部任务后,点击底部的【暂停(冻结)】按钮,
在弹框中确认信息后点击【继续】完成周期任务的冻结
如果您不再需要本教程的调度任务,可以单击操作 -- 下线节点
登录专有网络-公网NAT网关控制台,选择【公网NAT网关】,点击列表最后的三点,选择【删除】
勾选强制删除,点击【确定】完成公网NAT网关的资源释放
继续下拉菜单选择【弹性公网IP】,点击列表最后的三点,选择【释放】
在弹框中点击【确定】,验证手机号之后完成弹性公网IP资源的释放操作。
测评总结
一些反馈
在这次的使用使用DataWorks和MaxCompute产品组合进行数仓开发与分析,实现用户画像分析的操作过程中,文档中有一些描述和截图和现在DataWorks 控制台或者MaxCompute 控制台可以看到的操作项已经不同了,但是文档没有更新,在操作过程中有一定的误导作用,我在上面的操作步骤中已经详细的提供了具体的文档歧义的地方,以及解决的方案。另外对于一些操作上不太友好的地方,我在上面也提供了具体的解决办法。大家有需要的可以查阅,整个用户画像分析的操作从上到下,个人是完全操作顺畅的,操作上遇到的问题也都在文章内部解决了。
一些便利
DataWorks在任务开发页面任务的创建操作还是比较简便的,通过页面操作的方式,可以方便新手小白快速掌握完整的数据开发、治理流程,告别传统命令行,节省巨大的学习成本。一键开通即可完成开箱即用的数仓技术架构搭建,可以大大的节省企业的自研,部署,运维的压力,降低企业的成本。从真实的操作体验上来看,任务执行速度以及查询界面的可视化,sql语句和日常工作用的sql语句没有任何差别,比较方便开发者快速熟悉sql查询相关内容。
另外DataWorks支持多种数据源的数据任务开发和分析,可以涵盖大部分的市面上使用的业务数据库,
最后就是,目前数据的分析能力对企业的盈利能力以及决策方向的制定有着至关重要的作用,那么DataWorks可以助力企业在数据传输、开发、生产、治理、安全领域,每个领域深度覆盖大数据全生命周期,轻松帮助企业应对在搭建数仓、搭建数据中台、数字化转型项目中遇到的难题。希望更多的企业可以加入进来,从而让企业数据活起来,动起来,管得好数据、用得好数据,让数据从低质低效向高质高效流动,促使企业盈利。