照片由 Luke Chesser 拍摄,来自 Unsplash
一年前,我加入了一家法国的初创公司Allowa,该公司致力于成为房地产服务的交易平台。我以数据专家的身份加入,成为他们的第一位数据专家,帮助他们整理和结构化所有数据资料,并最终从数据中提取出价值。
从零开始搭建一个数据平台真是一个非常棒的经历,我想分享我在过程中学到的经验。
以下是我将要分享的几个要点:
注:本节稍微有点技术含量
数据栈(Data Stack)是一个典型的ELT栈,几乎完全开源,托管在AWS上。
简单性让您可以早早地为相关人员提供价值。
栈的设计
在今天的数据处理世界里,有很多选择可以帮助你选择一个数据提取工具,以避免自己动手编写提取脚本,并帮助你大大节省时间。
Fivetran, Mage, 和 Airbyte 等,来举几个例子。
你不需要维护自定义脚本,这些工具自带超过300个连接器,包括简单的调度功能和错误处理功能。
在这几个选项里,我最喜欢的还是Airbyte。尽管它还有改进的空间,但部署和管理起来都很方便,而且有一个很棒的社区。它做到了我需要它做的:高效地将数据从我的来源移至数据仓库。
尽管有些人认为使用EL工具提取数据比自定义脚本慢,但最终选择权在你这里。“你愿意维护超过50个提取脚本,并处理测试和部署,同时管理密钥等敏感信息吗?还是更希望有一个更简单明了的提取与加载流程,在构建你的数据栈时,不再额外增加负担?”
我知道是这样的,在架构图上有一个调度器,但它只是最近才部署的。当这个栈最初启动时,调度器还没有成为基础设施的一部分。相反,采用了一些简单的调度方法来管理数据抽取和转换任务。因为那时需要管理的组件不多,所以还比较容易控制。
我们利用Airbyte进行数据提取,并安排了dbt转换,因为它自带了简单的调度功能。我们也使用了AWS的EventBridge服务通过ECS任务来调度Python作业。这种方法不仅有效,而且简单,并且让我们可以优先考虑简洁,同时确保满足了核心需求。
我们简单的调度堆栈
KISS(保持简单和直接)原则使我们在不使工作流程过分复杂的情况下得以进展。随着系统规模的扩大和团队的扩展,我们现在可以考虑是否需要引入更复杂的调度和编排。
有时候,作为一名有技术背景的家伙,去做一些明明知道扩展性不好的事情很难。我更喜欢做那些能扩展的事情。但实际上,你为了扩展准备的东西可能根本用不上。结果,你可能会得到一个比实际所需更复杂的东西。再说一遍,简单就是美(KISS)。
说实话,虽然我确实很喜欢AWS服务,但把Redshift作为我们的数据仓库是个错误,用Postgres会好很多。
说实话,除非你有海量的数据,比如超过数百TB的数据,这些花哨的数据仓库,如Redshift,真的不值得投入那么多成本。Redshift不是开源的,因此你无法在你自己的电脑上用于测试搭建一个完整的迷你数据栈。此外,Redshift是基于Postgres 8构建的,有时候缺少新版本中的酷炫功能。
我知道 Postgres 是一个事务型数据库,但我认为它作为数据仓库的第一次尝试是相当可靠的。如果你处理的是少于 5000 万行(即 5000 万行以下)且数据量少于 10TB 的表(这种情况在大多数初创公司中很常见),Postgres 可能会比 Redshift 表现得更好。最棒的是,你可以在本地电脑上运行它,让快速迭代变得非常方便。
如果计划得当,迁移到正式的数据仓库也能顺利进行。
严格的安保规定在追求高速时可能会成为一大限制,毕竟我们打交道的是数据,而数据就是一笔宝贵的财富,需要保护。
至少要确保数据安全的基本措施到位。
忽视基础设施安全,某天它可能会找你麻烦。
“垃圾进,垃圾出”
虽然我可以把这部分内容放在数据栈中,但数据质量非常重要,因此它应该有自己的独立部分。
我一开始与利益相关者分享的一个指标后来被发现是不准确的。这种不准确直接源于底层数据质量太差。常见的数据质量问题有信息不全、数据类型不对和没有外键来关联数据。
我了解到提高数据质量,并在过程中进行监控是一项优先任务。
人们总是会质疑看到的指标是否合理,如果你无法证明数据准确,他们可能说得对。
解决数据质量问题需要时间,而在这个过程中,可能会让人觉得我们并没有为利益相关者提供实际的价值感。这就是为什么我们有时候会急于向他们展示一个仪表盘,因为它比数据质量提供了更直观的价值。然而,这种方法只会导致由于数据质量问题,利益相关者对数据团队失去信任。建立对数据的信心很难,但很容易失去。你应该避免向利益相关者展示不准确的数据,无论如何,否则他们的信心会很快消失。关注数据质量是一项值得尽早的投资。
这就是为什么,在数据质量问题尚未确定之前,你应该设立一个框架来检查和监控组织内的数据。这也可以作为业务人员开始拥有数据所有权的第一步。告诉他们数据的问题所在及解决方法。
科技挺好,但是我觉得最难的是在整个公司内推广数据文化。让人们理解他们所生成的数据对于自己和公司来说都是一种珍贵的资源,这需要时间和耐心。
到公司一个月后,我做了场关于数据在公司里重要性和好处的演讲。这让大家意识到自己数据的价值以及如何有效利用。
一开始,你可能需要解决一些与数据相关的问题,但希望人们会更深入地研究,并要求你用数据解决更有趣的挑战。
毕竟,一次演讲是不够的,你还需要不断提醒人们关于数据的最佳实践。频繁沟通能帮助你让越来越多的人关注数据,最终你会有越来越多的人成为数据大使,并在公司内传播这一理念。珍视你的数据大使,因为他们是你最重要的盟友,在创建一个更加以数据驱动的公司文化中。
数据的最终目的是创造价值,对吧?有时候,你必须做出一些权衡来证明数据的价值。我可能和你一样讨厌Excel,但有些团队还是会把数据放在Excel里,没有立即的解决方案将它们迁移到数据库或其他平台。一开始,我不愿意把这些Excel数据导入仓库,因为,嗯,这毕竟是Excel。但是这些Excel数据对企业来说非常重要,作为数据工程师,我的任务是从数据中提取价值。那又如何?那我们就把这些数据导入吧。
从 Excel 中获取有价值的数据可能相当具有挑战性,然而,通过实施高效的流程并教育团队遵循 Excel 相关的数据规范,我们使这一切变得可行。我们为 Excel 文件创建了一个模板,以遵守数据质量和验证规则,清理表头名称、列和合并的单元格。现在,任何希望将数据放入仓库的人都知道需要遵循的规则和文件的格式。
当然,这并不是一个可持续的长期解决方案。然而,我发现人们很快就会开始负责自己的Excel数据。这些文件是他们日常工作不可或缺的一部分,他们会对这些文件产生情感上的依恋。这就是他们为什么每天都会清理数据。
大多数时候,你不会在一个 SQL 数据库中找到整齐的数据已经准备好。正因为如此,处理数据的时候,保持灵活和适应性非常重要。
有时候事情会变得相当混乱,数据散落在各处,且没有被很好地整理或结构化。作为一名数据人员,你的角色是充当促进者,找到解决办法,确保正确的人能拿到正确的数据。但有时你也可能需要改变数据收集的方式。因为一开始错误的流程可能会导致糟糕的数据,甚至没有数据。你会打破一些东西,但这没关系,只要是为了更大的好处。
一开始,我以为只需要两个月就能让公司开始将数据融入日常工作。事实并非如此简单。考虑到我之前提到的所有原因,包括技术、人员、流程、数据质量……围绕数据建立使用习惯确实需要时间。
第一个仪表板在三个月后才发布。有些仪表板偶尔被使用。直到我在公司待了七个月,并一直强调数据的重要性,我们才发布了那些业务人员每天都会使用的仪表板。他们现在积极地在Metabase上处理一些报告,并关注对日常工作至关重要的关键指标。
所以,要有耐心并坚持推动数据的使用。
这一年成长真是显著。构建数据平台是一个永无止境的过程。还有很多事情等着我们去做和学习。
明年我们还会继续关注一些重点。
新的将会开发,而且。
一开始构建数据平台可能会让人感到望而生畏,但只要遵循正确的原则,坚持不懈,并致力于数据质量,你就能充分释放数据的潜力,为组织提供有意义的见解和决策。
感谢您的阅读,欢迎在下方留言分享您的想法!