写在前面的话
在当今数字化转型的浪潮中,企业越来越认识到数据的重要性,对数据价值的挖掘已经从一个可选项变成了必须解决的问题。但在这条通往高效数据管理的路上,数据治理的复杂性、工具链分散以及分析效率的瓶颈就像三座难以逾越的大山一样横亘在前方,使用传统的工具(比如Hive和自建ETL)进行数据治理时遇到的挑战——流程割裂、维护成本高、资源利用率低等都是让人头疼不已的问题。
阿里云推出的Dataphin,以其“一站式数据治理与智能分析”的定位,为这些问题提供了一条全新的解决方案路径。作为阿里巴巴集团OneData方法论的云端版本,Dataphin覆盖了从数据采集到建模、管理和分析的整个生命周期,承诺能够帮助企业以更少的投入获得更大的数据价值。在我的这次试用体验中,通过免费提供的资源包从零开始搭建了一个离线数据仓库,并完整地走过了整个流程,亲身体验了它在数据治理、任务调度以及智能分析等多个方面的表现。
那么,Dataphin是否真能成为企业的得力助手?它能否成为这场数字化转型的变革引擎?接下来,让我们共同揭开这些问题的答案。
Dataphin进行数据处理的最佳实践
下面主要遵循官方给出的最佳实践步骤进行,具体步骤可见Dataphin离线数仓搭建。
环境准备
本次实验需要开通Dataphin免费试用并准备MaxCompute环境,MaxCompute环境建议和Dataphin放于同一个地域中。
访问阿里云免费试用 ,在搜索框搜索Dataphin,可看到如下所示,点击免费试用:
我们选在上海区域,点击开通:
注意,此处的MaxCompute是需要额外购买,并且也要置于上海区域中:
上述都开通完成后,我们点击下载样例数据
至此,环境准备完成。
数仓规划
登录Dataphin控制台,选择和Dataphin同一个地域,进入首页。
单击顶部菜单栏的规划,点击数据架构。
点击新建数据板块。
在生产开发类型步骤中选择Basic模式并单击下一步。
配置板块的基础信息与业务信息。参数配置完成后,单击确定。
然后我们点击计算源:
依次点击新增计算源-选择MaxCompute计算源,进入新建计算源页面。
点击前往创建AccessKey:
选择继续使用AccessKey:
我们点击创建一个新的AccessKey:
配置完成后,单击校验并提交,完成项目计算源的创建。
这里还有一个坑点就是复制ak/sk时前面容易带上空格,如果校验失败一定要仔细检查ak/sk是否输入正确了,如果错误就是如下图所示:
连接成功的如下图所示:
回到导览页,点击项目:
依次单击项目管理-新建通用项目,进入新建项目对话框。
选择Basic模式后,单击下一步:
在项目定义步骤中,配置归属板块、基本信息、业务信息、安全设置、更多设置。配置完成后,单击确定,完成项目的创建。
至此,数仓规划阶段完成。
引入数据
回到最开始的界面,我们点击研发:
选择我们上面创建的项目,选择离线集成:
配置参数如下,配置完成后单击确定:
将本地文件输入组件拖至管道画布中,再将MaxCompute输出组件拖至管道画布中,拖动将本地文件输入组件和MaxCompute输出组件进行连接。
其中,本地文件输入组件和MaxCompute输出组件的配置分别如下:
本地文件输入组件
MaxCompute输出组件
保存之后,直接点击运行按钮开始运行即可。
至此,数据引入完成。
数据处理
点击开发,选择【+】按钮,单击表管理,开始新建物理表对话框。
配置相关参数后,单击确定。
点击从建表语句引入:
create table buyer_discount_rate
(
buyer_id string comment '顾客ID',
discount_rate string comment '折扣率'
) comment '过去一年每位顾客的平均折扣率'
点击解析SQL:
再点击计算任务,选择MAX_COMPUTE_SQL
填写配置参数如下:
在代码编辑器页面,输入下方代码并单击保存。
INSERT OVERWRITE TABLE buyer_discount_rate
--计算过去一年每位顾客的平均折扣
select format_number(buyer_id,'#') as buyer_id
,concat(cast(format_number(discount_amount / total_amount*100,'#.##') as string),'%') as discount_rate
from (
select buyer_id
,sum(discount_amount) as discount_amount
,sum(total_amount) as total_amount
from order
where replace(substr(end_time , 1 , 10) , '/' , '') >= '${bizdate-365}' --时间范围为过去一年
and status <> -1 --订单状态去除'已取消'
group by buyer_id
) a
点击预编译,输入${yyyymmdd-365}:
运行成功后,单击页面右上方的image图标,提交SQL计算任务:
至此,数据处理阶段完成。
周期任务补数据
我们继续点击到运维:
点击下拉框后开始补数据:
配置参数如下,完成过去一年每位顾客的平均折扣任务补数据。
最后我们可以在已提交实例列表中查看到补数据状态。
至此,周期任务补数据阶段完成。
验证数据
我们再回到研发,点击即席查询
点击小加号,选择MAX_COMPUTE_SQL,新建即席查询对话框如下:
执行如下命令,验证过去一年每位顾客的平均折扣补数据任务是否同步成功:
SELECT * FROM buyer_discount_rate;
待到执行成功后,我们可以看到结果如下:
至此,验证数据成功!
数据分析
回到首页,单击顶部菜单栏的分析,选择新建Notebook对话。
点击去创建:
填写Notebook名称如下,点击确定:
我们选择项目,然后添加一个SQL单元:
正常的查询结果是如下所示:
我们选择第二个可视化,修改一下维度,就可以得到一张图标了:
至此,数据分析结束,整个实践流程圆满结束~
总结
不知不觉又写了这么长,这篇是完完整整的把全流程都体验了一遍,虽然耗时确实比较久,但是好在没有遇到什么很难处理的大问题,小的坑点和建议倒是有。
坑点:AK/SK复制问题
在数仓规划阶段,新建MaxCompute数据源时会要求填入AK/SK,我想有很多人可能都卡在这一步,而且这一步一旦卡死,后面就都无法实现了。
新建好的AK/SK复制过来,前面都会带有一个空格,如果不删去空格就会导致测试一直不通过。
第二,这个AK/SK需要具备MaxCompute服务的权限,如果没有对应授权,那么也会出现校验失败的情况。
建议:周期补数据增加多表批量
这次实践里面主要体验的是逐个表进行配置和执行,无法同时对多个表进行批量补数据操作。当需要补数据的表数量较多时,这种逐个操作的方式不仅耗时,还容易因人为疏忽导致遗漏,所以建议增加多表批量补数据功能。
建议:NoteBook SQL可视化图表增加多种样式
可以参考DMS里面,查询出来的数据可以自定义多种图表样式,比如折线图、饼图、柱状图等。
建议:融合AI的能力
还是以DMS为例,现在已经深度融合AI能力了
并且其中Data+AI的能力同样也采用了notebook的方式
最后还有一个很迷的点,虽然我自我觉得对阿里的产品足够了解了,但是关于dataworks、dataphin和DMS的功能边界实在还是有些不清晰,所以这边也让通义帮我生成了一个表格进行对比,方便了解阿里云大数据产品的区别:
选择建议
选DataWorks:需要全栈数据研发能力(如自定义ETL、机器学习、实时分析)。
选Dataphin:希望快速构建标准化数据中台,依赖阿里方法论规范数据体系。
选DMS:需要统一管理多源数据、优化数据治理与开发效率,或需云原生数据服务。
如果需要更复杂的数据生态(如中台+治理+开发),可结合使用:
Dataphin + DataWorks:Dataphin定义规范,DataWorks实现复杂开发。
DMS + DataWorks:DMS管理元数据和备份,DataWorks负责数据加工。