distribución

Uso

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

- o -

distribution
Valor predeterminado
Ninguna

Acepta
El nombre de una columna en una tabla derivada o en una tabla agregada

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

Definición

distribution te permite especificar la columna de una tabla derivada persistente (PDT) o una tabla agregada en la que se aplica una clave de distribución para distribuir los datos en un clúster. Cuando dos columnas están unidas por la columna especificada en el parámetro distribution, la base de datos puede encontrar los datos unidos en el mismo nodo para minimizar la E/S de entrenamiento. Actualmente, 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 que son persistentes, como PDT y tablas agregadas. distribution no es compatible con las tablas derivadas sin una estrategia de persistencia.

Además, el parámetro distribution no es compatible con tablas derivadas que se definen mediante 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 utiliza para unir su tabla con 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 de 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"
  }
}