Installieren und Verwenden von dbt-watsonx-spark

Dieser Abschnitt beschreibt die Schritte zur Installation und Verwendung von dbt-watsonx-spark.

Vorbereitende Schritte

  • Abonnement für watsonx.data auf IBM Cloud.
  • Bereitstellung der nativen Spark-Engine in watsonx.data.
  • Installieren Sie DBT-Kern.

Vorgehensweise

Erstellen Sie einen Spark-Abfrageserver

Damit die Spark-Engine in das dbt-Tool integriert werden kann und als Abfrage-Engine funktioniert, müssen Sie einen Spark-Abfrageserver erstellen. Siehe Erstellen eines Spark-Abfrageservers.

Abrufen der Verbindungsdetails des Abfrageservers

Um die Profildatei in dbt tool zu konfigurieren, müssen Sie die Verbindungsdetails des Abfrageservers speichern. Siehe Abrufen der Verbindungsdetails des Abfrageservers.

Einrichten von profiles.yaml für das dbt-Werkzeug

  1. Rufen Sie die Datei profiles.yml auf, die sich in .dbt in Ihrem Home-Verzeichnis befindet.
  2. Fügen Sie die Verbindungsdetails ein, indem Sie die Parameterwerte ändern.
  3. Richten Sie die profiles.yml-Datei ein. Weitere Informationen finden Sie unter Konfiguration (Einrichten Ihres Profils).

Installieren Sie das dbt-Tool und überprüfen Sie die Verbindung

  1. Führen Sie den folgenden Befehl auf Ihrem System aus, um dbt-watsonx-spark zu installieren.

    pip install dbt-watsonx-spark
    
  2. Führen Sie den folgenden Befehl aus, um die dbt-Version zu überprüfen.

    dbt --version
    
  3. Wenn Sie ein dbt-Projekt erstellen möchten, geben Sie einen <project_name> an und führen Sie den folgenden Befehl aus.

    dbt init <project_name>
    
    1. Das System fordert Sie auf, die zu verwendende Datenbank auszuwählen. Wählen Sie watsonx_spark aus.
    2. Geben Sie watsonx.data Host, URI und Schema an.
  4. Um die Verbindung zu testen, führen Sie aus:

    cd <project_name>
    dbt debug
    
  5. Starten Sie die Seeds mit dem folgenden Befehl, um eine Tabelle zu erstellen und die Daten einzufügen.

    cd <project_name>
    dbt run
    
  6. In <project_name>/models finden Sie die Modelle, die die Operationen durchführen. Standardmäßig setzt dbt die Operationen als view. Sie können die Tabellen oder Ansichten mit einer der folgenden Methoden erstellen:

    • Innerhalb der Modelle spezifizieren (gilt nur für dieses Modell)

      {{ config(materialized='table/view') }}
      

      Wenn diese Anweisung mit (--) auskommentiert wird, verwendet dbt weiterhin die Konfiguration. Um sie zu deaktivieren, entfernen Sie sie ganz oder kommentieren sie im Jinja-Stil aus ({# … #}).

    • Angabe in dbt_project.yml (gilt für alle Modelle)

      models:
        <project_name>:
          <model_folders>:
            +materialized: table/view
      

      Zum Beispiel:

      models:
        demo:
          example:
            +materialized: table
      

      Innerhalb von Modellen werden nur Select-Anweisungen unterstützt.

    Das Zeichen Semikolon (;) ist in Modellen eingeschränkt.

  7. Führen Sie die Modelle aus, indem Sie den folgenden Befehl verwenden, um die Tabellen oder Ansichten zu erstellen.

    cd <project_name>
    dbt run
    

    Sie können auch die von Ihnen gewünschten Tests angeben:

    models:
      - name: <model_name>
        description: "some description"
        columns:
          - name: <col_name>
            description: "some description"
            data_tests:
              - <test_name_1>
              - <test_name_2>
    

    Zum Beispiel:

    models:
      - name: my_first_dbt_model
        description: "A starter dbt model"
        columns:
          - name: id
            description: "The primary key for this table"
            data_tests:
              - unique
              - not_null
    

    Konnektoren müssen Create Table as Select (CTAS) unterstützen, damit dbt-Läufe funktionieren.

  8. Um die Dokumente über die durchgeführten Aktionen zu erstellen, führen Sie den Befehl aus:

    cd <project_name>
    dbt docs generate
    dbt docs serve
    

    Standardmäßig läuft es auf localhost:8080. Um den Anschluss zu ändern, führen Sie aus:

    dbt docs serve –-port <port_number>