Data Engineering Agent zum Erstellen und Ändern von Datenpipelines verwenden

Mit dem Data Engineering Agent können Sie Gemini in BigQuery verwenden, um Datenpipelines zum Laden und Verarbeiten von Daten in BigQuery zu erstellen, zu ändern und zu verwalten. Mit dem Data Engineering Agent können Sie Datenpipelines aus verschiedenen Datenquellen generieren oder vorhandene Datenpipelines an Ihre Data-Engineering-Anforderungen anpassen. Dazu verwenden Sie Prompts in natürlicher Sprache. Der Data Engineering Agent hat die folgenden Funktionen:

  • Natürliche Sprache für die Pipeline-Erstellung: Der Agent verwendet Gemini, um Ihre Daten zu analysieren und Ihre Anweisungen in natürlicher Sprache zu interpretieren. Sie können in natürlicher Sprache Anweisungen geben, damit der Data Engineering Agent Datenpipelines erstellt oder bearbeitet.

  • Dataform-Integration: Der Agent generiert und organisiert den erforderlichen Pipelinecode in SQLX-Dateien in einem Dataform-Repository. Der Agent ist im Dataform-Arbeitsbereich aktiv, sodass Dataform-Pipelines automatisch für den Agenten verfügbar sind.

  • Benutzerdefinierte Agent-Anweisungen: Erstellen Sie Agent-Anweisungen in einfacher Sprache, um benutzerdefinierte Regeln für den Data Engineering Agent zu definieren. Agent-Anweisungen sind in Ihrer gesamten Organisation persistent und können nützlich sein, um organisationsweite Regeln wie Namenskonventionen oder Styleguides durchzusetzen.

  • Pipeline-Validierung: Der Agent validiert jeden generierten Code, um sicherzustellen, dass die Datenpipelines funktionieren.

Sie können Aufforderungen in natürlicher Sprache mit dem Data Engineering Agent verwenden, um SQLX-Dateien mit Tabellen, Ansichten, Zusicherungen, Deklarationen und Vorgängen zu erstellen. Sie können den Data Engineering Agent beispielsweise für Folgendes verwenden:

  • Daten aus externen Datenquellen wie Cloud Storage in verschiedenen Formaten wie CSV, AVRO oder PARQUET laden.
  • Erstellen Sie BigQuery-Routinen (UDFs) oder verwenden Sie vorhandene, um benutzerdefinierte Analysen und Transformationen für Ihre Daten durchzuführen.
  • Definieren Sie wiederverwendbare Richtlinien für den Agenten in natürlicher Sprache.

Weitere Beispiele für Prompts, die Sie mit dem Data Engineering Agent verwenden können, finden Sie unter Beispiel-Prompts.

Beschränkungen

Für den Data Engineering Agent gelten die folgenden Einschränkungen:

  • Der Data Engineering-Agent ist ein Pre-GA-Angebot und nicht für die Produktion vorgesehen.
  • Der Data Engineering Agent unterstützt keine Befehle in natürlicher Sprache für die folgenden Dateitypen:
    • Notebooks
    • Datenvorbereitung
    • JavaScript in SQLX
  • Der Data Engineering-Agent kann keine Pipelines ausführen. Nutzer müssen Pipelines überprüfen und ausführen oder planen.
  • Der Data Engineering Agent kann SQL-Code, der von nicht vorhandenen Zwischenressourcen abhängt, nicht ohne vollständigen Pipelineaufruf (nutzergesteuert) validieren.
  • Der Data Engineering Agent kann keine Weblinks oder URLs durchsuchen, die über Anweisungen oder direkte Prompts bereitgestellt werden.
  • Beim Importieren von Dateien in eine Datei mit Agent-Anweisungen werden mit der Importsyntax @ nur Pfade unterstützt, die mit ./, / oder einem Buchstaben beginnen.
  • Die Funktion Datenvorschau wird nur für Tabellen, Deklarationen oder Abfragen unterstützt, bei denen das Flag hasOutput auf true gesetzt ist.

Unterstützte Regionen

Gemini in BigQuery verwendet Google Cloudfür das Load Balancing, sodass es weltweit eingesetzt werden kann. Da Gemini in BigQuery global operiert, können Sie die Region, die verwendet werden soll, nicht auswählen.

Alle Dataform- und BigQuery-Anfragen werden an die entsprechenden regionalen Endpunkte gesendet, sodass alle Daten und der Code in der Region verbleiben.

Gemini in BigQuery wird über die folgenden Regionen bereitgestellt:

Nord- und Südamerika

  • Iowa (us-central1)

Europa

  • Finnland (europe-north1)
  • Frankfurt (europe-west3)

So verwendet der Data Engineering Agent Ihre Daten

Um qualitativ hochwertigere Agent-Antworten zu generieren, kann der Data Engineering Agent zusätzliche Daten und Metadaten aus BigQuery und Dataplex Universal Catalog abrufen, einschließlich Beispielzeilen aus BigQuery-Tabellen und Datenprofilen, die in Dataplex Universal Catalog generiert wurden. Diese Daten werden nicht zum Trainieren des Data Engineering-Agents verwendet, sondern nur während Agent-Unterhaltungen als zusätzlicher Kontext, um die Antworten des Agents zu optimieren.

Hinweise

Achten Sie darauf, dass Gemini in BigQuery für Ihr Google Cloud -Projekt aktiviert ist. Weitere Informationen finden Sie unter Gemini in BigQuery einrichten.

Sie müssen auch die Gemini Data Analytics API aktivieren.

Roles required to enable APIs

To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

Enable the API

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zur Verwendung des Data Engineering Agent benötigen:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Datenpipeline mit dem Data-Engineering-Agenten generieren

Wenn Sie den Data Engineering Agent in BigQuery verwenden möchten, wählen Sie eine der folgenden Optionen aus:

BigQuery-Pipelines

So verwenden Sie den Data Engineering Agent in der BigQuery-Pipelines-Oberfläche:

  1. Rufen Sie die Seite BigQuery auf.

    BigQuery aufrufen

  2. Klicken Sie im Abfrageeditor auf arrow_drop_down Neu erstellen > Pipeline.

  3. Wählen Sie eine Option für die Anmeldedaten für die Ausführung aus und klicken Sie auf Jetzt loslegen. Diese Anmeldedaten werden nicht vom Agent verwendet, sind aber erforderlich, damit Sie die generierte Datenpipeline ausführen können.

  4. Klicken Sie auf Agent-Funktionen für Datenpipeline ausprobieren.

  5. Geben Sie im Feld Agent fragen einen Prompt in natürlicher Sprache ein, um eine Datenpipeline zu generieren. Beispiel:

      Create dimension tables for a taxi trips star schema from
      new_york_taxi_trips.tlc_green_trips_2022. Generate surrogate keys and all
      the descriptive attributes.
    

    Klicken Sie nach der Eingabe eines Prompts auf Senden.

  6. Der Data Engineering Agent generiert eine Datenpipeline basierend auf Ihrem Prompt.

Die vom Data-Engineering-Agenten generierte Datenpipeline ist ein Vorschlag für eine Datenpipeline. Sie können auf einen Pipelineknoten klicken, um die generierte SQLX-Abfrage zu prüfen. Wenn Sie die vom Agent vorgeschlagene Datenpipeline anwenden möchten, klicken Sie auf Anwenden.

Vom Data-Engineering-Agenten vorgeschlagene Änderungen auf Ihre Datenpipeline anwenden

Dataform

Sie können den Data Engineering Agent in Dataform so verwenden:

  1. Rufen Sie die Seite Dataform auf.

    Zu Dataform

  2. Wählen Sie ein Repository aus.

  3. Wählen Sie einen Entwicklungsarbeitsbereich aus oder erstellen Sie einen.

  4. Klicken Sie im Arbeitsbereich auf Agent fragen.

  5. Geben Sie im angezeigten Prompt Agent fragen einen Prompt in natürlicher Sprache ein, um eine Datenpipeline zu erstellen. Beispiel:

      Create dimension tables for a taxi trips star schema from
      new_york_taxi_trips.tlc_green_trips_2022. Generate surrogate keys and all
      the descriptive attributes.
    

    Klicken Sie nach der Eingabe eines Prompts auf Senden.

Nachdem Sie den Prompt gesendet haben, generiert der Data Engineering-Agent eine Datenpipeline und ändert Dataform-SQLX-Dateien basierend auf Ihrem Prompt. Der Agent wendet diese Änderungen direkt auf Ihre Arbeitsbereichdateien an.

Datenpipeline prüfen

In einer vom Data-Engineering-Agenten generierten Datenpipeline können Sie auf einen Pipelineknoten klicken, um ihn zu prüfen.

  • Auf dem Tab Konfiguration wird die generierte SQLX-Abfrage angezeigt, die dem Knoten zugeordnet ist.
  • Auf dem Tab Datenvorschau sehen Sie die Eingabe- und Ausgabetabelle der Datei. Sie können sich über diesen Knoten eine Vorschau Ihrer Datentransformation ansehen, indem Sie auf Task ausführen klicken, um die Aufgabe mit oder ohne Abhängigkeiten auszuführen.

Datenpipeline bearbeiten

Sie können Ihre Datenpipeline mit dem Data Engineering Agent bearbeiten. Klicken Sie dazu auf Agent fragen und geben Sie einen Prompt ein, in dem Sie eine Änderung an der Datenpipeline vorschlagen.

Klicken Sie auf „Ask Agent“, um den Data-Engineering-Agenten für Ihre Datenpipeline zu verwenden.

Prüfen Sie die vom Data Engineering Agent vorgeschlagenen Änderungen und klicken Sie dann auf Übernehmen, um die Änderungen zu übernehmen.

Sie können eine SQLX-Abfrage auch manuell bearbeiten. Wählen Sie dazu einen Pipelineknoten aus und klicken Sie auf Öffnen.

Agent-Anweisungen für den Data Engineering Agent erstellen

Agent-Anweisungen sind Anweisungen in natürlicher Sprache für den Data Engineering-Agent, mit denen Sie persistente Anweisungen speichern können, damit der Agent eine Reihe benutzerdefinierter, vordefinierter Regeln befolgt. Verwenden Sie Agent-Anweisungen, wenn die Ergebnisse Ihres Agents in Ihrer gesamten Organisation einheitlich sein sollen, z. B. bei Namenskonventionen oder um einen Styleguide durchzusetzen.

Sie können eine GEMINI.MD-Kontextdatei als Agent-Anweisungsdatei für den Data Engineering Agent erstellen. Sie können Agent-Anweisungsdateien für die Verwendung in Ihrem lokalen Arbeitsbereich erstellen oder dieselben Anweisungsdateien in mehreren Datenpipelines über ein externes Repository verwenden.

So erstellen Sie Agent-Anweisungen:

  1. Klicken Sie unter Agent fragen auf Pipeline-Anweisungen.
  2. Klicken Sie im Bereich Anleitung für Pipeline auf Anleitungsdatei erstellen.
  3. Geben Sie in der angezeigten Datei GEMINI.MD Ihre Anweisungen in natürlicher Sprache ein.

    Das folgende Beispiel zeigt eine Datei mit Agent-Anweisungen mit mehreren Regeln:

      1. All event-specific tables MUST be prefixed with `cs_event_`.
      2. The primary key for any player activity table is a composite key of `player_id` and `event_timestamp_micros`.
      3. Filter out any player actions where `mana_spent` is greater than `max_mana_pool`. This is considered a data anomaly.
    
  4. Klicken Sie auf Speichern.

Informationen zur optimalen Strukturierung Ihrer Agent-Anweisungsdateien finden Sie unter Best Practices für Agent-Anweisungsdateien.

Agent-Anweisungen aus einem externen Repository laden

Sie können einen Satz von Agent-Anweisungen angeben, die in mehreren Datenpipelines wiederverwendet werden sollen, indem Sie ein externes Repository verknüpfen:

  1. Klicken Sie unter Agent fragen auf Pipeline-Anweisungen.
  2. Wählen Sie unter Externes Repository die Option Anleitungen aus externem Repository verwenden aus.
  3. Geben Sie in den dafür vorgesehenen Feldern ein Repository an, das Agent-Anweisungen enthält, die Sie mit Ihrer Datenpipeline verwenden möchten.
  4. Klicken Sie auf Speichern.

Zusätzliche lokale Dateien als Agent-Anweisungen importieren

Sie können auch andere Anweisungsdateien für den Data Engineering Agent mithilfe der @file.md-Syntax in die Datei GEMINI.md importieren. Weitere Informationen finden Sie unter Memory Import Processor.

Fehler bei Datenpipelines beheben

Wenn bei der Generierung der Datenpipeline Fehler auftreten, prüfen Sie, ob Sie alle Voraussetzungen für die Ausführung des Data Engineering-Agents erfüllt haben. Weitere Informationen finden Sie unter Vorbereitung.

Wenn bei der generierten Datenpipeline Fehler auftreten, können Sie den Data Engineering-Agenten mit den folgenden Schritten auffordern, Fehler in der Datenpipeline zu diagnostizieren und Empfehlungen zur Fehlerbehebung zu geben:

  1. Klicken Sie in Ihrer Pipeline oder Ihrem Entwicklungsarbeitsbereich auf den Tab Ausführungen.
  2. Suchen Sie in der Liste der Ausführungen nach der fehlgeschlagenen Ausführung der Datenpipeline. Fehlerhafte Ausführungen werden in der Spalte Status der Ausführung angezeigt.

    Fehlgeschlagene Ausführungen finden Sie in der Statusspalte Ihrer Pipelines.

  3. Bewegen Sie den Mauszeiger auf das Symbol und klicken Sie auf Untersuchen. Der Data Engineering Agent führt eine Analyse der Ausführung Ihrer Datenpipeline durch, um nach Fehlern zu suchen.

    Fordern Sie den Data-Engineering-Agenten auf, Fehler in Ihrer Pipeline zu diagnostizieren.

  4. Wenn die Analyse abgeschlossen ist, erstellt der Data Engineering Agent einen Bericht im Bereich Beobachtungen und Hypothese. Dieser Bericht enthält:

    • Beobachtungen und Datenpunkte, die aus den Ausführungsprotokollen der Datenpipeline extrahiert wurden
    • Wahrscheinliche Ursachen für den Fehler
    • Eine Reihe von umsetzbaren Schritten oder Empfehlungen zur Behebung des Problems

Mithilfe des Fehlerbehebungsberichts des Data Engineering Agent können Sie die Empfehlungen manuell umsetzen. Sie können den Data Engineering Agent auch anweisen, die Korrektur für Sie vorzunehmen. Gehen Sie dazu so vor:

  1. Kopieren Sie die Vorschläge aus dem Bericht zur Fehlerbehebung.
  2. Zurück zum Data Engineering Agent:
    1. Wenn Sie BigQuery-Pipelines verwenden, rufen Sie die Seite „Pipelines“ auf und klicken Sie auf Kundenservicemitarbeiter fragen.
    2. Wenn Sie Dataform verwenden, klicken Sie auf Agent fragen.
  3. Fügen Sie die Vorschläge in den Prompt ein und weisen Sie den Data Engineering-Agent an, die Korrekturen direkt an Ihrer Datenpipeline vorzunehmen.
  4. Klicken Sie auf Senden.

Beispiel-Prompts

In den folgenden Abschnitten finden Sie einige Beispielprompts, die Sie mit dem Data Engineering Agent verwenden können, um Ihre Datenpipeline zu entwickeln.

Vorhandene Daten in einer neuen Tabelle zusammenfassen

Mit diesem Prompt verwendet der Data Engineering Agent das Schema und die Beispiele, um die Datengruppierung nach Schlüssel abzuleiten. Der Agent richtet in der Regel eine neue Tabellenkonfiguration mit Tabellen- und Spaltenbeschreibungen ein.

  Create a daily sales report from the
  bigquery-public-data.thelook_ecommerce.order_items table into a
  reporting.daily_sales_aggregation table.

Einer vorhandenen Tabelle Prüfungen zur Datenqualität hinzufügen

Mit diesem Prompt leitet der Agent auf Grundlage des Schemas und der Stichproben angemessene Qualitätsprüfungen für die Tabelle ab. Sie können dem Prompt auch einige subjektive Behauptungen hinzufügen.

  Add data quality checks for bigquery-public-data.thelook_ecommerce.users.

Neue abgeleitete Spalte erstellen und der neuen Tabelle Datenqualitätsprüfungen hinzufügen

Im folgenden Prompt wird gezeigt, wie Sie gleichzeitig eine Tabelle und eine Spalte hinzufügen und Qualitätsprüfungen für die Tabelle festlegen können.

  Create a new table named staging.products from
  bigquery-public-data.thelook_ecommerce.products and add a calculated column
  named gross_profit, which is the retail_price minus the cost.


  Also, add the following assertions: ID must not be null and must be unique.
  The retail_price must be greater than or equal to the cost. The department
  column can only contain 'Men' or 'Women'.

UDFs als Teil der Modelldefinition erstellen

Der Data Engineering Agent kann auch die DDL zum Erstellen benutzerdefinierter Funktionen (User-Defined Functions, UDFs) einrichten. Der Agent erstellt die UDF zwar nicht, Sie können sie aber erstellen, indem Sie die Datenpipeline ausführen. Diese UDFs können in Modelldefinitionen in Ihrer Datenpipeline verwendet werden.

  Create a user-defined function (UDF) named get_age_group that takes an integer
  age as input and returns a string representing the age group ('Gen Z',
  'Millennial', 'Gen X', 'Baby Boomer').


  Use this UDF on the age column from the
  bigquery-public-data.thelook_ecommerce.users table to create a new view called
  reporting.user_age_demographics that includes user_id, age, and the calculated
  age_group.

Best Practices

In den folgenden Abschnitten finden Sie Best Practices für die Arbeit mit dem Data Engineering Agent und Dataform.

Best Practices für den Data Engineering Agent

Agent-Anweisungen für häufige Anfragen verwenden: Wenn Sie häufig bestimmte Techniken anwenden oder dem Agenten immer wieder dieselben Korrekturen geben, können Sie die Agent-Anweisungen als zentralen Ort zum Speichern allgemeiner Anweisungen und Anfragen verwenden.

Geben Sie dem KI-Agenten mehr Kontext. Sie können dem Agenten zusätzlichen Kontext aus dem Dataplex Universal Catalog bereitstellen, indem Sie Glossarbegriffe an BigQuery-Tabellen und ‑Spalten anhängen und Datenprofilscans erstellen. Glossarbegriffe können verwendet werden, um Spalten zu taggen, die zusätzlichen Kontext erfordern, z. B. Spalten mit personenidentifizierbaren Informationen, für die spezielle Anweisungen zur Verarbeitung erforderlich sind, oder um übereinstimmende Spalten mit unterschiedlichen Namen in verschiedenen Tabellen zu identifizieren. Datenprofilscans ermöglichen es dem KI-Agenten, die Datenverteilung in den Spalten einer Tabelle besser zu verstehen. So kann er spezifischere Zusicherungen zur Datenqualität erstellen. Weitere Informationen finden Sie unter Datenprofilerstellung.

Klar schreiben. Formulieren Sie Ihre Anfrage klar und vermeiden Sie vage Formulierungen. Geben Sie nach Möglichkeit Quell- und Zieldatenquellen an, wie im folgenden Beispiel:

  Extract data from the sales.customers table in the us_west_1 region, and load
  it into the reporting.dim_customers table in BigQuery. Match the schema of the
  destination table.

Direkte und eingegrenzte Anfragen stellen: Stellen Sie jeweils nur eine Frage und halten Sie die Prompts kurz. Bei Prompts mit mehr als einer Frage können Sie die einzelnen Teile der Frage zur besseren Übersicht nummerieren, wie im folgenden Beispiel:

  1. Create a new table named staging.events_cleaned. Use raw.events as the
     source. This new table should filter out any records where the user_agent
     matches the pattern '%bot%'. All original columns should be included.

  2. Next, create a table named analytics.user_sessions. Use
     staging.events_cleaned as the source. This table should calculate the
     duration for each session by grouping by session_id and finding the
     difference between the MAX(event_timestamp) and MIN(event_timestamp).

Genaue Anweisungen geben und wichtige Begriffe hervorheben: Sie können in Ihren Prompts wichtige Begriffe oder Konzepte hervorheben und bestimmte Anforderungen als wichtig kennzeichnen, wie im folgenden Beispiel:

  When creating the staging.customers table, it is *VERY IMPORTANT* that you
  transform the email column from the source table bronze.raw_customers.
  Coalesce any NULL values in the email column to an empty string ''.

Operatorrangfolge angeben: Bei geordneten Aufgaben können Sie Ihren Prompt in Listen strukturieren, in denen die aufgeführten Elemente in kleine, fokussierte Schritte unterteilt sind, wie im folgenden Beispiel:

  Create a pipeline with the following steps:
  1. Extract data from the ecomm.orders table.
  2. Join the extracted data with the marts.customers table on customer_id
  3. Load the final result into the reporting.customer_orders table.

Optimieren und iterieren: Probieren Sie verschiedene Formulierungen und Ansätze aus, um herauszufinden, was die besten Ergebnisse liefert. Wenn der Agent ungültigen SQL-Code oder andere Fehler generiert, können Sie ihn mithilfe von Beispielen oder öffentlicher Dokumentation anleiten.

  The previous query was incorrect because it removed the timestamp. Please
  correct the SQL. Use the TIMESTAMP_TRUNC function to truncate the
  event_timestamp to the nearest hour, instead of casting it as a DATE. For
  example: TIMESTAMP_TRUNC(event_timestamp, HOUR).

Best Practices für Agent-Anweisungsdateien

Erstellen Sie Agent-Anweisungsdateien, um den Data Engineering Agent an Ihre Anforderungen anzupassen. Wenn Sie Agent-Anweisungen verwenden, empfehlen wir Folgendes:

  • Alle Dateipfade in Dataform sind relativ zum Stammverzeichnis des Repository. Verwenden Sie relative Pfade für die @file.md-Syntax, um Anweisungen korrekt in GEMINI.md zu importieren.
  • In GEMINI.md importierte Dateien können selbst Importe enthalten, wodurch eine verschachtelte Struktur entsteht. Um eine unendliche Rekursion zu verhindern, hat GEMINI.md eine maximale Importtiefe von fünf Ebenen.
  • Wenn Sie Anweisungen für mehrere Datenpipelines freigeben möchten, speichern Sie sie in einem zentralen Dataform-Repository und verknüpfen Sie sie mit dem Dataform-Arbeitsrepository. Mit lokalen Anweisungen können Sie zentrale Regeln für pipelinespezifisches Verhalten überschreiben.
  • Durch die Verwendung von Überschriften und Listen in der Agent-Anweisungsdatei lassen sich Anweisungen für den Data Engineering-Agent organisieren und verdeutlichen.
  • Geben Sie aussagekräftige Dateinamen an und fassen Sie ähnliche Anweisungen in einer Datei zusammen. Regeln mithilfe von Markdown-Überschriften logisch nach Kategorie, Funktion oder Funktionalität organisieren.
  • Um widersprüchliche Anweisungen zu vermeiden, müssen Sie die spezifischen Bedingungen, unter denen jede Anweisung gilt, klar definieren.
  • Iterieren und optimieren Sie Ihre Prompts und Ihren Workflow. Das Verhalten von Agents ändert sich im Laufe der Zeit mit der Einführung von Agents und Modell-Upgrades. Wir empfehlen daher, Ihre Regeln mit verschiedenen Prompts zu testen, um Bereiche zu identifizieren, die möglicherweise verbessert werden müssen. Halten Sie die Regelfile mit allen Änderungen an Ihrer Datenpipeline synchron.

Das folgende Beispiel zeigt eine Agent-Anweisungsdatei mit dem Namen GEMINI.md, in der unsere Best Practices für die effektive Verwendung des Data Engineering Agent angewendet werden:

  ### Naming Conventions

  * Datasets: [business_domain]_[use_case] (e.g., ecommerce_sales)

  * Tables:
      - Raw/External: raw_[source_name]
      - Staging: stg_[business_entity]
      - Dimension: dim_[dimension_name]
      - Fact: fct_[fact_name]

  * Dataform Folders:
      - sources
      - staging
      - marts
      - dataProducts

  * Views: vw_[view_name]

  * Columns: snake_case (e.g., order_id, customer_name)

  ## Cloud Storage data load
  * When ingesting data from Cloud Storage, create external tables.

  ## Null handling
  * Filter out null id values

  ## String normalization
  * Standardize string columns by converting to lower case

  ## Data Cleaning Guidelines
  @./generic_cleaning.md