Data warehousingOSS
Bien que ClickHouse soit conçu pour des charges de travail analytiques à fort volume, il est possible, dans certains cas, de modifier ou de
supprimer des données existantes. Ces opérations sont appelées « mutations » et s’exécutent à l’aide de la commande ALTER TABLE.
Mise à jour des données
ALTER TABLE...UPDATE pour mettre à jour des lignes d’une table :
<expression> est la nouvelle valeur de la colonne pour laquelle <filter_expr> est satisfait. <expression> doit être du même type de données que la colonne ou pouvoir être convertie dans ce même type à l’aide de l’opérateur CAST. <filter_expr> doit renvoyer une valeur UInt8 (zéro ou non nulle) pour chaque ligne de données. Plusieurs instructions UPDATE <column> peuvent être combinées dans une seule commande ALTER TABLE, séparées par des virgules.
Exemples:
-
Une mutation comme celle-ci permet de mettre à jour
visitor_idsen les remplaçant par de nouveaux identifiants à l’aide d’une recherche dans un dictionnaire: -
Modifier plusieurs valeurs dans une seule commande peut être plus efficace que d’exécuter plusieurs commandes:
-
Les mutations peuvent être exécutées
ON CLUSTERpour les tables shardées:
Il n’est pas possible de mettre à jour les colonnes qui font partie de la clé primaire ou de la clé de tri.
Suppression de données
ALTER TABLE pour supprimer des lignes :
<filter_expr> doit renvoyer une valeur UInt8 pour chaque ligne.
Exemples
-
Supprimez tous les enregistrements dont une colonne figure dans un tableau de valeurs :
-
Que modifie cette requête ?
Pour supprimer toutes les données d’une table, il est plus efficace d’utiliser la commande
TRUNCATE TABLE [<database].]<table>. Cette commande peut également être exécutée avec ON CLUSTER.DELETE pour plus de détails.
Suppressions légères
DELETE FROM, appelée suppression légère. Les lignes supprimées sont immédiatement marquées comme telles et seront automatiquement exclues de toutes les requêtes suivantes ; vous n’avez donc pas besoin d’attendre la fusion des parts ni d’utiliser le mot-clé FINAL. Le nettoyage des données s’effectue de manière asynchrone en arrière-plan.
hits dont la colonne Title contient le texte hello :
- Cette fonctionnalité est disponible uniquement pour la famille de moteurs de table
MergeTree. - Les suppressions légères sont synchrones par défaut et attendent que toutes les répliques aient traité la suppression. Ce comportement est contrôlé par le
paramètre lightweight_deletes_sync.