Makan hari juga mahu selesaikan masalah ini. Dalam satu projek dbt saya, objek database tidak di create dalam schema yang betul. Puas saya cari tidak jumpa juga.
Ceritanya begini, semasa dalam proses development projek tersebut saya gunakan nama schema test_dbt
. Sebelum itu berikut adalah 2 struktur file yang bermain dengan schema.
dbt_project.yml (rujuk di sini)
models:
pemasaran:
customers_model:
+enabled: true
+materialized: view
profiles.yml (rujuk di sini)
pemasaran:
outputs:
dev_pemasaran:
type: postgres
threads: 1
host: "123.456.789"
port: 5432
user: "user_pemasaran"
pass: "XXXXXXX"
dbname: "staging_db"
schema: "test_dbt"
target: dev_pemasaran
Contoh profiles.yml di atas adalah hanya sebagai rujukkan. Anda digalakkan menggunakan cara yang lebih selamat seperti menggunakan secret manager
Apabila hendak masuk enviroment yang lebih format seperti SIT, nama test_dbt itu seperti tidak sesuai dan perlu digantikan dengan dengan schema pemasaran.
Jadi saya ubah fail-fail penting ini seperti berikut
dbt_project.yml (rujuk di sini)
models:
pemasaran:
customers_model:
+enabled: true
+materialized: view
+schema: pemasaran
profiles.yml (rujuk di sini)
pemasaran:
outputs:
sit_pemasaran:
type: postgres
threads: 1
host: "123.456.789"
port: 5432
user: "user_pemasaran"
pass: "XXXXXXX"
dbname: "staging_db"
schema: "pemasaran"
target: sit_pemasaran
Apabila saya menjalankan command:
dbt run --select "customers_model"
Saya tidak menjumpai objek-objek dan data dalam schema pemasaran.
Pelik bukan?
Setelah saya refresh data objek dalam SQL ide barulah saya perasan. Rupa-rupanya objek-objek tersebut dicipta dalam schema pemasaran_pemasaran.
Barulah saya faham. Jika anda sudah mempunyai schema yang tertentu, anda tidak perlu menambah schema tagging dalam dbt_project.yml seperti di bawah
dbt_project.yml (rujuk di sini)
models:
pemasaran:
customers_model:
+enabled: true
+materialized: view
## +schema: pemasaran <---buang bahagian ini.