跨境電商獨立站運營百度一下的網(wǎng)址
DBT是什么:
? ? ? ? 按照官方的說法,DBT 是一個數(shù)據(jù)轉(zhuǎn)換流編排工具。個人理解就是,DBT是幫你編排SQL用的,你可以按照DBT的結(jié)構(gòu),構(gòu)建好一個SQL的pipeline,然后讓DBT幫你執(zhí)行這個pipeline。我這里說的SQL pipeline的意思就是,先執(zhí)行SQL a,再執(zhí)行SQL b,類似這種。個人理解這就是DBT最大也是最核心的功能!
????????因為在DBT中的操作基本都是關(guān)于SQL的操作,所以DBT才對外宣稱自己是專門做ETL中的T(當(dāng)然它也有支持一部分的python代碼,但是貌似支隊一小部分數(shù)據(jù)庫提供支持)。
? ? ? ? 個人覺得如果公司內(nèi)部現(xiàn)成已經(jīng)有一套數(shù)據(jù)任務(wù)開發(fā)框架,或者使用的是 ali 的 dataworks 、網(wǎng)易的 easydata 之類的,貌似沒必要強行再上DBT。如果你是個中小公司,沒有現(xiàn)成的數(shù)據(jù)開發(fā)平臺,或者你是個數(shù)據(jù)分析師,嫌棄商用數(shù)據(jù)開發(fā)平臺使用成本太高而且數(shù)據(jù)想保存在公司本地電腦中,那么建議考慮一下DBT!
? ? ? ? DBT還有一些特點:1. 把SQL開發(fā)像后端代碼開發(fā)一樣工程化,SQL工程存儲在后端的代碼倉庫上,可以做到CI/CD。 2. 支持 jinja 宏函數(shù),然后DBT定義了一套語法規(guī)范,抹平了一些SQL方言上的差異,做到一套DBT代碼就可以在各個數(shù)據(jù)倉庫上運行。當(dāng)然對于這塊功能我還是要打個問號的,后面研究的深入了再看看。 3.?無須寫insert語句,直接寫select語句即可,dbt會自動根據(jù)select建表,講數(shù)據(jù)寫入到數(shù)據(jù)庫 4. 其他功能,后面慢慢說吧...
搭建第一個DBT工程:
? ? ? ? 這里說的DBT指的是開源的dbt core,另外還有一款閉源的收費產(chǎn)品叫 dbt cloud。
? ? ? ? DBT是python代碼編寫的,所以想要使用dbt就要首先安裝好python環(huán)境,個人使用的是3.10。
基于duckdb:
? ? ? ? dbt官方的收費產(chǎn)品dbt cloud 僅支持?BigQuery、Databricks、Postgres 等十多個數(shù)據(jù)庫適配器,其他例如 Doris、MySQL、Hive 等等都是社區(qū)各自自己提供的適配器(開源)支持dbt。
? ? ? ? 此處演示使用的數(shù)據(jù)庫為duckdb。為什么是基于duckdb,是因為duckdb不需要安裝,直接引個python包就好了。直接?pip install?dbt-duckdb?安裝好對應(yīng)的python包即可,當(dāng)然最好是在python虛擬環(huán)境中安裝,防止與外部包沖突,同時安裝dbt-duckdb?會自動把dbt-core?也安裝好。
? ? ? ? 環(huán)境安裝好之后,然后直接執(zhí)行dbt init my_jaffle_shop 就會幫你創(chuàng)建好一個名叫my_jaffle_shop?的dbt demo工程,如下所示,dbt會自動幫你創(chuàng)建好目錄結(jié)構(gòu)。其中dbt-project.yml是整個dbt工程的配置文件,它里面說明dbt工程的一些環(huán)境變量的配置,這樣dbt就知道如何去解析工程結(jié)構(gòu)了(具體每項配置干嘛用的,后續(xù)再說):
? ? ? ? ?同時在工程中還要新建一個文件叫profiles.yml,就是上面標紅的第二個文件,整個文件是用于配置數(shù)據(jù)庫連接信息用的,告訴dbt如何連接數(shù)據(jù)庫。例如duckdb的配置如下所示:
? ? ? ? 然后cd?到?myduckdb_jaffle_shop 目錄下,執(zhí)行 dbt run?命令,顯示success,整個dbt工程就跑完了,數(shù)據(jù)就按demo工程中的SQL語句運行完畢寫入到duckdb數(shù)據(jù)庫中了:
????????使用命令行查看運行結(jié)果:
參考:
????????DBT是什么_dbt數(shù)據(jù)庫_DBT中文社區(qū)的博客-CSDN博客
????????Quickstart for dbt Core from a manual install | dbt Developer Hub