我知道可以在 dbt 中參考 SQL 檔案/模型中的資料庫、模式和表。例子:
select
'{{ this }}' as full_path,
'{{ this.schema }}' as schema_name,
'{{ this.database }}' as db_name,
'{{ this.table }}' as table_name
但是,我正在尋找一種方法來獲取某個 .sql 檔案所在的檔案夾。在我看來,我猜是這樣的:{{ this.folder }}. 但不幸的是,它不起作用。
有任何想法嗎?
uj5u.com熱心網友回復:
this是一個Relation,它是對資料庫中物件的參考,而不是對產生關系的模型的參考(這是專案中的檔案)。
背景關系變數包含每個模型的graph路徑;以前很難以編程方式訪問當前模型的節點,因為它是由專案和模型名稱鍵入的,但 dbt 通過添加model變數來解決這個問題,這就是這樣做的。
{{ model.path }}將為您提供模型檔案的完整路徑(相對于模型檔案夾,因此marts/marketing/orders.sql如果您的檔案位于/models/marts/marketing/orders.sql)。您還可以使用{{ model.root_path }}專案根目錄的路徑(例如,/home/tco/open/jaffle_shop)
如果您只想要該檔案夾,則必須稍微調整path一下:
{% if execute %}
{% set path = model.path %} -- e.g. 'marts/marketing/orders.sql'
{% set path_list = path.split('/') %} -- e.g. ['marts', 'marketing', 'orders.sql']
{% set folder = path_list[:-1] | join('/') %} -- e.g., 'marts/marketing'
{% endif %}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/531032.html
標籤:sql数据库
