distribuzione

Utilizzo

view: my_view {
derived_table: {
distribution: "customer_id"
...
}
}
Gerarchia
distribution

- oppure -

distribution
Valore predefinito
Nessuna

Accetta
Il nome di una colonna in una tabella derivata o in una tabella aggregata

Regole speciali
distribution è supportato solo per database Redshift e Aster.

Definizione

distribution consente di specificare la colonna di una tabella derivata permanente (PDT) o di una tabella aggregata a cui applicare una chiave di distribuzione per distribuire i dati su un cluster. Quando due tabelle vengono unite dalla colonna specificata nel parametro distribution, il database può trovare i dati uniti sullo stesso nodo per ridurre al minimo l'I/O internode. Attualmente, distribution funziona solo con i database Redshift e Aster. Per altri dialetti SQL (come MySQL e Postgres), utilizza indexes.

Il parametro distribution funziona solo con tabelle persistenti, come le PDT e le tabelle aggregate. distribution non è supportato per le tabelle derivate senza una strategia di persistenza.

Inoltre, il parametro distribution non è supportato per le tabelle derivate definite con create_process o sql_create.

In generale, una colonna di distribuzione dovrebbe essere applicata alla colonna che funge da chiave esterna (la colonna che utilizzi per unire la tabella ad altre persone). Fai riferimento alla documentazione del tuo dialetto per le best practice.

Esempi

Crea una tabella derivata permanente customer_order_facts con una chiave di distribuzione in customer_id:

view: customer_order_facts {
  derived_table: {
    explore_source: order {
      column: customer_id { field: order.customer_id }
      column: lifetime_orders { field: order.lifetime_orders }
    }
    datagroup_trigger: order_datagroup
    distribution: "customer_id"
  }
}

Crea una tabella derivata customer_order_facts basata su una query SQL con una chiave di distribuzione in customer_id:

view: customer_order_facts {
  derived_table: {
    sql:
      SELECT
        customer_id,
        COUNT(*) AS lifetime_orders
      FROM
        order ;;
    persist_for: "24 hours"
    distribution: "customer_id"
  }
}