Utilizzare le dimensioni a lenta modifica in Dataform

In questo documento viene descritto come utilizzare il pacchetto open source che modifica lentamente le dimensioni in Dataform come esempio di utilizzo di un pacchetto open source.

Il pacchetto di dimensioni lentamente 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, nuovi dati vengono aggiunti in una nuova riga senza sovrascrivere le righe della tabella esistenti. La cronologia della tabella viene conservata in più record per una determinata chiave nella chiave di dimensione lenta. Ogni record ha una chiave univoca.

Il pacchetto di dimensioni che cambiano lentamente crea le seguenti relazioni in BigQuery per una data NAME:

  • NAME: una visualizzazione con campi scd_valid_from e scd_valid_to
  • NAME_updates: una tabella incrementale che memorizza la cronologia delle modifiche della tabella di origine

Dataform aggiorna le dimensioni cambiando lentamente ogni volta che esegue una tabella incrementale con dimensioni variabili. Ti consigliamo di pianificare la tabella delle dimensioni a lenta modifica da eseguire 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 delle release delle dimensioni in rapida evoluzione, 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 Dimensioni che cambiano lentamente nel repository Dataform.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per configurare un pacchetto, chiedi al tuo amministratore di concederti il ruolo IAM Editor Dataform (roles/dataform.editor) nelle aree di lavoro. Per maggiori informazioni sulla concessione dei ruoli, vedi Gestire l'accesso.

Potresti anche ottenere le autorizzazioni richieste tramite ruoli personalizzati o altri ruoli predefiniti.

Creare una tabella delle dimensioni che cambia lentamente con il pacchetto Dimensioni che cambiano lentamente

Per creare una tabella di dimensioni che cambiano lentamente con il pacchetto di pacchetti a lenta modifica 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, segui questi passaggi:

    1. Nel campo Aggiungi un percorso del file, dopo il giorno 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 .js appena creato. .

  5. Importa il pacchetto nel file nel seguente formato:

     const CONSTANT-NAME = require("dataform-scd");
    
    1. 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",
        },
      },
    });
    
    1. Sostituisci UNIQUE_ID con un identificatore univoco per le righe della tabella.
    2. Sostituisci UPDATED_AT con un nome per il campo in cui è presente un timestamp o una data dell'ultima modifica della riga, ad esempio updated_at.
    3. Sostituisci SOURCE_SCHEMA con lo schema della tabella di origine, ad esempio dataform_scd_example.
    4. Sostituisci SOURCE_SCHEMA_NAME con il nome della tabella di origine, ad esempio source_data.

Il seguente esempio di codice mostra una definizione della tabella di dimensioni che cambiano lentamente creata con il pacchetto Dimensioni che cambiano lentamente:

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