Modèles de données
Le modèle d'une table fixe le sort des lignes qui partagent la même clé. Il est choisi à la création et ne se modifie pas ensuite.
Duplicate Key
Toutes les lignes sont conservées. La clé sert uniquement à l'ordre de tri.
CREATE TABLE events (
event_time DATETIME,
user_id BIGINT,
event_type VARCHAR(32)
)
DUPLICATE KEY(event_time)
DISTRIBUTED BY HASH(user_id) BUCKETS AUTO;
Usage : événements, logs, faits historisés.
Unique Key
Une seule ligne par clé : une insertion sur une clé existante remplace la ligne (upsert).
CREATE TABLE customers (
customer_id BIGINT,
name VARCHAR(64),
email VARCHAR(128),
updated_at DATETIME
)
UNIQUE KEY(customer_id)
DISTRIBUTED BY HASH(customer_id) BUCKETS AUTO;
INSERT INTO customers VALUES (101, 'Alice', '[email protected]', '2026-01-01 00:00:00');
INSERT INTO customers VALUES (101, 'Alice', '[email protected]', '2026-03-01 00:00:00');
-- une seule ligne pour 101, avec la nouvelle adresse
Usage : dimensions, référentiels, tables alimentées par CDC. DELETE et UPDATE sont
disponibles.
Aggregate Key
Les colonnes hors clé portent une fonction d'agrégation, appliquée aux lignes de même clé.
CREATE TABLE site_metrics (
dt DATE,
site_id INT,
pv BIGINT SUM DEFAULT '0',
revenue DECIMAL(10,2) SUM DEFAULT '0',
last_at DATETIME REPLACE
)
AGGREGATE KEY(dt, site_id)
DISTRIBUTED BY HASH(site_id) BUCKETS AUTO;
INSERT INTO site_metrics VALUES ('2026-01-15', 1, 10, 100.00, '2026-01-15 10:00:00');
INSERT INTO site_metrics VALUES ('2026-01-15', 1, 20, 150.00, '2026-01-15 11:00:00');
-- une ligne : pv = 30, revenue = 250.00, last_at = 11:00
Fonctions : SUM, MAX, MIN, REPLACE (dernière valeur), REPLACE_IF_NOT_NULL.
Usage : métriques et compteurs consultés uniquement sous forme agrégée.
Choisir
| Duplicate Key | Unique Key | Aggregate Key | |
|---|---|---|---|
| Lignes de même clé | Toutes conservées | Dernière version | Agrégées |
| Mise à jour | Non | Oui (upsert, UPDATE) | Par agrégation |
| Détail ligne à ligne | Complet | Dernier état | Perdu |
En cas de doute, choisissez Duplicate Key.