Sich langsam ändernde Dimensionen in Dataform verwenden

In diesem Dokument wird anhand eines Beispiels für die Verwendung eines Open-Source-Pakets gezeigt, wie Sie das Open-Source-Paket „Slowly change Dimensions“ in Dataform verwenden.

Das Paket mit sich langsam ändernden Dimensionen enthält gängige Datenmodelle zum Erstellen von sich langsam ändernden Dimensionstabellen aus veränderlichen Datenquellen in Dataform.

Tabellen mit Dimensionen, die sich langsam ändern, sind inkrementelle Tabellen mit Daten, die sich unvorhersehbar und nicht regelmäßig ändern können, z. B. zu Kunden oder Produkten. In einer sich langsam ändernden Dimensionstabelle von Typ 2 werden neue Daten in einer neuen Zeile angehängt, ohne vorhandene Tabellenzeilen zu überschreiben. Der Tabellenverlauf wird für einen bestimmten Schlüssel in dem sich langsam ändernden Dimensionsschlüssel in mehreren Einträgen gespeichert. Jeder Datensatz hat einen eindeutigen Schlüssel.

Das Paket „ sich langsam ändernde Dimensionen“ erzeugt in BigQuery die folgenden Beziehungen für eine gegebene NAME:

  • 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 Tabelle mit sich langsam ändernden Dimensionen ausgeführt wird. Sie können eine sich langsam ändernde Dimensionstabelle so planen, dass sie täglich oder stündlich ausgeführt wird, je nach dem Detaillierungsgrad der Änderungen, die Sie erfassen möchten.

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

Hinweise

  1. Kopieren Sie auf der Seite sich langsam ändernde Dimensionen-Releases die .tar.gz-URL des neuesten Release.
  2. Erstellen Sie ein Dataform-Repository.
  3. Erstellen und initialisieren Sie einen Arbeitsbereich im Repository.
  4. Installieren Sie das Paket „ sich langsam ändernde Dimensionen“ in Ihrem Dataform-Repository.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Dataform Editor (roles/dataform.editor) für Arbeitsbereiche zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Konfigurieren eines Pakets benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

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

Mit dem Paket „ sich langsam ändernde Dimensionen“ eine Tabelle mit sich langsam ändernden Dimensionen erstellen

So erstellen Sie mit dem Paketpaket „ sich langsam ändernde Dimensionen“ in Dataform eine Tabelle mit Dimensionen, die sich langsam ändern:

  1. Klicken Sie im Bereich Dateien neben definitions/ auf das -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 Files (Dateien) den neu erstellten .js aus. file.

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

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

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

  6. Erstellen Sie Tabellen mit sich langsam ändernden 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 der letzten Änderung der Zeile gespeichert ist, 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 Format.

Das folgende Codebeispiel zeigt eine Tabellendefinition mit sich langsam ändernden Dimensionen, die mit dem Paket „ sich langsam ändernde 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