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
distributionsolo funciona con tablas persistentes, como las PDT y las tablas de datos agregados.distributionno se admite para las tablas derivadas sin una estrategia de persistencia.Además, el parámetro
distributionno se admite para las tablas derivadas que se definen concreate_processosql_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"
}
}