Utilizzare le dimensioni con variazioni lente in Dataform

Questo documento illustra come utilizzare il pacchetto open source Dimensioni in lenta evoluzione in Dataform come esempio di utilizzo di un pacchetto open source.

Il pacchetto Dimensioni in lenta evoluzione contiene modelli di dati comuni per la creazione di tabelle delle dimensioni in lenta evoluzione di tipo 2 da origini dati mutabili in Dataform.

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

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

  • NAME: una visualizzazione con i 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 che cambiano lentamente ogni volta che esegue una tabella incrementale con dimensioni che cambiano lentamente. Ti consigliamo di pianificare l'esecuzione della tabella delle dimensioni in lenta evoluzione ogni giorno o 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 che cambiano lentamente, copia l'URL .tar.gz della release più recente.
  2. Crea un repository Dataform.
  3. Crea e inizializza uno spazio di lavoro nel repository.
  4. Installa il pacchetto Dimensioni in lenta evoluzione nel tuo repository Dataform.

Ruoli obbligatori

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

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

Creare una tabella delle dimensioni con variazioni lente con il pacchetto Dimensioni con variazioni lente

Per creare una tabella delle dimensioni con variazioni lente con il pacchetto di dimensioni con variazioni lente in Dataform:

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

  2. Fai clic su Crea file.

  3. Nel riquadro Crea nuovo file:

    1. Nel campo Aggiungi un percorso del 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 .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: un nome per il campo che memorizza un timestamp o la data dell'ultima modifica della riga, ad esempio updated_at
    • SOURCE_SCHEMA: lo schema della tabella di origine, ad esempio dataform_scd_example
    • SOURCE_SCHEMA_NAME: il 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 con variazioni lente creata con il pacchetto Dimensioni con variazioni lente:

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