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

万网云虚拟主机上传网站网页版梦幻西游决战华山攻略

万网云虚拟主机上传网站,网页版梦幻西游决战华山攻略,semifinal,深圳网站建设799元起全包域名本文将介绍dbt中在模型和seed级别使用post-hook的几个具体示例。dbt中的Post-hooks是一个强大而简单的特性#xff0c;它在构建模型之后(如果是pre-hook#xff0c;甚至在此之前)执行SQL语句。这些语句实际上(几乎)可以是任何东西#xff0c;从将表复制到另一个数据库/模式它在构建模型之后(如果是pre-hook甚至在此之前)执行SQL语句。这些语句实际上(几乎)可以是任何东西从将表复制到另一个数据库/模式或限制记录的数量或重新格式化seed。我们将讨论的示例是指DuckDB但是也可以适用于其他数据库。 认识 dbt hook 将原始数据转换为可供下游消费者使用的模型直接使用SQL非常实用但dbt默认不支持仅支持SELECT 语句。如果遇到下列场景我们可能需要SQL实现 管理计算层的大小或容量应用屏蔽策略或访问策略管理数据库参数 dbt hook可以实现这些特殊任务。与dbt项目中的许多资源不同钩子可以使用简单的SELECT语句之外的SQL命令这打开了充满可能性的新世界。dbt hook 主要分为 On-run-start/end: 用于在执行某些dbt命令之前/之后运行SQL查询 在下列命令的开始或结束处运行SQL语句(或SQL语句列表): dbt build, dbt compile, dbt docs generate, dbt run, dbt seed, dbt snapshot, dbt test. on-run-start和on-run-end hook也可以宏。语法如下 -- dbt_project.yml on-run-start: sql-statement | [sql-statement] on-run-end: sql-statement | [sql-statement]Pre-/post-hooks: 用于在执行某些dbt节点之前/之后运行SQL查询 在model, seed, snapshot 被构建之前/后运行SQL语句(或SQL语句列表), Pre-/post-hooks子也可以调用宏。dbt旨在通过开箱即用的功能提供SQL模版代码 (DDL、DML和DCL)从而快速而简洁地配置模型转换业务。当需要执行dbt尚未提供的特性时我们可以使用dbt的编译上下文编写所需的SQL并将其传递到Pre-/post-hooks以便在model, seed 或 snapshot之前或之后运行。语法如下 -- dbt_project.ymlmodels:resource-path:pre-hook: SQL-statement | [SQL-statement]post-hook: SQL-statement | [SQL-statement]也可以在模型中配置 -- models/model_name.sql{{ config(pre_hookSQL-statement | [SQL-statement],post_hookSQL-statement | [SQL-statement], ) }}select ...对于seed 和 snapshot 语法类似。 dbt模型使用post-hook 想象有业务需求如是我们dbt项目中模型需存储在特定schema中其访问权限是不公开的。这意味着组织中的任何人都无法从该模式中读取数据。这样做的原因可能与包含个人敏感数据有关或者仅仅是数据治理规范团队希望控制创建表的访问和使用权限。 我们可以使用post-hook实现对数据的访问同时不影响安全管理规范。在本例中这些数据需要被其他团队使用我们将表的内容复制到另一个公共模式/表中: {{config(materializedtable,post_hook[CREATE OR REPLACE TABLE {{ env_var(DBT_DATABASE) }}.public_schema.mart_orders AS SELECT * FROM {{this}};] ) }}SELECT * FROM {{ ref(ref_orders) }}当这个模型运行时用于构建模型的SQL首先运行紧接着post-hook语句被执行。在这个示例中我们使用: {{this}}函数它引用了在此文件中构建的模型特别是它在数据库中的表示env_var函数获取存储在profiles文件中的数据库变量。从技术上讲如果您已经为本地使用设置了DEV环境则不需要添加它因为dbt将自动指向它。然而这似乎是一个很好的做法声明它也使读者清楚。 请注意建议这里使用{{this}}特别是如果在两个独立的环境一个用于本地开发一个用于生产。如前所述如果在本地运行该模型dbt将把FROM {{this}}和CREATE TABLE语句转换为在配置文件中声明的本地开发数据库。然而很可能实际不需要在开发数据库中使用公开表而只需要在生产中使用。在这种情况下可以简单地在post-hook中进行显式设置只需从生产环境中获取数据并将其构建到生产环境中。代码示例如下 {{config(materializedtable,post_hook[CREATE OR REPLACE TABLE prod_database.public_schema.mart_orders AS SELECT * FROM prod_database.team_private_schema.mart_orders;] ) }}SELECT * FROM {{ ref(ref_orders) }}现在让我们给post-hook逻辑增加两个业务用例基于以下现实场景: 我们要公开的表包含一些个人隐私数据如customer_email或customer_phone_number公共模式仅用于“展示”模型的内容而实际的访问是在其他地方(例如按需)提供的并且直接访问存储在私有schema中的表。 对于第一个用例我们仅需排除不想暴露的字段以返回其部分内容: {{config(materializedtable,post_hook[CREATE OR REPLACE TABLE prod_database.public_schema.mart_orders AS SELECT * EXCLUDE (customer_email, customer_phone_number), split(customer_email,)[2] AS customer_email FROM prod_database.team_private_schema.mart_orders;] ) }}SELECT * FROM {{ ref(ref_orders) }}对于第二个用例我们只是限制表中返回的记录数量。并添加一列其中包含友好的提醒信息以便与团队联系以访问表格 {{config(materializedtable,post_hook[CREATE OR REPLACE TABLE prod_database.public_schema.mart_orders AS SELECT request access to the table at team_datacompany.com AS readme, * EXCLUDE (customer_email, customer_phone_number), split(customer_email,)[2] AS customer_email FROM prod_database.team_private_schema.mart_orders LIMIT 5;] ) }}SELECT * FROM {{ ref(ref_orders) }}dbt seed使用post-hook Dbt seed可以直接加载CSV文件到数据仓库中通常拥有处理不经常更改的静态数据。有时这些csv是由多个业务团体提供的格式上可能缺乏标准化。让我们看一个简单的例子理解post-hook是如何派上用场的。 我们有一个seed文件包含新旧产品的名称映射在中间层模型连接引用。我们希望确保列中的值都转换为小写因为这是编码格式约定要做的是在seed的.yml配置文件中添加post-hook和相关的SQL语句: version: 2seeds:- name: seed_product_namesconfig:post-hook: CREATE OR REPLACE TABLE prod_database.team_private_schema.seed_product_names AS SELECT LOWER(old_product_name) AS old_product_name, LOWER(new_product_name) as new_product_name FROM prod_database.team_private_schema.seed_product_names;description: This seed contains all product names (old and new versions)columns:- name: old_product_namedescription: The old product name used in previous platformtype: string- name: new_product_namedescription: The new product name used in current platformtype: stringdbt seed命令运行后执行post-hook中的SQL将dbt seed刚刚构建的模型替换为遵循约定的重新格式化版本。 很明显,我们可以在添加至seed之前直接格式化CSV文件然而添加格式规则在SQL不仅能给你更多的质量控制能力也会提高文档描述因为格式化内容在SQL和描述中已清晰地说明。 或许有人认为这种重新格式化SQL操作可以通过构建从seed获取数据的staging模型表来实现。虽然这显然是可行的但它违背了将这些“规范”映射CSV文件存储和记录为dbt seed的约定。 同样与dbt模型一样post-hook可以用于各种数据操作常见(例如在seed中连接字符串创建新列截取或替换字符串等)这些都可以通过SQL语句实现。 总结 本文通过提供在模型和种子级别上使用post-hook的具体示例展示了dbt中post-hook的多种应用场景。这些示例演示了post-hook如何用于复制表、限制返回记录和重新格式化数据。总之通过使用post-hooks用户可以更好地控制数据质量并提升模型文档。期待您的真诚反馈更多内容请阅读数据分析工程专栏。
http://www.hkea.cn/news/14375430/

相关文章:

  • 网站建设与管理自考本全国卷开封网站建设培训学校
  • 网站如何推广运营信息流优化师面试常见问题
  • 沈阳网站建设本地化技术服务淮南教育网官网
  • 手机营销网站模板免费下载小型静态网站是什么原因
  • 网站默认地区数据修改国家信用信息企业公示系统官网
  • 上海企业网站的建设西部数码网站管理助手 ftp上传文件失败
  • 网站建设虚线的代码wordpress 首页 函数
  • 苏州网站开发费用详情网站建设国际标准
  • 怎样删除网站虚拟主机内容苏州专业的网站建设公司
  • 用dw做教学网站asp网站转php
  • 承德网站建设咨询重庆网站建设营销
  • 做网站侵权wordpress 科技类主题
  • 永康建设投标网站广东注册公司在哪个网站申请
  • 专做腰带的网站长沙公司网络营销推广
  • 服装网站建设都有哪些沈阳模板建站系统
  • 个人网站注册名称简历模板网站有哪些
  • 网站欣赏 公司网站案例做网站有什么必要
  • 东莞哪家网站建设17网站一起做网店株洲
  • 公厂做网站需要开诚信通吗wordpress主题代码
  • 门户网站制度建设asp做的静态网站卡不卡
  • 邯郸手机建站价格临沂做商城网站建设
  • 宜城网站开发广东网站关键词排名
  • 邢台吧百度贴吧最新消息seo建站还有市场吗
  • 简述网站推广方式聊城高端网站制作
  • 海宁公司做网站分销系统合法吗
  • 网页设计与网站建设在线考试1688做网站需要多少钱
  • 网站定制报价京东自营商城官网
  • 怎么做网站界面分析建设一个企业网站需要多少钱
  • 做网站设计软件南京企业制作网站
  • 遵义网站建设公司电话建筑人才招聘网最新招聘