Połączenie do dbt Core

Uwaga

W tym artykule opisano dbt Core, wersję bazy danych dbt dla lokalnej maszyny dewelopera, która współdziała z magazynami SQL usługi Databricks i klastrami usługi Azure Databricks w obszarach roboczych usługi Azure Databricks. Aby zamiast tego użyć hostowanej wersji bazy danych (o nazwie dbt Cloud) lub użyć Połączenie partnera, aby szybko utworzyć magazyn SQL w obszarze roboczym, a następnie połączyć go z usługą dbt Cloud, zobacz Połączenie z usługą dbt Cloud.

dbt (narzędzie do tworzenia danych) to środowisko programistyczne, które umożliwia analitykom danych i inżynierom danych przekształcanie danych przez proste pisanie instrukcji. Dbt obsługuje przekształcanie tych instrukcji select w tabele i widoki. Dbt kompiluje kod w nieprzetworzonym języku SQL, a następnie uruchamia ten kod w określonej bazie danych w usłudze Azure Databricks. Usługa dbt obsługuje wspólne wzorce kodowania i najlepsze rozwiązania, takie jak kontrola wersji, dokumentacja, modułowość i nie tylko.

dbt nie wyodrębnia ani nie ładuje danych. Dbt koncentruje się tylko na kroku transformacji przy użyciu architektury "transformacji po załadowaniu". Dbt zakłada, że masz już kopię danych w bazie danych.

Ten artykuł koncentruje się na korzystaniu z bazy danych dbt Core. Dbt Core umożliwia pisanie kodu dbt w edytorze tekstów lub środowisku IDE wybranego na lokalnym komputerze deweloperskim, a następnie uruchamianie dbt z wiersza polecenia. Dbt Core zawiera interfejs wiersza polecenia dbt. Interfejs wiersza polecenia dbt jest bezpłatny do użycia i open source.

Dostępna jest również hostowana wersja bazy danych o nazwie dbt Cloud. Usługa dbt Cloud jest wyposażona w gotową obsługę planowania zadań, ciągłej integracji/ciągłego wdrażania, obsługi dokumentacji, monitorowania i alertów oraz zintegrowanego środowiska projektowego (IDE). Aby uzyskać więcej informacji, zobacz Połączenie do dbt Cloud. Plan dbt Cloud Developer zapewnia jedno bezpłatne miejsce dla deweloperów; Dostępne są również plany płatne dla zespołu i przedsiębiorstwa. Aby uzyskać więcej informacji, zobacz dbt Pricing (Cennik dbt) w witrynie internetowej dbt.

Ponieważ dbt Core i dbt Cloud mogą używać hostowanych repozytoriów git (na przykład w usłudze GitHub, GitLab lub BitBucket), możesz użyć narzędzia dbt Core, aby utworzyć projekt dbt, a następnie udostępnić go użytkownikom usługi dbt Cloud. Aby uzyskać więcej informacji, zobacz Tworzenie projektu dbt i Używanie istniejącego projektu w witrynie internetowej dbt.

Aby uzyskać ogólne omówienie bazy danych, obejrzyj następujący film wideo w serwisie YouTube (26 minut).

Wymagania

Przed zainstalowaniem bazy danych dbt Core należy zainstalować następujące elementy na lokalnej maszynie dewelopera:

  • Środowisko Python w wersji 3.7 lub nowszej
  • Narzędzie do tworzenia środowisk wirtualnych języka Python (takich jak pipenv)

Do uwierzytelnienia potrzebne są również następujące elementy:

  • (Zalecane) baza danych dbt Core włączona jako aplikacja OAuth na twoim koncie. Ta usługa jest domyślnie włączona.

  • Osobisty token dostępu

    Uwaga

    Najlepszym rozwiązaniem w zakresie zabezpieczeń podczas uwierzytelniania za pomocą zautomatyzowanych narzędzi, systemów, skryptów i aplikacji usługa Databricks zaleca używanie tokenów OAuth.

    Jeśli używasz uwierzytelniania osobistego tokenu dostępu, usługa Databricks zaleca używanie osobistych tokenów dostępu należących do jednostek usługi zamiast użytkowników obszaru roboczego. Aby utworzyć tokeny dla jednostek usługi, zobacz Zarządzanie tokenami dla jednostki usługi.

Krok 1. Tworzenie i aktywowanie środowiska wirtualnego języka Python

W tym kroku utworzysz pipenvśrodowisko wirtualne języka Python. Zalecamy używanie środowiska wirtualnego języka Python, ponieważ izoluje wersje pakietów i zależności kodu do tego konkretnego środowiska, niezależnie od wersji pakietów i zależności kodu w innych środowiskach. Pomaga to zmniejszyć nieoczekiwane niezgodności wersji pakietu i kolizje zależności kodu.

  1. W terminalu przejdź do pustego katalogu, tworząc go najpierw w razie potrzeby. Ta procedura tworzy pusty katalog o nazwie dbt_demo w katalogu głównym katalogu macierzystego użytkownika.

    Unix, linux, macos

    mkdir ~/dbt_demo
    cd ~/dbt_demo
    

    Windows

    mkdir %USERPROFILE%\dbt_demo
    cd %USERPROFILE%\dbt_demo
    
  2. W tym pustym katalogu utwórz plik o nazwie Pipfile z następującą zawartością. Ten plik Pipfile instruuje pipenv używanie języka Python w wersji 3.8.6. Jeśli używasz innej wersji, zastąp 3.8.6 ciąg numerem wersji.

    [[source]]
    url = "https://pypi.org/simple"
    verify_ssl = true
    name = "pypi"
    
    [packages]
    dbt-databricks = "*"
    
    [requires]
    python_version = "3.8.6"
    

    Uwaga

    Poprzedni wiersz dbt-databricks = "*" instruuje pipenv użycie najnowszej dbt-databricks wersji pakietu. W scenariuszach produkcyjnych należy zastąpić * określoną wersją pakietu, którego chcesz użyć. Usługa Databricks zaleca wersję 1.6.0 lub nowszą pakietu dbt-databricks. Zobacz dbt-databricks Release history (Historia wydania dbt-databricks) w witrynie internetowej indeksu pakietów języka Python (PyPI).

  3. Utwórz środowisko wirtualne języka Python w tym katalogu, uruchamiając pipenv polecenie i określając wersję języka Python do użycia. To polecenie określa język Python w wersji 3.8.6. Jeśli używasz innej wersji, zastąp 3.8.6 ciąg numerem wersji:

    pipenv --python 3.8.6
    
  4. Zainstaluj kartę dbt Databricks, uruchamiając pipenv polecenie z opcją install . Spowoduje to zainstalowanie pakietów w pliku Pipfile, który zawiera pakiet adaptera dbt Databricks, dbt-databricksz PyPI. Pakiet adaptera dbt Databricks automatycznie instaluje dbt Core i inne zależności.

    Ważne

    Jeśli lokalna maszyna deweloperowa korzysta z dowolnego z następujących systemów operacyjnych, najpierw należy wykonać dodatkowe kroki: CentOS, MacOS, Ubuntu, Debian i Windows. Zobacz sekcję "Czy mój system operacyjny ma wymagania wstępne" w temacie Używanie narzędzia pip do instalowania bazy danych w witrynie internetowej dbt Labs.

    pipenv install
    
  5. Aktywuj to środowisko wirtualne, uruchamiając polecenie pipenv shell. Aby potwierdzić aktywację, terminal zostanie wyświetlony (dbt_demo) przed monitem. Środowisko wirtualne rozpoczyna korzystanie z określonej wersji języka Python i izoluje wszystkie wersje pakietów i zależności kodu w tym nowym środowisku.

    pipenv shell
    

    Uwaga

    Aby dezaktywować to środowisko wirtualne, uruchom polecenie exit. (dbt_demo) znika przed monitem. Jeśli uruchomiono python --version środowisko wirtualne lub pip list z tym środowiskiem wirtualnym jest dezaktywowane, może zostać wyświetlona inna wersja języka Python, inna lista dostępnych pakietów lub wersji pakietów lub obu tych wersji.

  6. Upewnij się, że środowisko wirtualne uruchamia oczekiwaną wersję języka Python, uruchamiając python polecenie z opcją --version .

    python --version
    

    Jeśli zostanie wyświetlona nieoczekiwana wersja języka Python, upewnij się, że środowisko wirtualne zostało aktywowane, uruchamiając polecenie pipenv shell.

  7. Upewnij się, że środowisko wirtualne korzysta z oczekiwanych wersji dbt i karty dbt Databricks, uruchamiając dbt polecenie z opcją --version .

    dbt --version
    

    Jeśli zostanie wyświetlona nieoczekiwana wersja dbt lub karta dbt Databricks, upewnij się, że aktywowano środowisko wirtualne, uruchamiając polecenie pipenv shell. Jeśli nadal jest wyświetlana nieoczekiwana wersja, spróbuj ponownie zainstalować kartę dbt lub dbt Databricks po aktywowaniu środowiska wirtualnego.

Krok 2. Tworzenie projektu dbt i określanie i testowanie ustawień połączenia

W tym kroku utworzysz projekt dbt, który jest kolekcją powiązanych katalogów i plików, które są wymagane do korzystania z bazy danych. Następnie skonfigurujesz profile połączeń, które zawierają ustawienia połączenia z klastrem usługi Azure Databricks, usługą SQL Warehouse lub obydwoma. Aby zwiększyć bezpieczeństwo, projekty dbt i profile są domyślnie przechowywane w oddzielnych lokalizacjach.

Napiwek

Możesz nawiązać połączenie z istniejącym klastrem lub usługą SQL Warehouse albo utworzyć nowy.

  • Istniejący klaster lub magazyn SQL może być wydajny dla wielu projektów dbt, do używania bazy danych w zespole lub w przypadku przypadków użycia programowania.
  • Nowy klaster lub usługa SQL Warehouse umożliwia uruchamianie pojedynczego projektu dbt w izolacji w przypadku przypadków użycia w środowisku produkcyjnym, a także wykorzystanie automatycznego kończenia, aby zmniejszyć koszty, gdy ten projekt dbt nie jest uruchomiony.

Użyj usługi Azure Databricks, aby utworzyć nowy klaster lub usługę SQL Warehouse, a następnie odwołać się do nowo utworzonego klastra lub istniejącego klastra lub magazynu SQL Warehouse z profilu dbt.

  1. Po aktywowaniu środowiska wirtualnego uruchom polecenie dbt init z nazwą projektu. Ta procedura tworzy projekt o nazwie my_dbt_demo.

    dbt init my_dbt_demo
    
  2. Po wyświetleniu monitu o wybranie elementu databricks lub spark bazy danych wprowadź liczbę odpowiadającą databricks.

  3. Po wyświetleniu monitu host o wartość wykonaj następujące czynności:

    • W przypadku klastra wprowadź wartość Nazwa hosta serwera z karty Opcje zaawansowane JDBC/ODBC dla klastra usługi Azure Databricks.
    • W przypadku usługi SQL Warehouse wprowadź wartość Nazwa hosta serwera na karcie Szczegóły Połączenie ion dla usługi SQL Warehouse.
  4. Po wyświetleniu monitu http_path o wartość wykonaj następujące czynności:

    • W przypadku klastra wprowadź wartość Ścieżka HTTP z karty Opcje zaawansowane JDBC/ODBC dla klastra usługi Azure Databricks.
    • W przypadku usługi SQL Warehouse wprowadź wartość Ścieżka HTTP na karcie Szczegóły Połączenie ion dla usługi SQL Warehouse.
  5. Aby wybrać typ uwierzytelniania, wprowadź liczbę odpowiadającą use oauth (zalecane) lub use access token.

  6. Jeśli wybrano use access token typ uwierzytelniania, wprowadź wartość osobistego tokenu dostępu usługi Azure Databricks.

    Uwaga

    Najlepszym rozwiązaniem w zakresie zabezpieczeń w przypadku uwierzytelniania za pomocą zautomatyzowanych narzędzi, systemów, skryptów i aplikacji usługa Databricks zaleca używanie osobistych tokenów dostępu należących do jednostek usługi zamiast użytkowników obszaru roboczego. Aby utworzyć tokeny dla jednostek usługi, zobacz Zarządzanie tokenami dla jednostki usługi.

  7. Po wyświetleniu monitu desired Unity Catalog option o wartość wprowadź liczbę odpowiadającą use Unity Catalog wartości lub not use Unity Catalog.

  8. Jeśli wybrano opcję używania wykazu aparatu Unity, wprowadź żądaną wartość po catalog wyświetleniu monitu.

  9. Wprowadź żądane wartości i schemathreads po wyświetleniu monitu.

  10. dbt zapisuje wpisy w profiles.yml pliku. Lokalizacja tego pliku znajduje się na liście danych wyjściowych dbt init polecenia . Tę lokalizację można również wyświetlić później, uruchamiając dbt debug --config-dir polecenie . Możesz teraz otworzyć ten plik, aby sprawdzić i zweryfikować jego zawartość.

    Jeśli wybrano use oauth typ uwierzytelniania, dodaj profil uwierzytelniania maszyny do maszyny (M2M) lub użytkownika-maszyny (U2M) do usługi profiles.yml.

    Przykłady można znaleźć w temacie Configure Azure Databricks sign-on from dbt Core with Microsoft Entra ID (Konfigurowanie logowania usługi Azure Databricks z bazy danych dbt Core przy użyciu identyfikatora Entra firmy Microsoft).

    Usługa Databricks nie zaleca bezpośredniego określania wpisów profiles.yml tajnych. Zamiast tego ustaw identyfikator klienta i klucz tajny klienta jako zmienne środowiskowe.

  11. Upewnij się, że szczegóły połączenia są poprawne, przechodząc do my_dbt_demo katalogu i uruchamiając dbt debug polecenie.

    Jeśli wybrano use oauth typ uwierzytelniania, zostanie wyświetlony monit o zalogowanie się za pomocą dostawcy tożsamości.

    Ważne

    Przed rozpoczęciem sprawdź, czy klaster lub usługa SQL Warehouse jest uruchomiona.

    Powinny zostać wyświetlone dane wyjściowe podobne do następujących:

    cd my_dbt_demo
    dbt debug
    
    ...
    Configuration:
      profiles.yml file [OK found and valid]
      dbt_project.yml file [OK found and valid]
    
    Required dependencies:
      - git [OK found]
    
    Connection:
      ...
      Connection test: OK connection ok
    

Następne kroki

Dodatkowe zasoby