Langsam wechselnde Dimensionen in Dataform verwenden

In diesem Dokument wird anhand des Open-Source-Pakets „Langsam ändernde Dimensionen“ in Dataform gezeigt, wie Sie ein Open-Source-Paket verwenden.

Das Paket „Langsam ändernde Dimensionen“ enthält gängige Datenmodelle zum Erstellen von Tabellen mit sich langsam ändernden Dimensionen vom Typ 2 aus veränderlichen Datenquellen in Dataform.

Tabellen mit langsam ändernden Dimensionen sind Inkremententabellen, die Daten enthalten, die sich nicht regelmäßig, sondern unvorhersehbar ändern können, z. B. Kunden oder Produkte. In einer Tabelle mit langsam ändernden Dimensionen vom Typ 2 werden neue Daten in einer neuen Zeile angehängt, ohne vorhandene Tabellenzeilen zu überschreiben. Der Tabellenverlauf wird in mehreren Datensätzen für einen bestimmten Schlüssel im Schlüssel der sich langsam ändernden Dimension beibehalten. Jeder Datensatz hat einen eindeutigen Schlüssel.

Mit dem Paket „Langsam wechselnde Dimensionen“ werden in BigQuery für eine bestimmte NAME die folgenden Beziehungen erstellt:

  • NAME – eine Ansicht mit den Feldern scd_valid_from und scd_valid_to
  • NAME_updates: Eine inkrementelle Tabelle, in der der Änderungsverlauf der Quelltabelle gespeichert wird

Dataform aktualisiert sich langsam ändernde Dimensionen jedes Mal, wenn eine Inkrementtabelle für sich langsam ändernde Dimensionen ausgeführt wird. Je nachdem, wie detailliert Sie die Änderungen erfassen möchten, können Sie die Ausführung der Tabelle mit langsam wechselnden Dimensionen täglich oder stündlich planen.

Weitere Informationen zum Planen von Dataform-Ausführungen finden Sie unter Ausführungen mit Cloud Composer planen und Ausführungen mit Workflows und Cloud Scheduler planen.

Hinweise

  1. Kopieren Sie auf der Seite Veröffentlichungen für langsam wechselnde Dimensionen die .tar.gz-URL der neuesten Version.
  2. Erstellen Sie ein Dataform-Repository.
  3. Erstellen und initialisieren Sie einen Arbeitsbereich im Repository.
  4. Installieren Sie das Paket „Langsam wechselnde Dimensionen“ in Ihrem Dataform-Repository.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Dataform Editor (roles/dataform.editor) für Arbeitsbereiche zuzuweisen, damit Sie die Berechtigungen erhalten, die Sie zum Konfigurieren eines Pakets 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.

Tabelle mit sich langsam ändernden Dimensionen mit dem Paket „Langsam wechselnde Dimensionen“ erstellen

So erstellen Sie eine Tabelle mit langsam wechselnden Dimensionen mit dem Paket „Langsam wechselnde Dimensionen“ in Dataform:

  1. Klicken Sie im Bereich Dateien neben definitions/ auf das Dreipunkt-Menü  Mehr.

  2. Klicken Sie auf Datei erstellen.

  3. Führen Sie im Bereich Neue Datei erstellen die folgenden Schritte aus:

    1. Geben Sie im Feld Dateipfad hinzufügen nach definitions/ den Namen der Datei gefolgt von .js ein. Beispiel: definitions/definitions.js.

    2. Klicken Sie auf Datei erstellen.

  4. Wählen Sie im Bereich Dateien die neu erstellte .js aus. file.

  5. Importieren Sie das Paket in die Datei im folgenden Format:

     const CONSTANT-NAME = require("dataform-scd");
    

    Ersetzen Sie CONSTANT-NAME durch einen Namen für die Konstante, z. B. scd.

  6. Erstellen Sie Tabellen für langsam wechselnde Dimensionen im folgenden Format:

    scd("source_data_scd", {
      uniqueKey: "UNIQUE_ID",
      timestamp: "UPDATED_AT", // A field that stores a timestamp or date of when the row was last changed.
      source: {
        schema: "SOURCE_SCHEMA",     // The source table to build slowly changing dimensions from.
        name: "SOURCE_SCHEMA_NAME",
      },
      incrementalConfig: {        // Any configuration parameters to apply to the incremental table that will be created.
        bigquery: {
          partitionBy: "UPDATED_AT",
        },
      },
    });
    

    Ersetzen Sie Folgendes:

    • UNIQUE_ID: Eine eindeutige Kennzeichnung für Zeilen in der Tabelle
    • UPDATED_AT: ein Name für das Feld, in dem ein Zeitstempel oder ein Datum gespeichert wird, an dem die Zeile zuletzt geändert wurde, z. B. updated_at
    • SOURCE_SCHEMA: das Schema der Quelltabelle, z. B. dataform_scd_example
    • SOURCE_SCHEMA_NAME: der Name der Quelltabelle, z. B. source_data
  7. Optional: Klicken Sie auf Formatieren.

Im folgenden Codebeispiel wird eine Tabellendefinition für langsam wechselnde Dimensionen gezeigt, die mit dem Paket „Langsam wechselnde Dimensionen“ erstellt wurde:

const scd = require("dataform-scd");

/**
 * Create an SCD table on top of the table defined in source_data.sqlx.
 */
const { updates, view } = scd("source_data_scd", {
  // A unique identifier for rows in the table.
  uniqueKey: "user_id",
  // A field that stores a timestamp or date of when the row was last changed.
  timestamp: "updated_at",
  // The source table to build slowly changing dimensions from.
  source: {
    schema: "dataform_scd_example",
    name: "source_data",
  },
  // Any tags that will be added to actions.
  tags: ["slowly-changing-dimensions"],
  // Documentation of table columns
  columns: {user_id: "User ID", some_field: "Data Field", updated_at: "Timestamp for updates"},
  // Configuration parameters to apply to the incremental table that will be created.
  incrementalConfig: {
    bigquery: {
      partitionBy: "updated_at",
    },
  },
});

// Additional customization of the created models can be done by using the returned actions objects.
updates.config({
  description: "Updates table for SCD",
});

Nächste Schritte