Dbt-transzformációk használata Azure Databricks-feladatban

A dbt Core projekteket egy Azure Databricks feladatban feladatként futtathatja. A dbt Core-projekt feladatfeladatként való futtatásával a következő Azure Databricks-feladatok funkcióit használhatja:

  • Automatizálhatja a dbt-feladatokat, és ütemezheti a dbt-tevékenységeket tartalmazó munkafolyamatokat.
  • Monitorozza a dbt-átalakításokat, és küldjön értesítéseket az átalakítások állapotáról.
  • A dbt-projekt belefoglalása munkafolyamatba más feladatokkal. A munkafolyamat például betöltheti az adatokat az Automatikus betöltővel, átalakíthatja az adatokat a dbt használatával, és egy jegyzetfüzet-feladattal elemezheti az adatokat.
  • Az összetevők automatikus archiválása feladatfuttatásokból, beleértve a naplókat, az eredményeket, a jegyzékeket és a konfigurációt.

A dbt Core-ról további információt a dbt dokumentációjában talál.

Fejlesztési és éles munkafolyamat

A Databricks azt javasolja, hogy a dbt-projekteket egy Databricks SQL Warehouse-ra fejlesztse. A Databricks SQL warehouse használatával tesztelheti a dbt által generált SQL-t, és a dbt által generált lekérdezések hibakeresésére használhatja az SQL warehouse lekérdezési előzményeket.

A dbt-átalakítások éles környezetben való futtatásához a Databricks azt javasolja, hogy használja a dbt-feladatot egy Databricks-feladatban. Alapértelmezés szerint a dbt-feladat az Azure Databricks compute és a dbt által létrehozott SQL használatával futtatja a dbt Python-folyamatot a kiválasztott SQL-raktáron.

Adatbázis-átalakításokat futtathat kiszolgáló nélküli SQL-raktáron, pro SQL Warehouse-on, Azure Databricks-számításon vagy bármely más , dbt által támogatott raktáron. Ez a cikk az első két lehetőséget ismerteti példákkal.

Ha a munkaterület unitykatalógus-kompatibilis, és a kiszolgáló nélküli munkafolyamatok engedélyezve van, a feladat alapértelmezés szerint kiszolgáló nélküli számításon fut.

Feljegyzés

A dbt-modellek SQL-raktáron való fejlesztése és éles környezetben való futtatása az Azure Databricks-számításban a teljesítmény és az SQL nyelvi támogatásának apró eltéréseihez vezethet. A Databricks ugyanazt a Databricks Runtime-verziót javasolja a számításhoz és az SQL Warehouse-hoz.

Követelmények

  • Ha tudni szeretné, hogyan hozhat létre és futtathat dbt-projekteket a fejlesztési környezetben a dbt Core és a dbt-databricks csomag használatával, tekintse meg a dbt Core-hoz való Csatlakozás.

    A Databricks a dbt-databricks csomagot javasolja, nem a dbt-spark csomagot. A dbt-databricks csomag a dbt-spark egy Databricksre optimalizált elágazása.

  • Ha dbt-projekteket szeretne használni egy Azure Databricks-feladatban, be kell állítania a Git-integrációt a Databricks Git-mappákkal. Dbt-projektet nem futtathat a DBFS-ből.

  • Engedélyezve kell lennie a kiszolgáló nélküli vagy a pro SQL-tárolóknak .

  • Rendelkeznie kell a Databricks SQL-jogosultságával.

Az első dbt-feladat létrehozása és futtatása

Az alábbi példa a jaffle_shop projektet használja, amely egy példaprojekt, amely a dbt alapfogalmait mutatja be. A jaffle shop projektet futtató feladat létrehozásához hajtsa végre az alábbi lépéseket.

  1. Nyissa meg az Azure Databricks kezdőlapját, és tegye az alábbiak egyikét:

    • Kattintson Feladatok ikona Munkafolyamatok elemre az oldalsávon, és kattintson a gombra Feladat létrehozása gomb.
    • Az oldalsávon kattintson az Új gombraÚj ikon, és válassza a Feladat lehetőséget.
  2. A Feladatok lap Tevékenység szövegmezőjében cserélje le a Feladat neve hozzáadása... elemet a feladat nevére.

  3. A Tevékenység név mezőbe írja be a tevékenység nevét.

  4. A Típus mezőben válassza ki a dbt tevékenységtípust .

    Adatbázis-feladat hozzáadása

  5. A Forrás legördülő menüben kiválaszthatja a Munkaterület lehetőséget, ha egy Azure Databricks-munkaterület mappájában vagy Git-szolgáltatóban található dbt-projektet szeretne használni egy távoli Git-adattárban található projekthez. Mivel ez a példa a Git-adattárban található jaffle shop projektet használja, válassza a Git-szolgáltatót, kattintson a Szerkesztés gombra, és adja meg a GitHub-adattár részleteit.

    A DBT-projekt adattárának konfigurálása

    • A Git-adattár URL-címében adja meg a jaffle shop projekt URL-címét.
    • A Git-referencia (ág/ címke/ véglegesítés) mezőbe írja be a következőt main: Címkét vagy SHA-t is használhat.
  6. Kattintson a Megerősítés gombra.

  7. A dbt-parancsok szövegmezőiben adja meg a futtatandó dbt-parancsokat (deps, seed és run). Minden parancsnak előtaggal kell rendelkeznie dbt. A parancsok a megadott sorrendben futnak.

    Dbt-parancsok konfigurálása

  8. Az SQL Warehouse-ban válasszon ki egy SQL-raktárt a dbt által létrehozott SQL futtatásához. Az SQL Warehouse legördülő menüben csak kiszolgáló nélküli és profi SQL-raktárak láthatók.

  9. (Nem kötelező) Megadhatja a feladat kimenetéhez tartozó sémát. Alapértelmezés szerint a rendszer a sémát default használja.

  10. (Nem kötelező) Ha módosítani szeretné a dbt Core-t futtató számítási konfigurációt, kattintson a DBT CLI-számítás elemre.

  11. (Nem kötelező) A feladathoz megadhat egy dbt-databricks-verziót. Ha például a dbt-feladatot egy adott fejlesztési és éles verzióra szeretné rögzíteni:

    • A Függő kódtárak csoportban kattintson Törlés ikon a dbt-databricks aktuális verziója mellett.
    • Kattintson a Hozzáadás gombra.
    • A Függő kódtár hozzáadása párbeszédpanelen válassza a PyPI lehetőséget, és írja be a dbt-package verziót a Csomag szövegmezőbe (példáuldbt-databricks==1.6.0).
    • Kattintson a Hozzáadás gombra.

    A dbt-databricks verzió konfigurálása

    Feljegyzés

    A Databricks azt javasolja, hogy rögzítse a dbt-feladatokat a dbt-databricks csomag egy adott verziójára, hogy a fejlesztéshez és az éles futtatáshoz ugyanazt a verziót használhassa. A Databricks a dbt-databricks csomag 1.6.0-s vagy újabb verzióját javasolja.

  12. Kattintson a Létrehozás gombra.

  13. A feladat futtatásához kattintson a gombra Futtatás gomb.

A dbt-feladat eredményeinek megtekintése

Ha a feladat befejeződött, tesztelheti az eredményeket úgy, hogy SQL-lekérdezéseket futtat egy jegyzetfüzetből, vagy lekérdezéseket futtat a Databricks-raktárban. Lásd például a következő minta lekérdezéseket:

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

Cserélje le <schema> a feladatkonfigurációban konfigurált sémanévre.

API-példa

A Jobs API-val adatbázisfeladatokat tartalmazó feladatokat is létrehozhat és kezelhet. Az alábbi példa egy feladatot hoz létre egyetlen dbt-tevékenységgel:

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

(Speciális) Adatbázis futtatása egyéni profillal

Ha a dbt-feladatot SQL-raktárral (ajánlott) vagy teljes célú számítással szeretné futtatni, használjon egy egyéni profiles.yml definíciót a raktár vagy az Azure Databricks számításhoz a csatlakozáshoz. Ha olyan feladatot szeretne létrehozni, amely a jaffle shop projektet egy raktárral vagy egy teljes célú számítással futtatja, hajtsa végre az alábbi lépéseket.

Feljegyzés

A dbt-feladatok célként csak SQL-raktár vagy teljes célú számítás használható. A feladatszámítás nem használható célként a dbt-hez.

  1. Hozzon létre egy elágazást a jaffle_shop adattárból.

  2. Klónozza az elágazott adattárat az asztalra. Futtathat például a következőhöz hasonló parancsot:

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

    Cserélje le <username> a GitHub-leírót.

  3. Hozzon létre egy új, a jaffle_shop könyvtárban hívott profiles.yml fájlt a következő tartalommal:

     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') }}"
    

    Nem ad meg titkos kulcsokat, például hozzáférési jogkivonatokat a fájlban, mert a fájlt a forrásvezérlőbe fogja ellenőrizni. Ehelyett ez a fájl a dbt templating funkcióval dinamikusan szúr be hitelesítő adatokat futásidőben.

    Feljegyzés

    A létrehozott hitelesítő adatok a futtatás időtartamára érvényesek, legfeljebb 30 napig, és a befejezés után automatikusan vissza lesz vonva.

  4. Ellenőrizze ezt a fájlt a Gitben, és küldje el az elágaztatott adattárba. Futtathat például a következőhöz hasonló parancsokat:

    git add profiles.yml
    git commit -m "adding profiles.yml for my Databricks job"
    git push
    
  5. Kattintson Feladatok ikona Databricks felhasználói felület oldalsávjának Munkafolyamatok elemére.

  6. Válassza ki a dbt-feladatot, és kattintson a Feladatok fülre.

  7. A Forrás területen kattintson a Szerkesztés gombra, és adja meg az elágaztatott jaffle shop GitHub-adattár részleteit.

    Elágazott projekt adattárának konfigurálása

  8. Az SQL Warehouse-ban válassza a Nincs (Manuális) lehetőséget.

  9. A Profilok könyvtárban adja meg a fájlt tartalmazó profiles.yml könyvtár relatív elérési útját. Hagyja üresen az elérési út értékét az adattárgyökér alapértelmezett értékének használatához.

(Speciális) Dbt Python-modellek használata munkafolyamatban

Feljegyzés

a Python modellek dbt támogatása béta verzióban van, és a dbt 1.3 vagy nagyobb verziószámot igényel.

A dbt mostantól támogatja a Python-modelleket adott adattárházakban, beleértve a Databrickset is. A Dbt Python-modellekkel a Python-ökoszisztémából származó eszközökkel olyan átalakításokat valósíthat meg, amelyeket nehéz megvalósítani az SQL-lel. Létrehozhat egy Azure Databricks-feladatot, hogy egyetlen feladatot futtasson a dbt Python-modellel, vagy a dbt-feladatot egy több feladatot tartalmazó munkafolyamat részeként is felveheti.

Nem futtathat Python-modelleket egy DBT-feladatban SQL Warehouse használatával. A dbt Python-modellek Azure Databricks-beli használatáról további információt a dbt dokumentációjában található konkrét adattárházakban talál.

Hibák és hibaelhárítás

A profilfájl nem létezik hiba

Hibaüzenet:

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

Lehetséges okok:

A profiles.yml fájl nem található a megadott $PATH. Győződjön meg róla, hogy a dbt projekt gyökere tartalmazza a profiles.yml fájlt.