Udostępnij za pośrednictwem


Używanie transformacji dbt w zadaniu usługi Azure Databricks

Projekty dbt Core można uruchamiać jako zadanie w zadaniu usługi Azure Databricks. Uruchamiając projekt dbt Core jako zadanie zadania, możesz skorzystać z następujących funkcji zadań usługi Azure Databricks:

  • Automatyzowanie zadań dbt i planowanie przepływów pracy obejmujących zadania dbt.
  • Monitoruj przekształcenia dbt i wysyłaj powiadomienia o stanie przekształceń.
  • Uwzględnij projekt dbt w przepływie pracy z innymi zadaniami. Na przykład przepływ pracy może pozyskiwać dane za pomocą modułu automatycznego ładowania, przekształcać dane za pomocą dbt i analizować dane za pomocą zadania notesu.
  • Automatyczne archiwizowanie artefaktów z przebiegów zadań, w tym dzienników, wyników, manifestów i konfiguracji.

Aby dowiedzieć się więcej na temat bazy danych dbt Core, zobacz dokumentację bazy danych.

Przepływ pracy tworzenia i produkcji

Usługa Databricks zaleca opracowywanie projektów dbt w usłudze Databricks SQL Warehouse. Korzystając z usługi Databricks SQL Warehouse, możesz przetestować bazę danych SQL wygenerowaną przez bazę danych i użyć historii zapytań usługi SQL Warehouse do debugowania zapytań generowanych przez bazę danych.

Aby uruchomić przekształcenia dbt w środowisku produkcyjnym, usługa Databricks zaleca użycie zadania dbt w zadaniu usługi Databricks. Domyślnie zadanie dbt uruchamia proces dbt python przy użyciu obliczeń usługi Azure Databricks i dbt wygenerowany sql względem wybranego magazynu SQL.

Przekształcenia dbt można uruchamiać w bezserwerowym magazynie SQL Warehouse lub pro SQL Warehouse, obliczeniach usługi Azure Databricks lub innym magazynie obsługiwanym przez bazę danych. W tym artykule omówiono dwie pierwsze opcje z przykładami.

Jeśli obszar roboczy jest włączony w wykazie aparatu Unity, a zadania bezserwerowe są domyślnie włączone, zadanie jest uruchamiane na obliczeniach bezserwerowych.

Uwaga

Tworzenie modeli dbt w usłudze SQL Warehouse i uruchamianie ich w środowisku produkcyjnym w obliczeniach usługi Azure Databricks może prowadzić do subtelnych różnic w wydajności i obsłudze języka SQL. Usługa Databricks zaleca używanie tej samej wersji środowiska Databricks Runtime dla obliczeń i magazynu SQL.

Wymagania

Tworzenie i uruchamianie pierwszego zadania dbt

W poniższym przykładzie użyto projektu jaffle_shop , przykładowego projektu, który demonstruje podstawowe pojęcia dbt. Aby utworzyć zadanie uruchamiające projekt sklepu jaffle, wykonaj następujące kroki.

  1. Przejdź do strony docelowej usługi Azure Databricks i wykonaj jedną z następujących czynności:

    • Kliknij pozycję Ikona przepływów pracyPrzepływy pracy na pasku bocznym i kliknij pozycję .Przycisk Utwórz zadanie
    • Na pasku bocznym kliknij pozycję Nowa ikona Nowy i wybierz pozycję Zadanie.
  2. W polu tekstowym zadania na karcie Zadania zastąp ciąg Dodaj nazwę zadania... nazwą zadania.

  3. W polu Nazwa zadania wprowadź nazwę zadania.

  4. W polu Typ wybierz typ zadania dbt .

    Dodawanie zadania dbt

  5. W menu rozwijanym Źródło możesz wybrać pozycję Obszar roboczy, aby użyć projektu dbt znajdującego się w folderze obszaru roboczego usługi Azure Databricks lub dostawcy git dla projektu znajdującego się w zdalnym repozytorium Git. Ponieważ w tym przykładzie użyto projektu sklepu jaffle znajdującego się w repozytorium Git, wybierz pozycję Dostawca Git, kliknij pozycję Edytuj i wprowadź szczegóły repozytorium GitHub sklepu jaffle.

    Konfigurowanie repozytorium projektu dbt

    • W polu Adres URL repozytorium Git wprowadź adres URL projektu sklepu jaffle.
    • W dokumentacji git (gałąź / tag / zatwierdzenie), wprowadź .main Możesz również użyć tagu lub algorytmu SHA.
  6. Kliknij przycisk Potwierdź.

  7. W polach tekstowych poleceń dbt określ polecenia dbt do uruchomienia (deps, seed i run). Należy prefiksować każde polecenie za pomocą dbtpolecenia . Polecenia są uruchamiane w określonej kolejności.

    Konfigurowanie poleceń dbt

  8. W usłudze SQL Warehouse wybierz usługę SQL Warehouse, aby uruchomić bazę danych SQL wygenerowaną przez bazę danych. W menu rozwijanym usługi SQL Warehouse są wyświetlane tylko bezserwerowe i pro magazyny SQL.

  9. (Opcjonalnie) Możesz określić schemat danych wyjściowych zadania. Domyślnie jest używany schemat default .

  10. (Opcjonalnie) Jeśli chcesz zmienić konfigurację obliczeniową z systemem dbt Core, kliknij pozycję dbt CLI compute.

  11. (Opcjonalnie) Dla zadania można określić wersję dbt-databricks. Aby na przykład przypiąć zadanie dbt do określonej wersji programowania i produkcji:

    • W obszarze Biblioteki zależne kliknij obok Usuń ikonę bieżącej wersji dbt-databricks.
    • Kliknij przycisk Dodaj.
    • W oknie dialogowym Dodawanie biblioteki zależnej wybierz pozycję PyPI i wprowadź wersję dbt-package w polu tekstowym Pakiet (na przykład dbt-databricks==1.6.0).
    • Kliknij przycisk Dodaj.

    Konfigurowanie wersji dbt-databricks

    Uwaga

    Usługa Databricks zaleca przypinanie zadań dbt do określonej wersji pakietu dbt-databricks, aby upewnić się, że ta sama wersja jest używana do uruchamiania programowania i produkcji. Usługa Databricks zaleca wersję 1.6.0 lub nowszą pakietu dbt-databricks.

  12. Kliknij pozycję Utwórz.

  13. Aby uruchomić zadanie teraz, kliknij pozycję Przycisk Uruchom teraz.

Wyświetlanie wyników zadania zadania dbt

Po zakończeniu zadania możesz przetestować wyniki, uruchamiając zapytania SQL z notesu lub uruchamiając zapytania w magazynie usługi Databricks. Zobacz na przykład następujące przykładowe zapytania:

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

Zastąp <schema> ciąg nazwą schematu skonfigurowaną w konfiguracji zadania.

Przykład interfejsu API

Interfejs API zadań umożliwia również tworzenie zadań obejmujących zadania dbt i zarządzanie nimi. Poniższy przykład tworzy zadanie z pojedynczym zadaniem 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"
          }
        }
      ]
    }
  ]
}

(Zaawansowane) Uruchamianie bazy danych z profilem niestandardowym

Aby uruchomić zadanie dbt za pomocą usługi SQL Warehouse (zalecane) lub obliczeniowego ogólnego przeznaczenia, użyj niestandardowego profiles.yml definiującego magazyn lub zasoby obliczeniowe usługi Azure Databricks, aby nawiązać połączenie. Aby utworzyć zadanie uruchamiające projekt sklepu jaffle z magazynem lub obliczeniami ogólnego przeznaczenia, wykonaj następujące kroki.

Uwaga

Jako obiekt docelowy zadania dbt można używać tylko usługi SQL Warehouse lub obliczeniowego ogólnego przeznaczenia. Nie można używać obliczeń zadań jako elementu docelowego dla dbt.

  1. Utwórz rozwidlenie repozytorium jaffle_shop .

  2. Sklonuj rozwidlenie repozytorium na pulpicie. Można na przykład uruchomić polecenie podobne do następującego:

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

    Zastąp <username> ciąg uchwytem usługi GitHub.

  3. Utwórz nowy plik o nazwie profiles.yml w jaffle_shop katalogu z następującą zawartością:

     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') }}"
    
    • Zastąp <schema> ciąg nazwą schematu tabel projektu.
    • Aby uruchomić zadanie dbt z usługą SQL Warehouse, zastąp <http-host> ciąg wartością Nazwa hosta serwera na karcie Szczegóły połączenia dla usługi SQL Warehouse. Aby uruchomić zadanie dbt z obliczeniami all-purpose, zastąp <http-host> wartość Server Hostname wartością Advanced Options (Opcje zaawansowane), kartą JDBC/ODBC dla obliczeń usługi Azure Databricks.
    • Aby uruchomić zadanie dbt z usługą SQL Warehouse, zastąp <http-path> wartość ścieżką HTTP na karcie Szczegóły połączenia dla usługi SQL Warehouse. Aby uruchomić zadanie dbt z obliczeniami wszystkich celów, zastąp <http-path> wartość ścieżki HTTP z karty Opcje zaawansowane JDBC/ODBC dla obliczeń usługi Azure Databricks.

    Nie określasz wpisów tajnych, takich jak tokeny dostępu, w pliku, ponieważ ten plik zostanie zaewidencjonowyny w kontroli źródła. Zamiast tego ten plik używa funkcji tworzenia szablonów dbt do dynamicznego wstawiania poświadczeń w czasie wykonywania.

    Uwaga

    Wygenerowane poświadczenia są prawidłowe przez czas trwania przebiegu do maksymalnie 30 dni i są automatycznie odwołyne po zakończeniu.

  4. Sprawdź ten plik w usłudze Git i wypchnij go do rozwidlenia repozytorium. Można na przykład uruchomić polecenia podobne do następujących:

    git add profiles.yml
    git commit -m "adding profiles.yml for my Databricks job"
    git push
    
  5. Kliknij pozycję Ikona przepływów pracy Przepływy pracy na pasku bocznym interfejsu użytkownika usługi Databricks.

  6. Wybierz zadanie dbt i kliknij kartę Zadania .

  7. W obszarze Źródło kliknij pozycję Edytuj i wprowadź szczegóły rozwidlenia sklepu jaffle w witrynie GitHub.

    Konfigurowanie rozwidlenia repozytorium projektu

  8. W usłudze SQL Warehouse wybierz pozycję Brak (ręczne).

  9. W katalogu profiles wprowadź ścieżkę względną do katalogu zawierającego profiles.yml plik. Pozostaw wartość ścieżki pustą, aby użyć wartości domyślnej katalogu głównego repozytorium.

(Zaawansowane) Używanie modeli dbt Python w przepływie pracy

Uwaga

Obsługa dbt dla modeli języka Python jest w wersji beta i wymaga bazy danych dbt 1.3 lub nowszej.

Usługa dbt obsługuje teraz modele języka Python w określonych magazynach danych, w tym w usłudze Databricks. Za pomocą modeli języka Python dbt można używać narzędzi z ekosystemu języka Python do implementowania przekształceń, które są trudne do zaimplementowania przy użyciu języka SQL. Możesz utworzyć zadanie usługi Azure Databricks w celu uruchomienia pojedynczego zadania z modelem dbt Python lub dołączyć zadanie dbt jako część przepływu pracy obejmującego wiele zadań.

Nie można uruchamiać modeli języka Python w zadaniu dbt przy użyciu usługi SQL Warehouse. Aby uzyskać więcej informacji na temat używania modeli dbt Python w usłudze Azure Databricks, zobacz Określone magazyny danych w dokumentacji bazy danych.

Błędy i rozwiązywanie problemów

Plik profilu nie istnieje błąd

Komunikat o błędzie:

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

Możliwe przyczyny:

Nie profiles.yml można odnaleźć pliku w określonym $PATH. Upewnij się, że katalog główny projektu dbt zawiera plik profiles.yml.