Share via


Azure Databricks işinde dbt dönüşümlerini kullanma

dbt Core projelerinizi bir Azure Databricks işinde görev olarak çalıştırabilirsiniz. dbt Core projenizi iş görevi olarak çalıştırarak aşağıdaki Azure Databricks İşleri özelliklerinden yararlanabilirsiniz:

  • dbt görevlerinizi otomatikleştirin ve dbt görevleri içeren iş akışlarını zamanlayın.
  • dbt dönüşümlerinizi izleyin ve dönüştürmelerin durumuyla ilgili bildirimler gönderin.
  • Dbt projenizi diğer görevlerle birlikte bir iş akışına ekleyin. Örneğin, iş akışınız Otomatik Yükleyici ile verileri alabilir, dbt ile verileri dönüştürebilir ve bir not defteri göreviyle verileri analiz edebilir.
  • Günlükler, sonuçlar, bildirimler ve yapılandırma dahil olmak üzere iş çalıştırmalarından yapıtların otomatik arşivlenmesi.

dbt Core hakkında daha fazla bilgi edinmek için dbt belgelerine bakın.

Geliştirme ve üretim iş akışı

Databricks, dbt projelerinizi databricks SQL ambarı üzerinde geliştirmenizi önerir. Databricks SQL ambarını kullanarak dbt tarafından oluşturulan SQL'i test edebilir ve dbt tarafından oluşturulan sorgularda hata ayıklamak için SQL ambarı sorgu geçmişini kullanabilirsiniz.

Databricks, dbt dönüşümlerinizi üretim ortamında çalıştırmak için bir Databricks işinde dbt görevinin kullanılmasını önerir. Varsayılan olarak, dbt görevi seçilen SQL ambarı için Azure Databricks işlemini ve dbt tarafından oluşturulan SQL'i kullanarak dbt Python işlemini çalıştırır.

Dbt dönüşümlerini sunucusuz bir SQL ambarı veya pro SQL ambarı, Azure Databricks işlemi veya dbt tarafından desteklenen başka bir ambarda çalıştırabilirsiniz. Bu makalede örneklerle birlikte ilk iki seçenek ele alınmaktadır.

Çalışma alanınız Unity Kataloğu etkinse ve Sunucusuz İş Akışları etkinse, iş varsayılan olarak Sunucusuz işlemde çalışır.

Not

Sql ambarında dbt modelleri geliştirmek ve bunları Azure Databricks işlemlerinde üretimde çalıştırmak, performans ve SQL dil desteğinde küçük farklılıklara yol açabilir. Databricks, işlem ve SQL ambarı için aynı Databricks Runtime sürümünün kullanılmasını önerir.

Gereksinimler

  • Dbt Core'u ve dbt-databricks paketi kullanarak geliştirme ortamınızda dbt projeleri oluşturmayı ve çalıştırmayı öğrenmek için bkz. dbt Core'a Bağlan.

    Databricks, dbt-spark paketini değil dbt-databricks paketini önerir. dbt-databricks paketi, Databricks için optimize edilmiş bir dbt-spark çatalıdır.

  • Dbt projelerini bir Azure Databricks işinde kullanmak için Databricks Git klasörleriyle Git tümleştirmesi ayarlamanız gerekir. DBFS'den dbt projesi çalıştıramazsınız.

  • Sunucusuz veya profesyonel SQL ambarlarınız etkinleştirilmiş olmalıdır.

  • Databricks SQL yetkilendirmesine sahip olmanız gerekir.

İlk dbt işinizi oluşturma ve çalıştırma

Aşağıdaki örnek, temel dbt kavramlarını gösteren örnek bir proje olan jaffle_shop projesini kullanır. Jaffle shop projesini çalıştıran bir iş oluşturmak için aşağıdaki adımları gerçekleştirin.

  1. Azure Databricks giriş sayfanıza gidin ve aşağıdakilerden birini yapın:

    • Kenar çubuğunda İş Akışları'na ve öğesine tıklayınİş Oluştur Düğmesi.İş Akışları Simgesi
    • Kenar çubuğunda Yeni'ye tıklayın Yeni Simgeve İş'i seçin.
  2. Görevler sekmesindeki görev metin kutusunda, İşiniz için ad ekle... öğesini iş adınız ile değiştirin.

  3. Görev adı alanına görev için bir ad girin.

  4. Tür'de dbt görev türünü seçin.

    Dbt görevi ekleme

  5. Kaynak açılan menüsünde, Uzak Git deposunda bulunan bir proje için Azure Databricks çalışma alanı klasöründe veya Git sağlayıcısında bulunan bir dbt projesini kullanmak için Çalışma Alanı'nı seçebilirsiniz. Bu örnekte Git deposunda bulunan jaffle shop projesi kullanıldığı için Git sağlayıcısı'nı seçin, Düzenle'ye tıklayın ve jaffle mağazası GitHub deposunun ayrıntılarını girin.

    dbt proje depolarını yapılandırma

    • Git deposu URL'sinde jaffle shop projesinin URL'sini girin.
    • Git başvurusuna (dal / etiket / işleme) girin main. Ayrıca bir etiket veya SHA da kullanabilirsiniz.
  6. Onayla'yı tıklatın.

  7. dbt komutları metin kutularında çalıştırılacak dbt komutlarını belirtin (deps, seed ve run). Her komutun ön eklerini ile önek olarak dbtbelirtmeniz gerekir. Komutlar belirtilen sırada çalıştırılır.

    dbt komutlarını yapılandırma

  8. SQL ambarında, dbt tarafından oluşturulan SQL'i çalıştırmak için bir SQL ambarı seçin. SQL ambarı açılan menüsünde yalnızca sunucusuz ve profesyonel SQL ambarları gösterilir.

  9. (İsteğe bağlı) Görev çıkışı için bir şema belirtebilirsiniz. Varsayılan olarak şema default kullanılır.

  10. (İsteğe bağlı) dbt Core çalıştıran işlem yapılandırmasını değiştirmek istiyorsanız dbt CLI işlem'e tıklayın.

  11. (İsteğe bağlı) Görev için bir dbt-databricks sürümü belirtebilirsiniz. Örneğin, dbt görevinizi geliştirme ve üretim için belirli bir sürüme sabitlemek için:

    • Bağımlı kitaplıklar'ın altında geçerli dbt-databricks sürümünün yanındaki öğesine tıklayınSil Simgesi.
    • Ekle'yi tıklatın.
    • Bağımlı kitaplık ekle iletişim kutusunda PyPI'yi seçin ve Paket metin kutusuna dbt-package sürümünü girin (örneğin, dbt-databricks==1.6.0).
    • Ekle'yi tıklatın.

    dbt-databricks sürümünü yapılandırma

    Not

    Databricks, geliştirme ve üretim çalıştırmalarında aynı sürümün kullanıldığından emin olmak için dbt görevlerinizi dbt-databricks paketinin belirli bir sürümüne sabitlemenizi önerir. Databricks, dbt-databricks paketinin 1.6.0 veya üzeri bir sürümünü önerir.

  12. Oluştur’a tıklayın.

  13. İşi şimdi çalıştırmak için öğesine tıklayın Şimdi Çalıştır Düğmesi.

dbt iş görevinizin sonuçlarını görüntüleme

İş tamamlandığında, bir not defterinden SQL sorguları çalıştırarak veya Databricks ambarınızdaki sorguları çalıştırarak sonuçları test edebilirsiniz. Örneğin, aşağıdaki örnek sorgulara bakın:

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

öğesini görev yapılandırmasında yapılandırılan şema adıyla değiştirin <schema> .

API örneği

Dbt görevlerini içeren işleri oluşturmak ve yönetmek için İşler API'sini de kullanabilirsiniz. Aşağıdaki örnek, tek bir dbt göreviyle bir iş oluşturur:

{
  "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"
          }
        }
      ]
    }
  ]
}

(Gelişmiş) Dbt'i özel profille çalıştırma

Dbt görevinizi bir SQL ambarı (önerilen) veya çok amaçlı işlemle çalıştırmak için, bağlanmak için ambarı veya Azure Databricks işlemini tanımlayan özel profiles.yml bir işlem kullanın. Bir ambar veya çok amaçlı işlem ile jaffle shop projesini çalıştıran bir iş oluşturmak için aşağıdaki adımları gerçekleştirin.

Not

Dbt görevinin hedefi olarak yalnızca sql ambarı veya çok amaçlı işlem kullanılabilir. dbt için hedef olarak iş işlemi kullanamazsınız.

  1. jaffle_shop deposunun çatalını oluşturun.

  2. Çatallanmış depoyu masaüstünüzde kopyalayın. Örneğin, aşağıdaki gibi bir komut çalıştırabilirsiniz:

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

    değerini GitHub tanıtıcınızla değiştirin <username> .

  3. Aşağıdaki içeriğe sahip dizinde jaffle_shop adlı profiles.yml yeni bir dosya oluşturun:

     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') }}"
    
    • değerini proje tabloları için bir şema adıyla değiştirin <schema> .
    • dbt görevinizi bir SQL ambarı ile çalıştırmak için değerini SQL ambarınızın Bağlan ion Details sekmesindeki Sunucu Ana Bilgisayar adı değeriyle değiştirin<http-host>. Dbt görevinizi çok amaçlı işlemle çalıştırmak için yerine Azure Databricks işleminizin Gelişmiş Seçenekler, JDBC/ODBC sekmesindeki Sunucu Ana Bilgisayar adı değeriyle değiştirin<http-host>.
    • dbt görevinizi bir SQL ambarı ile çalıştırmak için değerini SQL ambarınızın Bağlan ion Details sekmesindeki HTTP Yolu değeriyle değiştirin<http-path>. Dbt görevinizi çok amaçlı işlemle çalıştırmak için yerine <http-path> Azure Databricks işleminizin Gelişmiş Seçenekler, JDBC/ODBC sekmesindeki HTTP Yolu değeri yazın.

    Bu dosyayı kaynak denetiminde denetleyeceğinizden, dosyada erişim belirteçleri gibi gizli diziler belirtmezseniz. Bunun yerine, bu dosya kimlik bilgilerini çalışma zamanında dinamik olarak eklemek için dbt şablon oluşturma işlevini kullanır.

    Not

    Oluşturulan kimlik bilgileri çalıştırma süresi boyunca en fazla 30 gün geçerlidir ve tamamlandıktan sonra otomatik olarak iptal edilir.

  4. Bu dosyayı Git'e denetleyin ve çatallanmış deponuza gönderin. Örneğin, aşağıdaki gibi komutlar çalıştırabilirsiniz:

    git add profiles.yml
    git commit -m "adding profiles.yml for my Databricks job"
    git push
    
  5. Databricks kullanıcı arabiriminin kenar çubuğunda İş Akışları'na tıklayınİş Akışları Simgesi.

  6. dbt işini seçin ve Görevler sekmesine tıklayın.

  7. Kaynak bölümünde Düzenle'yetıklayın ve çatallı jaffle shop GitHub deponuzun ayrıntılarını girin.

    Çatallanmış proje depolarını yapılandırma

  8. SQL ambarında Yok (El ile) seçeneğini belirleyin.

  9. Profiller Dizini'nde, dosyayı içeren profiles.yml dizinin göreli yolunu girin. Depo kökünün varsayılanını kullanmak için yol değerini boş bırakın.

(Gelişmiş) İş akışında dbt Python modellerini kullanma

Not

Python modelleri için dbt desteği beta sürümündedir ve dbt 1.3 veya üzerini gerektirir.

dbt artık Databricks de dahil olmak üzere belirli veri ambarlarında Python modellerini destekliyor. dbt Python modelleriyle, SQL ile uygulanması zor dönüştürmeleri uygulamak için Python ekosisteminden araçları kullanabilirsiniz. Dbt Python modelinizle tek bir görevi çalıştırmak için bir Azure Databricks işi oluşturabilir veya dbt görevini birden çok görev içeren bir iş akışının parçası olarak ekleyebilirsiniz.

SQL ambarı kullanarak bir dbt görevinde Python modellerini çalıştıramazsınız. Dbt Python modellerini Azure Databricks ile kullanma hakkında daha fazla bilgi için dbt belgelerinde Belirli veri ambarları bölümüne bakın.

Hatalar ve sorun giderme

Profil dosyası yok hatası

Hata iletisi:

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

Olası nedenler:

Dosya profiles.yml belirtilen $PATH bulunamadı. dbt projenizin kök dizininde profiles.yml dosyasının bulunduğundan emin olun.