Aller au contenu principal
SaaS · On-premise

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 KeyUnique KeyAggregate Key
Lignes de même cléToutes conservéesDernière versionAgrégées
Mise à jourNonOui (upsert, UPDATE)Par agrégation
Détail ligne à ligneCompletDernier étatPerdu

En cas de doute, choisissez Duplicate Key.