第39章 Dagster 1.8 版本解析:BI 与 Catalog 升级及生态集成改进
第39章:Dagster 1.8:BI 与 Catalog 升级
生态系统与集成改进、数据目录增强、新型资产检查、声明式自动化等功能。Dagster 1.8 版本的更新优化了与其他工具的集成,简化了资产管理,强化了自动化能力,并提升了数据质量。
以下是更新概览。
生态系统与集成改进
Pipes 退出实验阶段 Dagster Pipes 是一套构建 Dagster 与外部执行环境集成的工具包,旨在实现 Dagster 生态系统中编排逻辑与业务逻辑的分离。 即日起,Pipes API 及其与 Lambda、Kubernetes 和 Databricks 的集成正式稳定,不再处于实验阶段。请尝试将其引入你的管道中,亲自体验其扩展的集成能力。 在官方文档中查看关于 Dagster Pipes 的最新信息。
DbtProject DbtProject 集成的改进简化了开发和生产环境中 dbt 资产的定义,消除了本地开发的样板代码,并辅助在构建时拉取依赖项和生成 manifest。 在文档中了解 DbtProject 类的更多细节。
SDF 集成 新增的 SDF 集成扩展了 Dagster 的编排能力,通过利用 SDF 的开发体验、模型验证框架、混合执行引擎和元数据系统,实现更全面、灵活的数据管道。 关于 SDF 集的更多信息,请关注即将发布的博文,我们将探讨如何借助 SDF 和 Dagster 构建透明、可扩展的数据管道,同时减少对云计算的依赖。
Looker 集成 Dagster Looker 包允许用户直接从基于 LookML 和 Git 定义的 Looker 项目中定义 Dagster 资产,并将其直接纳入数据管道。 更多细节请参阅 GitHub 讨论区。
数据目录改进
增强的资产元数据 当提供相应的资产元数据值时,资产详情页面现在会突出显示行数以及关系标识符(表名、模式、数据库)。这些新增项有助于更轻松地跟踪和识别资产,从而改善数据可追溯性和管理。 更多信息请参阅关于元数据和标签的文档。
代码引用元数据 我们新增了代码引用元数据,允许在编辑器中打开本地文件,或在浏览器中打开源控制文件。将资产与特定代码引用链接起来可增强可追溯性和文档记录,使理解数据血缘和代码依赖关系变得更容易。 在文档中查看关于代码引用元数据的更多内容。
数据质量与可靠性改进
基于元数据边界的检查 新的 `build_metadata_bounds_checks` API 允许用户定义资产检查,当数值型资产元数据值超出指定边界时,检查将失败。此增强功能确保资产值保持在可接受范围内,从而提升了数据可靠性和质量控制。 在文档中阅读有关资产检查的内容。
来自 dbt 配置的时效性检查 现在可以直接通过 dbt 配置在 dbt 资产上设置时效性检查。此功能简化了数据时效性和可靠性流程,并与现有的 dbt 管道无缝集成。 查阅 API 文档,了解如何从 dbt 资产构建时效性检查。
核心定义 API
稳定支持:外部资产 Dagster 现在提供稳定的 API,用于指定那些无法从 Dagster 物化但仍是血缘图一部分的资产。例如,这使得 Dagster 能够了解商业智能工具中位于 Dagster 编排资产下游的仪表板。你可以通过构建一个 `AssetSpec` 并将其传递给 `Definitions` 对象来指定不可物化的资产。 此功能取代了实验性的 `external_assets_from_specs` API,并废弃了 `SourceAssets`(后者提供了类似但更受限的功能)。 更多信息请参阅文档。
合并 Definitions `Definitions.merge` API 允许用户将多个 `Definitions` 对象合并为一个对象,简化了大型 Dagster 项目的结构,并通过将子域定义合并为连贯的整体,使复杂项目的管理更加容易。 更多信息请参阅关于 definitions 的文档。
资产定义去重 传递给 `Definitions` 对象的 `AssetDefinitions` 现在将通过引用相等性进行去重,这意味着以下代码现在可以正常工作。
```python from dagster import asset, Definitions
@asset def my_asset(): pass
defs = Definitions(assets=[my_asset, my_asset]) ### 这现在会去重为单个 AssetsDefinition。 ```
更多信息请参阅资产定义文档。
分区与回填
清除物化数据 现在可以清除单个资产分区的物化数据,提供更细粒度的数据控制。当你需要手动删除存储系统中的数据时,这有助于保持 Dagster 对数据的视图最新。
资产作业回填策略 资产作业现在使用源自其底层资产的回填策略,采用具有最小 `max_partitions_per_run` 的策略。此改进增强了回填的效率和可控性,确保回填流程更贴合每个资产的具体需求。 在文档中了解如何启动分区资产的回填。
自动化
声明式自动化 Auto-materialize 已转型为“声明式自动化”,其核心是新的 `AutomationCondition` API,取代了已废弃的 `AutoMaterializePolicy` 系统。`AutomationCondition` 通过提高可定制性(例如,现在支持组合任意布尔表达式)并简化大规模运维,解决了旧系统中一些长期存在的问题。
```python @asset(automation_condition=AutomationCondition.eager())
def a(): ...
@asset( automation_condition=( AutomationCondition.on_cron("@daily") | AutomationCondition.code_version_changed() )
) def b(): ... ```
查看我们关于声明式自动化的 GitHub 讨论,回顾激发这些更改的挑战。
无作业自动化 实验性的 `target` 参数允许调度和传感器直接指向资产,并自动将它们包含在所属 `Definitions` 对象的资产列表中。此更改简化了自动化配置,减少了对显式作业定义的需求,使自动化更加直观。
时间线页面分组
时间线页面现在可以按作业或自动化进行分组,帮助用户更好地可视化和管理管道。按自动化分组确保由传感器启动的运行被适当分类,从而改善时间线的清晰度和组织。你可以在用户设置中选择实验性的导航功能标志来启用此功能。
致谢
我们要感谢所有社区贡献者,他们的努力和创新使此版本的发布成为可能。
Chris Histe | Ali Ebrahim | Daniel Gafni | Søren Schwartz | Mathieu Larose | Daniel Bartley | James Lewis | David Griffiths | Arseny Egorov | yuvalgimmunai | the4thamigo-uk | Neil Fulwiler | Dimitar Vanguelov | Marijn Valk | Gabor Ratky | SanjaySiddharth | lautaro79 | Edson Nogueira | Cooper Ellidge | Aksel Stokseth | Tomas Gajarsky | Alex Launi | Thomas Baumann | gibsondan | Thomas Weit | Brian Malehorn | Ivan Tsarev | jobicarter | Egor Dmitriev | Chris Roth | Federico Caselli | Joe Percivall | jlloyd-widen | Niko | Jonathan Lai | Shane Zarechian | Alexander Bogdanowicz | Gareth Brickman | Jake White | abhinavDhulipala | Vinnie | Piotr Marczydło | Tim Nordenfur | drjlin | Stian Thaulow |
请留意未来版本的更多更新和增强功能。
祝使用 Dagster 1.8 进行编排愉快。有反馈或问题?请在 Slack 或 GitHub 上发起讨论。有兴趣加入我们?查看我们的招聘职位。想要类似的内容?关注我们的 LinkedIn。