当前位置: 首页 > news >正文

网站开发哪种语言最好用户体验度好的网站

网站开发哪种语言最好,用户体验度好的网站,德州做网站哪家好,网站开发需要的技术人员有什么在数据仓库和ETL(Extract, Transform, Load)流程中,处理数据变更、延迟到达的数据以及模式变更是一项挑战。SQLMesh作为一款强大的数据建模工具,提供了多种特性来帮助数据工程师优雅地处理这些问题。本文将深入探讨SQLMesh中的三个关键特性:L…

在数据仓库和ETL(Extract, Transform,
Load)流程中,处理数据变更、延迟到达的数据以及模式变更是一项挑战。SQLMesh作为一款强大的数据建模工具,提供了多种特性来帮助数据工程师优雅地处理这些问题。本文将深入探讨SQLMesh中的三个关键特性:Lookback、Forward-Only和Auto-Restatement,以及它们如何帮助构建更健壮的数据管道。

在这里插入图片描述

Lookback:处理延迟到达的数据

什么是Lookback?

Lookback是SQLMesh中一个非常有用的特性,它允许模型访问当前处理时间间隔之前的一些数据点。这对于处理延迟到达的数据(late-arriving data)特别有用,在现实世界的数据管道中,这种情况很常见。

工作原理

Lookback必须是一个正整数,它指定了模型应该包含当前处理时间间隔之前的多少个interval_units。具体来说:

  • 对于按时间范围增量(incremental by time range)的模型:
    • 如果模型使用@daily cron表达式(即interval_unit为天),lookback值为7意味着模型将包含当前处理日期之前的7天数据。
  • 对于按唯一键增量(incremental by unique key)的模型:
    • 同样适用,模型会包含当前处理键范围之前的指定数量的时间间隔数据。

示例

MODEL (name test_db.national_holidays,cron '@daily',kind INCREMENTAL_BY_UNIQUE_KEY (unique_key key,-- 包含当前处理日期之前的7天数据lookback 7)
);

在这个例子中,national_holidays模型每天运行一次,但会检查当前日期之前的7天数据,确保不会错过任何延迟到达的节假日数据。

为什么Lookback很重要?

  1. 处理延迟数据:许多数据源(如日志系统、外部API)可能会有数据延迟到达的情况。
  2. 提高数据完整性:确保即使数据延迟到达,最终也能被正确处理。
  3. 简化ETL逻辑:不需要在ETL流程中实现复杂的重试或延迟处理机制。

Forward-Only:控制数据变更的方向

什么是Forward-Only?

Forward-Only是一个标志,设置为true时表示该模型的所有变更都应该是向前兼容的。这意味着:

  • 不能删除或修改现有列
  • 只能添加新列
  • 不能更改现有列的数据类型或语义

为什么需要Forward-Only?

在数据管道中,尤其是生产环境中,表的下游可能依赖于上游表的结构。如果上游表的结构发生不兼容的变更,可能会导致下游系统崩溃或产生错误结果。

与Lookback的关系

Forward-Only模型通常与Lookback一起使用,因为:

  • Forward-Only模型不能删除或修改列,因此无法通过修改表结构来处理历史数据问题
  • Lookback提供了一种在不修改表结构的情况下处理历史数据的方法

on_destructive_change:处理模式变更

当Forward-Only模型或增量模型在Forward-Only计划中进行破坏性变更(如删除列)时,SQLMesh提供了三种处理方式:

  1. allow:允许变更(不推荐)
  2. warn:发出警告但允许变更
  3. error(默认):阻止变更并报错

这有助于防止意外的破坏性变更影响生产环境。

MODEL (name test_db.user_profiles,cron '@daily',kind INCREMENTAL_BY_TIME_RANGE (time_column updated_at),forward_only true,on_destructive_change error  -- 默认值,也可以显式设置
);

Auto-Restatement:自动重新计算数据

什么是Auto-Restatement?

Auto-Restatement是SQLMesh的一个特性,它允许模型在特定时间自动重新计算部分或全部历史数据。这对于以下场景很有用:

  • 处理延迟到达的数据
  • 维度表发生变更,需要更新依赖它的模型
  • 定期刷新数据以确保准确性

工作原理

  1. auto_restatement_cron:一个cron表达式,决定何时触发自动重新计算
  2. auto_restatement_intervals:对于时间范围增量模型,指定要重新计算的最后几个时间间隔数
    • 对于非时间范围增量模型,会重新创建整个表

与Lookback的区别

  • Lookback:只控制当前处理间隔要扫描的数据范围,不会重写已处理的数据
  • Auto-Restatement:会重写之前处理的所有数据,相当于重新运行模型

重要注意事项

  1. 仅用于开发环境预览:设置了auto_restatement的模型只能在开发环境中预览,生产环境不会重用这些数据
  2. 不推荐依赖此特性:通常表明数据模型或依赖链存在问题,更好的做法是使用Lookback

示例

MODEL (name test_db.national_holidays,cron '@daily',kind INCREMENTAL_BY_TIME_RANGE (time_column event_ts,-- 每周自动重新计算最后7天的数据auto_restatement_cron '@weekly',auto_restatement_intervals 7)
);

在这个例子中,national_holidays模型每天运行,但每周会自动重新计算最后7天的数据,这有助于捕捉任何延迟到达的节假日信息。

实际应用场景

场景1:处理延迟的日志数据

假设你有一个日志分析模型,每天运行一次,但日志数据可能会延迟几个小时甚至几天到达。你可以:

  1. 设置lookback为1或2,确保当天能包含前一天或前两天的数据
  2. 如果延迟可能更长,可以设置auto_restatement_cron@dailyauto_restatement_intervals为1,每天检查是否有前一天的数据到达

场景2:维度表变更影响事实表

假设你有一个产品维度表,事实表依赖于它。当产品维度表发生变更时:

  1. 将事实表设置为forward_only true
  2. 设置on_destructive_change error防止意外变更
  3. 如果维度表变更影响事实表,可以设置auto_restatement_cron定期重新计算受影响的事实表数据

最佳实践

  1. 优先使用Lookback:而不是依赖Auto-Restatement来处理延迟数据
  2. 谨慎使用Forward-Only:确保你的模型设计确实不需要破坏性变更
  3. 合理设置Auto-Restatement:只在确实需要时使用,并理解其影响
  4. 测试变更:在生产环境应用任何模型变更前,在开发环境中充分测试

总结

SQLMesh提供的Lookback、Forward-Only和Auto-Restatement特性为数据工程师提供了强大的工具来构建健壮、可靠的数据管道:

  • Lookback:优雅地处理延迟到达的数据,无需修改表结构
  • Forward-Only:确保数据模型的向前兼容性,保护下游系统
  • Auto-Restatement:在需要时自动重新计算数据,但应谨慎使用

通过合理组合这些特性,数据团队可以构建既能适应现实世界数据挑战,又能保持生产环境稳定的数据管道。记住,最好的数据管道是那些能够优雅地处理意外情况,同时保持简单和可维护性的管道。

http://www.dtcms.com/a/534920.html

相关文章:

  • 安装Wordpress个人网站化妆品购物网站排名
  • vs2010网站开发与发布全球搜索引擎排名
  • 烟台网站建设给力臻动传媒管庄地区网站建设
  • 网站优化的监测评估网站怎么做动效
  • 视频网站做视频节目赚钱吗网站按钮确定后图片怎么做
  • 成都专做婚介网站的公司水泥公司网站建设
  • 凡科建站登录入口有哪些免费的视频网站
  • 广东省城乡建设部网站首页菠菜网站如何做推广
  • 暗网网站有那些建设银行官方网站网址
  • 网站定制价格打代码做网站的软件
  • 行业网站网址网站流程图软件
  • 谷歌浏览器网页版在线列表网做优化网站怎么样
  • 网上拿货做哪个网站好上传的网站打不开怎么办
  • 山东网站开发网站建设中最重要的环节
  • 成都建设网站建设网站提示域名解析错误怎么办
  • 黑龙江省垦区建设协会网站德州建设局网站
  • 莞城微信网站建设推动高质量发展心得体会
  • 网站推广一般在哪个网做什么推广平台好
  • 网站分为哪些部分青海省制作网站专业
  • 重庆梁平网站建设哪家好公众号的制作方法和步骤
  • 购买idc网站服务器wordpress壁纸主题下载
  • 网站建设 模版素马网站制作开发
  • 淘宝建设网站常见问题什么网站可以做设计赚钱吗
  • 河南网站建设工作室word和the wordpress
  • 换个网站对seo有什么影响wordpress 大气主题
  • 网站域名查主机本溪做网站
  • 石家庄网站建设成功案例关于单位建设网站的申请
  • 包做包装的网站无锡网站建设推广
  • 专业做京东网站吗免费域名和空间申请
  • 宁波高端建站接收新网站如何做诊断