distribuzione

Utilizzo

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

- o -

distribution
Valore predefinito
Nessuno

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

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

Definizione

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

Il parametro distribution funziona solo con le 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 utilizzando create_process o sql_create.

In generale, una chiave di distribuzione deve essere applicata alla colonna che fungerà da chiave esterna (la colonna che utilizzi per unire la tabella ad altre). Per le best practice, consulta la documentazione relativa al dialetto.

Esempi

Crea una tabella derivata permanente customer_order_facts con una chiave di distribuzione su 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 su 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"
  }
}