数据项目,无论是数据分析、可视化,还是数据科学和机器学习相关的项目,通常都非常复杂,涉及多个组成部分,比如代码、数据、运行环境、SQL脚本以及分析报告等;与此同时,随着AI时代的到来,数据科学领域正经历重大变革。这对于数据科学团队来说,如何保持高效地工作模式一直是一个不小的挑战。
在这样的背景下,协作式、现代化的数据文档(Data Notebook)逐渐成为团队协作中不可或缺的重要工具。像Hex.tech、Deepnote等等这样的平台,已经在团队协作方面做出了许多成功的实践和探索。接下来,我们以阿里云下的DataV Note产品为例,总结一下它是如何帮助数据团队实现高效的工作模式。
一、跨角色协同;跨工具链统一
我曾在网上看到一张有趣的图片。让人惊讶的是,它竟然十分贴切地描绘出了"BI研发"与"业务人员"之间的关系:

在常规的分析场景下,业务人员通常会通过"钉钉"或"邮件"等方式,向BI研发团队寻求帮助,请求他们处理并提供一张大宽表或直接可用的表,随后,业务人员便基于这些资料进行自己的分析创作;在一般情况下,如果在处理过程中的表格发现存在字段遗漏或不满足需求的情况,需要进行多轮沟通才能够解决问题。这类工作流程往往涉及多种通讯工具 、SQL处理平台 和可视化平台之间的跨越 ,这不仅降低了公司各部门间合作的效率,也加剧了沟通上的困难,这些挑战极其值得我们深入思考。
然而,通过使用DataV Note,可以很好地解决这一系列协同问题:
- 协同分析 : 在数据驱动的公司中,通常会有多种角色参与到数据的处理和分析中,如:BI研发工程师、算法工程师和业务专家等,最合理和高效的协作方式是让所有的人员能够紧密地参与到数据分析的整个过程中。
- 异构数据源自定义处理分析 : 异构数据源通过 SQL 拉取数据直接产出 Python 可用变量,原生支持 Pandas,Numpy 等数据科学分析库,支持精细复杂的数据自定义处理和进一步的机器学习算法延伸分析,不止于 SQL
- 多语言支持 : 鉴于公司内不同岗位对技术栈的熟悉程度存在差异,我们期望能够在尽可能降低研发成本的同时,能免去各种复杂研发环境的配置。在数据分析领域中,SQL 和Python 语言无疑是使用频率最高的,由于基于Jupyter进行研发,我们有能力并且很容易扩展对包括R、Julia、Clojure、Scala 在内的其他热门编程语言的支持。
- 高效沟通 : 我们的愿景是尽量促使所有人聚集在一起共同创作,从而能够在遇到任何问题时立刻进行反馈和评议,确保所有协作者之间可以迅速做出响应。

二、为数据项目和数据团队创建知识库
"数据集"、"图表"、"报表/应用"是数据分析的中间产物,它们通常是为解决特定业务问题或支持决策过程而创建。如果单独存在,而脱离了它们创建时的业务分析场景,可能会存在以下问题:
- 数据集 : 基于特定业务场景通过执行 SQL 语句获得的结果集合。然而,如果这些数据集与其分析上下文分离,它们与上下游相关联数据的血缘(lineage)关系可能变得模糊不清,这将导致数据集变得难以解读和应用。
- 图表 : 数据集可视化的形式。如果图表脱离了数据集和业务分析,缺失与数据集间的映射关系和二次加工的逻辑,该图表可能无法有效传达所需信息从而失去意义。
- 报表/应用 : 集成和展示一系列图表和数据的产物。如果它们与业务分析流程分离被独立存储,当要修改某项业务指标时,追溯流程过于繁琐,更新维护变得很困难。
综上所述,为了最大限度地提高数据分析成果的价值,有必要确保数据集、图表、报表和应用与其原始的业务分析场景保持紧密关联。所以,无论是某个场景的整体分析过程 还是分析结果 的报告,都是作为公司知识库的内容沉淀,会是一种比较理想的方式。

三、实现可重现和可回溯的数据科学过程
经过调研,我们发现基于Jupyter的Notebook形式进行分析,用户可以清晰地记录分析过程中的所有步骤,更容易地理解和追溯原始分析的上下文和结果分析。它遵循的设计理念是单元格(如下图的SQL、过滤器、图表)作为最小逻辑单元,可以用于数据加工处理,展示分析结果等,整体的分析流程由各个单元格自上而下组合而成,上游的单元格输出可被下游的单元格作为输入引用。但它本身没有内建直观表示复杂依赖的功能,这会导致复杂的分析过程中,难以看清上下游单元格的依赖关系。
因此,采用Notebook形式展示分析过程与数据流(DAG)的形式展示各个单元格之间的依赖关系相结合的理念进行设计是一个不错的选择。

在编辑态 中的工作模式是以报告形式来体现整体的分析过程;在构建发布态 的过程中会筛选过程中的一些关键特征,将其提取出来并重新编排,以便形成最终的发布状态。无论处于编辑状态的分析过程,还是最终发布状态的成果,两者都能够成为公司宝贵的知识资源 。

四、一键分享报告,以促进组织内的数据驱动决策
最后,当您完成了详尽的数据分析过程之后,还需将结果以直观且吸引人的方式呈现,例如PPT、报告或面板等,以便进行汇报。我们为此提供了丰富的定制化功能,包括主题选择 、布局调整 、样式优化 和水印添加 等,确保您的展示材料既专业又美观。与此同时,我们还支持导出为Png 、Pdf 、Word 格式,并可通过钉钉 、微信 或邮件 轻松分享,满足多样化的汇报需求。


五、大模型AI驱动,未来可期
- AI智能绘图:系统将自动识别表中每个字段的数据类型,并根据抽样数据的特征智能推荐最适合的数据可视化图表
如:绘制不同类型店铺在各个季度的总毛利的趋势折线图。

- AI智能总结、探索:大模型通过波动分析、分布分析、异常识别、相关性分析和数据对比等多种手段,对特定数据集进行深入模拟,从而挖掘出有价值的信息
如:探究不同店铺风格、所在地区以及所售卖的商品类型对于整体业绩表现(即销售额与利润率)的具体影响程度。

- NLP2SQL(自然语言生成SQL):业务人员可一键生成SQL并进行取数、聚合
如:查询东南区的销售情况。

- NLP2Python(自然语言生成Python):相比于SQL,Python代码具有更高的灵活性,通过 Python 代码可以生成算法预测和归因分析模块
如:对result_1的数据集中的"东南区"的销售情况总结并进行归因分析

同时,基于数据的智能报告AutoReport 终极功能也是作了相应的尝试,它能基于自然语言一键分析结构化数据并自动生成详尽的分析报告。智能报告不仅为分析师们提供了宝贵的洞察视角,还极大地缩短了数据分析周期,有效节约了人力资源。
