distribution

Uso

view: my_view {
  derived_table: {
    distribution: "customer_id"
    ...
  }
}
Jerarquía
distribution

-o-

distribution
Valor predeterminado
Ninguno

Acepta
Nombre de una columna en una tabla derivada o una tabla de agregación

Reglas especiales
distribution solo es compatible con las bases de datos de Redshift y Aster.

Definición

El parámetro distribution te permite especificar la columna de una tabla derivada persistente (PDT) o una tabla de agregación en la que se aplicará una clave de distribución. La clave de distribución propaga los datos por un clúster. Cuando dos tablas se unen por la columna especificada en el parámetro distribution, la base de datos puede encontrar los datos unidos en el mismo nodo para minimizar las E/S entre nodos. El parámetro distribution solo funciona con las bases de datos de Redshift y Aster. Para otros dialectos de SQL (como MySQL y Postgres), usa indexes en su lugar.

El parámetro distribution solo funciona con tablas persistentes, como las PDT y las tablas de datos agregados. distribution no se admite para las tablas derivadas sin una estrategia de persistencia.

Además, el parámetro distribution no se admite para las tablas derivadas que se definen con create_process o sql_create.

En términos generales, se debe aplicar una clave de distribución a la columna que actuará como clave externa (la columna que usas para unir tu tabla a otras). Consulta la documentación de tu dialecto para conocer las prácticas recomendadas.

Ejemplos

Crea una tabla derivada persistente customer_order_facts con una clave de distribución en 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 tabla derivada customer_order_facts basada en una consulta en SQL con una clave de distribución en 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"
  }
}