Bagikan melalui


Gunakan transformasi dbt dalam pekerjaan Azure Databricks

Anda dapat menjalankan proyek dbt Core Anda sebagai tugas dalam pekerjaan Azure Databricks. Dengan menjalankan proyek dbt Core Anda sebagai tugas pekerjaan, Anda dapat memperoleh manfaat dari fitur Pekerjaan Azure Databricks berikut:

  • Otomatiskan tugas dbt Anda dan jadwalkan alur kerja yang menyertakan tugas dbt.
  • Pantau transformasi dbt Anda dan kirim pemberitahuan tentang status transformasi.
  • Sertakan proyek dbt Anda dalam alur kerja dengan tugas lain. Misalnya, alur kerja Anda dapat menyerap data dengan Auto Loader, mengubah data dengan dbt, dan menganalisis data dengan tugas notebook.
  • Pengarsipan otomatis artefak dari eksekusi pekerjaan, termasuk log, hasil, manifes, dan konfigurasi.

Untuk mempelajari selengkapnya tentang dbt Core, lihat dokumentasi dbt.

Alur kerja pengembangan dan produksi

Databricks merekomendasikan pengembangan proyek dbt Anda terhadap gudang Databricks SQL. Dengan gudang SQL Databricks, Anda dapat menguji SQL yang dihasilkan oleh dbt dan menggunakan riwayat kueri gudang SQL untuk men-debug kueri yang dihasilkan oleh dbt.

Untuk menjalankan transformasi dbt Anda dalam produksi, Databricks merekomendasikan penggunaan tugas dbt dalam pekerjaan Databricks. Secara default, tugas dbt akan menjalankan proses dbt Python menggunakan komputasi Azure Databricks dan DBT yang dihasilkan SQL terhadap gudang SQL yang dipilih.

Anda dapat menjalankan transformasi dbt pada gudang SQL tanpa server atau gudang pro SQL, komputasi Azure Databricks, atau gudang lain yang didukung dbt. Artikel ini membahas dua opsi pertama dengan contoh.

Jika ruang kerja Anda diaktifkan Oleh Katalog Unity dan Pekerjaan Tanpa Server diaktifkan, secara default, pekerjaan berjalan pada komputasi Tanpa Server.

Catatan

Mengembangkan model dbt terhadap gudang SQL dan menjalankannya dalam produksi di komputasi Azure Databricks dapat menyebabkan perbedaan halus dalam performa dan dukungan bahasa SQL. Databricks merekomendasikan penggunaan versi Databricks Runtime yang sama untuk komputasi dan gudang SQL.

Persyaratan

Membuat dan menjalankan pekerjaan dbt pertama Anda

Contoh berikut menggunakan proyek jaffle_shop , contoh proyek yang menunjukkan konsep inti dbt. Untuk membuat pekerjaan yang menjalankan proyek toko jaffle, lakukan langkah-langkah berikut.

  1. Buka halaman arahan Azure Databricks Anda dan lakukan salah satu hal berikut ini:

    • Klik Ikon Alur KerjaAlur Kerja di bar samping dan klik Tombol Buat Pekerjaan.
    • Di bar samping, klik Ikon BaruBaru dan pilih Pekerjaan.
  2. Dalam kotak teks tugas pada tab Tugas, ganti Tambahkan nama untuk pekerjaan Anda... dengan nama pekerjaan Anda.

  3. Di Nama tugas, masukkan nama untuk tugas tersebut.

  4. Di Jenis, pilih jenis tugas dbt .

    Menambahkan tugas dbt

  5. Di menu drop-down Sumber, Anda dapat memilih Ruang Kerja untuk menggunakan proyek dbt yang terletak di folder ruang kerja Azure Databricks atau penyedia Git untuk proyek yang terletak di repositori Git jarak jauh. Karena contoh ini menggunakan proyek toko jaffle yang terletak di repositori Git, pilih penyedia Git, klik Edit, dan masukkan detail untuk repositori GitHub toko jaffle.

    Mengonfigurasi repositori proyek dbt

    • Di URL repositori Git, masukkan URL untuk proyek toko jaffle.
    • Dalam referensi Git (cabang / tag / penerapan), masukkan main. Anda juga dapat menggunakan tag atau SHA.
  6. Klik Konfirmasi.

  7. Dalam kotak teks perintah dbt, tentukan perintah dbt yang akan dijalankan (deps, seed, dan run). Anda harus mengawali setiap perintah dengan dbt. Perintah dijalankan dalam urutan yang ditentukan.

    Mengonfigurasi perintah dbt

  8. Di gudang SQL, pilih gudang SQL untuk menjalankan SQL yang dihasilkan oleh dbt. Menu drop-down gudang SQL hanya menunjukkan gudang SQL tanpa server dan pro.

  9. (Opsional) Anda dapat menentukan skema untuk output tugas. Secara default, skema default digunakan.

  10. (Opsional) Jika Anda ingin mengubah konfigurasi komputasi yang menjalankan dbt Core, klik dbt CLI compute.

  11. (Opsional) Anda dapat menentukan versi dbt-databricks untuk tugas tersebut. Misalnya, untuk menyematkan tugas dbt Anda ke versi tertentu untuk pengembangan dan produksi:

    • Di bawah Pustaka dependen, klik Hapus Ikon di samping versi dbt-databricks saat ini.
    • Klik Tambahkan.
    • Dalam dialog Tambahkan pustaka dependen, pilih PyPI dan masukkan versi paket dbt di kotak teks Paket (misalnya, dbt-databricks==1.6.0).
    • Klik Tambahkan.

    Mengonfigurasi versi dbt-databricks

    Catatan

    Databricks merekomendasikan untuk menyematkan tugas dbt Anda ke versi tertentu dari paket dbt-databricks untuk memastikan versi yang sama digunakan untuk pengembangan dan eksekusi produksi. Databricks merekomendasikan versi 1.6.0 atau lebih tinggi dari paket dbt-databricks.

  12. Klik Buat.

  13. Untuk menjalankan pekerjaan sekarang, klik Tombol Jalankan Sekarang.

Menampilkan hasil tugas pekerjaan dbt Anda

Setelah pekerjaan selesai, Anda dapat menguji hasilnya dengan menjalankan kueri SQL dari buku catatan atau dengan menjalankan kueri di gudang Databricks Anda. Misalnya, lihat contoh kueri berikut:

 SHOW tables IN <schema>;
SELECT * from <schema>.customers LIMIT 10;

Ganti <schema> dengan nama skema yang dikonfigurasi dalam konfigurasi tugas.

Contoh API

Anda juga dapat menggunakan JOBS API untuk membuat dan mengelola pekerjaan yang menyertakan tugas dbt. Contoh berikut membuat pekerjaan dengan satu tugas dbt:

{
  "name": "jaffle_shop dbt job",
  "max_concurrent_runs": 1,
  "git_source": {
    "git_url": "https://github.com/dbt-labs/jaffle_shop",
    "git_provider": "gitHub",
    "git_branch": "main"
  },
  "job_clusters": [
    {
      "job_cluster_key": "dbt_CLI",
      "new_cluster": {
        "spark_version": "10.4.x-photon-scala2.12",
        "node_type_id": "Standard_DS3_v2",
        "num_workers": 0,
        "spark_conf": {
          "spark.master": "local[*, 4]",
          "spark.databricks.cluster.profile": "singleNode"
        },
        "custom_tags": {
          "ResourceClass": "SingleNode"
        }
      }
    }
  ],
  "tasks": [
    {
      "task_key": "transform",
      "job_cluster_key": "dbt_CLI",
      "dbt_task": {
        "commands": [
          "dbt deps",
          "dbt seed",
          "dbt run"
        ],
        "warehouse_id": "1a234b567c8de912"
      },
      "libraries": [
        {
          "pypi": {
            "package": "dbt-databricks>=1.0.0,<2.0.0"
          }
        }
      ]
    }
  ]
}

(Tingkat Lanjut) Menjalankan dbt dengan profil kustom

Untuk menjalankan tugas dbt Anda dengan gudang SQL (disarankan) atau komputasi serba guna, gunakan kustom profiles.yml yang menentukan komputasi gudang atau Azure Databricks untuk disambungkan. Untuk membuat pekerjaan yang menjalankan proyek toko jaffle dengan gudang atau komputasi serba guna, lakukan langkah-langkah berikut.

Catatan

Hanya gudang SQL atau komputasi serba guna yang dapat digunakan sebagai target untuk tugas dbt. Anda tidak dapat menggunakan komputasi pekerjaan sebagai target untuk dbt.

  1. Buat fork repositori jaffle_shop .

  2. Kloning repositori fork ke desktop Anda. Misalnya, Anda dapat menjalankan perintah seperti berikut ini:

    git clone https://github.com/<username>/jaffle_shop.git
    

    Ganti <username> dengan handel GitHub Anda.

  3. Buat file baru yang profiles.yml disebut jaffle_shop di direktori dengan konten berikut:

     jaffle_shop:
       target: databricks_job
       outputs:
         databricks_job:
          type: databricks
          method: http
          schema: "<schema>"
          host: "<http-host>"
          http_path: "<http-path>"
          token: "{{ env_var('DBT_ACCESS_TOKEN') }}"
    

    Anda tidak menentukan rahasia, seperti token akses, dalam file karena Anda akan memeriksa file ini ke kontrol sumber. Sebagai gantinya, file ini menggunakan fungsionalitas templat dbt untuk menyisipkan kredensial secara dinamis saat runtime.

    Catatan

    Kredensial yang dihasilkan berlaku selama durasi eksekusi, hingga maksimum 30 hari, dan secara otomatis dicabut setelah selesai.

  4. Periksa file ini ke Git dan dorong ke repositori fork Anda. Misalnya, Anda dapat menjalankan perintah seperti berikut ini:

    git add profiles.yml
    git commit -m "adding profiles.yml for my Databricks job"
    git push
    
  5. Klik Ikon Alur KerjaAlur Kerja di bilah samping UI Databricks.

  6. Pilih pekerjaan dbt dan klik tab Tugas .

  7. Di Sumber, klik Edit dan masukkan detail repositori GitHub toko jaffle fork Anda.

    Mengonfigurasi repositori proyek fork

  8. Di gudang SQL, pilih Tidak Ada (Manual).

  9. Di Direktori Profil, masukkan jalur relatif ke direktori yang profiles.yml berisi file. Biarkan nilai jalur kosong untuk menggunakan default akar repositori.

(Tingkat Lanjut) Menggunakan model dbt Python dalam alur kerja

Catatan

Dukungan dbt untuk model Python masih dalam versi beta dan memerlukan dbt 1.3 atau lebih tinggi.

dbt sekarang mendukung model Python pada gudang data tertentu, termasuk Databricks. Dengan model dbt Python, Anda dapat menggunakan alat dari ekosistem Python untuk menerapkan transformasi yang sulit diterapkan dengan SQL. Anda dapat membuat pekerjaan Azure Databricks untuk menjalankan satu tugas dengan model Python dbt Anda, atau Anda dapat menyertakan tugas dbt sebagai bagian dari alur kerja yang menyertakan beberapa tugas.

Anda tidak dapat menjalankan model Python dalam tugas dbt menggunakan gudang SQL. Untuk informasi selengkapnya tentang penggunaan model dbt Python dengan Azure Databricks, lihat Gudang data spesifik dalam dokumentasi dbt.

Kesalahan dan pemecahan masalah

File profil tidak ada kesalahan

Pesan kesalahan:

dbt looked for a profiles.yml file in /tmp/.../profiles.yml but did not find one.

Kemungkinan penyebabnya:

File profiles.yml tidak ditemukan dalam $PATH yang ditentukan. Pastikan root proyek dbt Anda berisi file profiles.yml.