Utilizzare le dimensioni che cambiano lentamente in Dataform

Questo documento mostra come utilizzare il pacchetto open source di dimensioni Lentamente in fase di modifica in Dataform come esempio di utilizzo di un pacchetto open source.

Il pacchetto dimensioni a modifica graduale contiene modelli di dati comuni per creare tabelle di dimensioni di tipo 2 che cambiano lentamente da origini dati modificabili in Dataform.

Le tabelle delle dimensioni che cambiano lentamente sono tabelle incrementali contenenti dati che possono cambiare in modo imprevedibile, non in base a una pianificazione regolare, ad esempio clienti o prodotti. In una tabella delle dimensioni di tipo 2 che cambia lentamente, i nuovi dati vengono aggiunti in una nuova riga senza sovrascrivere le righe esistenti. La cronologia della tabella viene conservata in più record per una determinata chiave nella chiave della dimensione che cambia lentamente. Ogni record ha una chiave univoca.

Il pacchetto Dimensioni in lenta modifica crea le seguenti relazioni in BigQuery per un determinato NAME:

  • NAME - una vista con i campi scd_valid_from e scd_valid_to
  • NAME_updates: una tabella incrementale che archivia la cronologia delle modifiche della tabella di origine

Dataform si aggiorna lentamente dimensioni ogni volta che esegue una tabella incrementale di dimensioni che cambiano lentamente. Ti consigliamo di pianificare l'esecuzione della tabella delle dimensioni che cambia lentamente in modo che venga eseguita ogni giorno oppure ogni ora, a seconda della granularità delle modifiche che vuoi acquisire.

Per scoprire come pianificare le esecuzioni di Dataform, consulta Pianificare le esecuzioni con Cloud Composer o Pianificare le esecuzioni con Workflows e Cloud Scheduler.

Prima di iniziare

  1. Nella pagina Rilasciate le dimensioni in modo lento, copia l'URL .tar.gz della release più recente.
  2. Crea un repository Dataform.
  3. Crea e inizializza un'area di lavoro nel repository.
  4. Installa il pacchetto di dimensioni Lento modifica nel repository Dataform.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per configurare un pacchetto, chiedi all'amministratore di concederti il ruolo IAM Editor Dataform (roles/dataform.editor) per le aree di lavoro. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

Potresti anche essere in grado di ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Creare una tabella delle dimensioni che cambiano lentamente con il pacchetto Dimensioni in fase di modifica graduale

Per creare una tabella delle dimensioni che cambia lentamente con il pacchetto di dimensioni in fase di modifica lenta in Dataform, procedi nel seguente modo:

  1. Nel riquadro File, accanto a definitions/, fai clic sul menu Altro .

  2. Fai clic su Crea file.

  3. Nel riquadro Crea nuovo file, procedi nel seguente modo:

    1. Nel campo Aggiungi un percorso file, dopo definitions/, inserisci il nome del file seguito da .js. Ad esempio, definitions/definitions.js.

    2. Fai clic su Crea file.

  4. Nel riquadro File, seleziona il file .js appena creato. nello stesso file YAML.

  5. Importa il pacchetto nel file nel seguente formato:

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

    Sostituisci CONSTANT-NAME con un nome per la costante, ad esempio scd.

  6. Crea tabelle di dimensioni che cambiano lentamente nel seguente formato:

    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",
        },
      },
    });
    

    Sostituisci quanto segue:

    • UNIQUE_ID: un identificatore univoco per le righe nella tabella
    • UPDATED_AT: nome per il campo in cui è memorizzato un timestamp o una data in cui è stata apportata l'ultima modifica della riga, ad esempio updated_at
    • SOURCE_SCHEMA: lo schema della tabella di origine, ad esempio dataform_scd_example
    • SOURCE_SCHEMA_NAME: nome della tabella di origine, ad esempio source_data
  7. (Facoltativo) Fai clic su Formato.

Il seguente esempio di codice mostra una definizione della tabella delle dimensioni che cambia lentamente, creata con il pacchetto Dimensioni in fase di modifica graduale:

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",
});

Passaggi successivi