来自官方的一些dbt 最佳实践
限制对原始数据的依赖性
您的项目将取决于存储在数据库中的原始数据。我们建议制作所谓的“基本模型”,以最大限度地减少对原始数据表的依赖性。在此约定中,基本模型可以具有以下职责:
- 仅选择与当前分析相关的字段以限制复杂性。以后可以随时添加更多字段。
- 执行任何所需的类型转换。
- 执行字段别名以将字段名称合理化为项目中使用的标准格式。
- 充当给定原始数据表的唯一访问点。
在此约定中,所有后续数据模型都建立在基本模型之上而不是原始数据之上 - 仅允许基本模型从原始数据表中进行选择。这可以确保基本模型中的所有转换都将应用于此数据的所有使用,并且如果源数据表移动(或位于不同环境中的不同架构或表中),则可以在单一的地方。
有关基本模型的简单示例,请查看此Quickbooks基本模型。
首先构建视图
在构建新的dbt模型时,默认情况下将这些新模型实现为视图是很常见的。视图部署速度非常快,而且配置选项很少。由于模型行为由配置控制,因此您可以在项目需要发展时更新特定模型的配置,而无需修改模型代码。
要将项目配置为默认视图,您需要将以下内容放入dbt_project.yml
:
models:
[your-project-name]:
enabled: true
materialized: view
管理多个环境
dbt支持target
给定项目中的多个s ~/.dbt/profiles.yml
。用户可以配置默认值,target
并可以使用--target
传递给的标志覆盖此设置dbt run
。我们建议您将默认设置设置target
为开发环境,然后target
专门切换到生产环境以部署到生产环境。
使用target
管理多个环境,您可以灵活地根据自己的选择设置环境。通常,环境由同一数据库中的模式管理:所有测试模型都部署到调用的模式dbt_[username]
,生产模型部署到调用的模式analytics
。理想的设置将生产和测试数据库完全分开。无论哪种方式,我们强烈建议维护多个环境并使用管理部署target
。
源控制工作流程
我们认为所有dbt项目都应该通过源代码管理来管理。我们使用git进行所有源代码控制,并使用分支和拉取请求来保持主分支成为组织真实的唯一来源。
以交互方式使用dbt
当您的项目变得足够大时,dbt run
可能需要一段时间。dbt提供了三种主要方法来解决此问题,以便您可以快速部署对数据库的更改:
- 在开发过程中尽可能使用视图而不是表。视图通常比表更快地部署,并且在开发过程中,后续分析查询尽可能快地运行通常并不重要。以后可以轻松更改此设置,它不会对您的业务逻辑产生任何影响。
- 使用
dbt_project.yml
禁用你没有目前的工作项目的部分。如果给定项目中有多个模块,请关闭当前未处理的模块,以便不会对每个模块进行部署dbt run
。 - 将
--models
旗帜传递给dbt run
。此标志使dbt仅部署您指定的模型及其依赖项。如果您正在处理特定模型,这会在大型项目中的部署时间上产生非常显着的差异。
来自官方的一些dbt 最佳实践的更多相关文章
- 转载:Google 官方应用架构的最佳实践指南 赞👍
官方给的实践指南,很有实际的指导意义, 特别是对一些小公司,小团队,给了很好的参考意义. 原文地址: https://developer.android.com/topic/libraries/ar ...
- Dockerfile 命令详解及最佳实践
Dockerfile 命令详解 FROM 指定基础镜像(必选) 所谓定制镜像,那一定是以一个镜像为基础,在其上进行定制.就像我们之前运行了一个 nginx 镜像的容器,再进行修改一样,基础镜像是必须指 ...
- Sentry 后端监控 - 最佳实践(官方教程)
系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...
- 来自Google资深工程师的API设计最佳实践
来自Google资深工程师Joshua Bloch的分享:API设计最佳实践 为什么API设计如此重要?API是一个公司最重要的资产. 为什么API的设计对程序员如此重要? API一旦发布,出于兼容性 ...
- 可伸缩性最佳实践:来自eBay的经验
看到一篇关于系统可伸缩性(可扩展)的文章,eBay的架构师Randy Shoup写的,原文出处没找到,就不写转载的地址了.根据自己的理解对文章有修改剪切的地方. 在eBay,可伸缩性是我们每天奋力抵抗 ...
- (转)可伸缩性最佳实践:来自eBay的经验
转自:http://www.infoq.com/cn/articles/ebay-scalability-best-practices 在eBay,可伸缩性是我们每天奋力抵抗的一大架构压力.我们所做的 ...
- 给JavaScript初学者的24条最佳实践
.fluid-width-video-wrapper { width: 100%; position: relative; padding: 0 } .fluid-width-video-wrapp ...
- Java 日志管理最佳实践
转:http://blog.jobbole.com/51155/ 日志记录是应用程序运行中必不可少的一部分.具有良好格式和完备信息的日志记录可以在程序出现问题时帮助开发人员迅速地定位错误的根源.对于开 ...
- PHP最佳实践(译)
原文: PHP Best Practices-A short, practical guide for common and confusing PHP tasks 译者:youngsterxyf 最 ...
随机推荐
- python-day9-循环嵌套
练习:99乘法表: # for line in range(1,10): #line=2# for row in range(1,line+1):# print('%s*%s=%s' %(line,r ...
- linux单用户模式
linux单用户模式 2014年11月11日 17:18 在grub上相应要启动的内核上按“e”. 进入下一界面,继续按“e”. 在进入文本界面后,输入“single”回车. 进入grub界面后,按“ ...
- Oracle性能诊断艺术-相关脚本说明
第二章 bind_variables.sql 展示怎样绑定变量及何时绑定变量会导致游标共享 bind_variables_peeking.sql 展示绑定变量窥测的优缺点 selectivi ...
- [Leetcode] Unique binary search trees 唯一二叉搜索树
Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For examp ...
- vue上传文件
<div> <input type="file" class="file" name="file" @change=&qu ...
- @Component 元注解
@Component 元注解 这是一个元注解,意思是它可以用于标注其他注解,被它标注的注解和它起到相同或者类似的作用.Spring用它定义了其他具有特定意义的注解如@Controller @Servi ...
- POJ 1007 DNA sorting (关于字符串和排序的水题)
#include<iostream>//写字符串的题目可以用这种方式:str[i][j] &str[i] using namespace std; int main() {int ...
- DevExpress v17.2新版亮点—Bootstrap篇(一)
用户界面套包DevExpress v17.2日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了Bootstrap Controls v17.2 的CardView.Charts ...
- SharePoint 2010 Ribbon with wrong style in Chrome and Safari
When we add custom ribbon to SharePoint 2010, it may display well in IE but not in Chrome and Safari ...
- react-> webstrom 配置
React Library支持