Del via


Transformer data ved hjelp av dbt

Merk

Apache Airflow-jobben drives av Apache Airflow.

dbt(Data Build Tool) er et kommandolinjegrensesnitt med åpen kildekode (CLI) som forenkler datatransformasjon og modellering i datalagre ved å administrere kompleks SQL-kode på en strukturert, vedlikeholdbar måte. Det gjør det mulig for datateam å opprette pålitelige, testbare transformasjoner i kjernen av analytiske datasamlebånd.

Når de er sammenkoblet med Apache Airflow, forbedres dbts transformasjonsfunksjoner av Airflows funksjoner for planlegging, orkestrering og oppgavebehandling. Denne kombinerte tilnærmingen, ved hjelp av dbts transformasjonsekspertise sammen med Airflows arbeidsflytadministrasjon, leverer effektive og robuste datasamlebånd, noe som til slutt fører til raskere og mer innsiktsfulle datadrevne beslutninger.

Denne opplæringen illustrerer hvordan du oppretter en Apache Airflow DAG som bruker dbt til å transformere data som er lagret i Microsoft Fabric Data Warehouse.

Forutsetning

Du må fullføre følgende forutsetninger for å komme i gang:

  • Aktiver Apache Airflow-jobb i leieren.

    Merk

    Siden Apache Airflow-jobben er i forhåndsvisningstilstand, må du aktivere den gjennom leieradministratoren. Hvis du allerede ser Apache Airflow Job, kan det hende at leieradministratoren allerede har aktivert den.

    1. Gå til administrasjonsportalen –> Leierinnstillinger –> Under Microsoft Fabric –> Utvid inndelingen «Brukere kan opprette og bruke Apache Airflow Job (forhåndsvisning)».

    2. Velg Bruk. Skjermbilde for å aktivere Apache Airflow i tenant.

  • Opprett tjenestekontohaveren. Legg til tjenestekontohaveren Contributor som i arbeidsområdet der du oppretter datalageret.

  • Hvis du ikke har en, oppretter du et fabric-lager. Inntak av eksempeldataene i lageret ved hjelp av datasamlebånd. For denne opplæringen bruker vi NYC Taxi-Green-eksemplet .

  • Opprett Apache Airflow Job i arbeidsområdet.

Transformere dataene som er lagret i Fabric-lageret ved hjelp av dbt

Denne delen veileder deg gjennom følgende trinn:

  1. Angi kravene.
  2. Opprett et dbt-prosjekt i stoffadministrert lagring levert av Apache Airflow-jobben..
  3. Opprett en Apache Airflow DAG for å organisere dbt-jobber

Angi kravene

Opprett en fil requirements.txt i dags mappen. Legg til følgende pakker som Apache Airflow-krav.

  • astronom-kosmos: Denne pakken brukes til å kjøre dbt kjerneprosjekter som Apache Airflow dags og Oppgavegrupper.

  • dbt-stoff: Denne pakken brukes til å opprette dbt-prosjekt, som deretter kan distribueres til et Fabric Data Warehouse

       astronomer-cosmos==1.0.3
       dbt-fabric==1.5.0
    

Opprett et dbt-prosjekt i stoffadministrert lagring levert av Apache Airflow-jobben.

  1. I denne delen oppretter vi et eksempelprosjekt i Apache Airflow Job for datasettet nyc_taxi_green med følgende katalogstruktur.

       dags
       |-- my_cosmos_dag.py
       |-- nyc_taxi_green
       |  |-- profiles.yml
       |  |-- dbt_project.yml
       |  |-- models
       |  |   |-- nyc_trip_count.sql
       |  |-- target
    
  2. Opprett mappen som er navngitt nyc_taxi_green i dags mappen med profiles.yml filen. Denne mappen inneholder alle filene som kreves for dbt-prosjektet. Skjermbilde som viser oppretting av filer for dbt-prosjektet.

  3. Kopier innholdet nedenfor til profiles.yml. Denne konfigurasjonsfilen inneholder detaljer for databasetilkobling og profiler som brukes av dbt. Oppdater plassholderverdiene, og lagre filen.

    config:
      partial_parse: true
    nyc_taxi_green:
      target: fabric-dev
      outputs:
        fabric-dev:
          type: fabric
          driver: "ODBC Driver 18 for SQL Server"
          server: <sql connection string of your data warehouse>
          port: 1433
          database: "<name of the database>"
          schema: dbo
          threads: 4
          authentication: ServicePrincipal
          tenant_id: <Tenant ID of your service principal>
          client_id: <Client ID of your service principal>
          client_secret: <Client Secret of your service principal>
    
  4. dbt_project.yml Opprett filen, og kopier innholdet nedenfor. Denne filen angir konfigurasjonen på prosjektnivå.

    name: "nyc_taxi_green"
    
    config-version: 2
    version: "0.1"
    
    profile: "nyc_taxi_green"
    
    model-paths: ["models"]
    seed-paths: ["seeds"]
    test-paths: ["tests"]
    analysis-paths: ["analysis"]
    macro-paths: ["macros"]
    
    target-path: "target"
    clean-targets:
      - "target"
      - "dbt_modules"
      - "logs"
    
    require-dbt-version: [">=1.0.0", "<2.0.0"]
    
    models:
      nyc_taxi_green:
        materialized: table
    
  5. models Opprett mappen i nyc_taxi_green mappen. I denne opplæringen oppretter vi eksempelmodellen i filen med navnet nyc_trip_count.sql som oppretter tabellen som viser antall turer per dag per leverandør. Kopier følgende innhold i filen.

       with new_york_taxis as (
           select * from nyctlc
       ),
       final as (
         SELECT
           vendorID,
           CAST(lpepPickupDatetime AS DATE) AS trip_date,
           COUNT(*) AS trip_count
         FROM
             [contoso-data-warehouse].[dbo].[nyctlc]
         GROUP BY
             vendorID,
             CAST(lpepPickupDatetime AS DATE)
         ORDER BY
             vendorID,
             trip_date;
       )
       select * from final
    

    Skjermbilde som viser modeller for dbt-prosjektet.

Opprett en Apache Airflow DAG for å organisere dbt-jobber

  • Opprett filen som er navngitt my_cosmos_dag.py i dags mappen, og lim inn følgende innhold i den.

    import os
    from pathlib import Path
    from datetime import datetime
    from cosmos import DbtDag, ProjectConfig, ProfileConfig, ExecutionConfig
    
    DEFAULT_DBT_ROOT_PATH = Path(__file__).parent.parent / "dags" / "nyc_taxi_green"
    DBT_ROOT_PATH = Path(os.getenv("DBT_ROOT_PATH", DEFAULT_DBT_ROOT_PATH))
    profile_config = ProfileConfig(
         profile_name="nyc_taxi_green",
         target_name="fabric-dev",
         profiles_yml_filepath=DBT_ROOT_PATH / "profiles.yml",
    )
    
    dbt_fabric_dag = DbtDag(
         project_config=ProjectConfig(DBT_ROOT_PATH,),
         operator_args={"install_deps": True},
         profile_config=profile_config,
         schedule_interval="@daily",
         start_date=datetime(2023, 9, 10),
         catchup=False,
         dag_id="dbt_fabric_dag",
    )
    

Kjør dag

  1. Kjør DAG i Apache Airflow Job. Skjermbilde som viser kjør dag.

  2. Hvis du vil se dag lastet inn i Apache Airflow-brukergrensesnittet, klikker du på Monitor in Apache Airflow.Skjermbilde som viser hvordan du overvåker dbt dag.Skjermbilde som viser vellykket kjøring av dag.

Validere dataene dine

  • Etter en vellykket kjøring, for å validere dataene, kan du se den nye tabellen med navnet «nyc_trip_count.sql» opprettet i Fabric-datalageret. Skjermbilde som viser vellykket dbt dag.

Hurtigstart: Opprette en Apache Airflow-jobb