我在一家初创公司工作,正在从头开始建立我们的分析技术堆栈。由于资源有限,我们专注于使用第三方工具而不是构建自定义管道。
我们的堆栈如下:
ELT 工具: Fivetran 或 Hevo
数据仓库: BigQuery
转型: dbt 云
反向 ETL: Hightouch(如果我们使用 Fivetran - hevo 内置了反向 ETL)
BI 工具: Tableau
我遇到的问题是:
无论是 Fivetran 还是 Hevo,下面的工作流程都会出现中断,我们必须切换工具,并且工具本身没有集成来根据上一个作业的完成顺序触发作业。
用例(工作流程):将数据加载到仓库中 -> 使用 dbt 进行转换 -> 将仓库中的 etl 数据反向返回到像 mailchimp 这样的工具中以用于营销目的(例如,未执行某些操作的用户 ID 列表和因此,我们希望向通过每天运行的 dbt 作业生成的列表发送一封提示电子邮件)
以下是这些工作流程在相应工具中的外观(E = 提取、L = 加载、T = 转换)
Hevo: E+L (hevo) -> 工作流程中断 -> T:dbt 作业(无法在 hevo UI 内触发) -> 工作流程中断 -> 反向 E+L:可以在 hevo UI 中完成,但可以由 dbt 作业触发
Fivetran: E+L ( Fivetran) -> T:dbt 作业(可以在 Fivetran UI 中触发) -> 工作流程中断 -> 反向 E+L Fivetran 与一家名为 hightouch 的公司合作,但没有办法根据 Fivetran/dbt 作业的完成触发 hightouch 作业。
我们当然可以以基于时间的方式同步它们,但这意味着如果前一个作业失败,后续作业仍然运行,这意味着会产生不必要的成本,并且能够从上一个作业重新触发整个工作流程也很好。调试完后断点。
通过在线阅读,我认为像 apache Airflow 这样的东西可以用于这种类型的用例,但这就是我迄今为止所得到的。
提前致谢。
您正在寻找数据协调器。 Airflow 是最受欢迎的选择,但 Dagster 和 Prefect 是新的挑战者,它们具有一些非常好的功能,专门用于管理数据管道(相对于 Airflow,它是为不一定传递数据的任务管道而构建的)。
所有这 3 个工具都是开源的,但协调器很快就会变得复杂,除非您能够轻松部署 Kubernetes 并管理复杂的基础设施,否则您可能需要考虑托管(付费)解决方案。 (Hosted Airflow 的品牌名称为 Astronomer)。
由于这种复杂性,您应该问自己今天是否真的需要一个协调器,或者您是否可以等待实施一个。有一些hacky/脆弱的方法来协调这些工具(例如,cron、GitHub Actions、让下游工具轮询新数据等),并且在初创公司的规模(一个人的数据团队)下,你实际上可能能够移动很多在一段时间内使用 hacky 解决方案更快。如果加载数据和转换数据之间存在 1 小时的延迟,这真的会影响您的用户吗?与花费时间建模更多数据或构建更多报告相比,通过缩小这一差距可以为业务增加多少价值?实际上,对于一个刚接触该领域的人来说,您可能需要花费周的努力,直到协调者增加价值;只有您知道该投资是否有投资回报率。
我使用 Dagster 来编排多个 dbt 项目或 dbt 模型与其他数据管道进程(例如数据库初始化、pyspark 等)
您应该看看世界上第一个基于聊天的数据工程工具,由人工智能“Ask On Data”提供支持:https://www.askondata.com只需输入英语并创建数据管道