Ajouter une colonne dans une table dans HIVE QL
Je suis en train d'écrire un code dans la RUCHE pour créer un tableau composé de 1300 lignes et 6 colonnes:
create table test1 as SELECT cd_screen_function,
SUM(access_count) AS max_count,
MIN(response_time_min) as response_time_min,
AVG(response_time_avg) as response_time_avg,
MAX(response_time_max) as response_time_max,
SUM(response_time_tot) as response_time_tot,
COUNT(*) as row_count
FROM sheet WHERE ts_update BETWEEN unix_timestamp('2012-11-01 00:00:00') AND
unix_timestamp('2012-11-30 00:00:00') and cd_office = '016'
GROUP BY cd_screen_function ORDER BY max_count DESC, cd_screen_function;
Maintenant, je veux ajouter une autre colonne comme access_count1
qui consiste en une valeur unique pour toutes les 1300 lignes et la valeur sera sum(max_count)
. max_count est une colonne dans ma table existante. Comment je peux faire? Je suis en train de modifier la table par le présent code ALTER TABLE test1 ADD COLUMNS (access_count1 int) set default sum(max_count);
source d'informationauteur user2532312
Vous devez vous connecter pour publier un commentaire.
Vous impossible d'ajouter une colonne avec une valeur par défaut dans la Ruche. Vous avez la droit de la syntaxe pour l'ajout de la colonne
ALTER TABLE test1 ADD COLUMNS (access_count1 int);
vous avez juste besoin de se débarrasser dedefault sum(max_count)
. Pas de changements pour que les fichiers de sauvegarde de votre table se produire en raison de l'ajout de la colonne. La ruche gère le "manque" de données par l'interprétation deNULL
comme la valeur de chaque cellule de cette colonne.Alors maintenant, vous avez le problème d'avoir à remplir la colonne. Malheureusement, dans la Ruche vous avez essentiellement besoin de réécrire l'ensemble du tableau, cette fois avec la colonne remplie. Il peut être plus facile pour réexécuter la requête initiale avec la nouvelle colonne. Ou vous pouvez ajouter la colonne à la table que vous avez maintenant, puis sélectionnez l'ensemble de ses colonnes, plus la valeur de la nouvelle colonne.
Vous avez également la possibilité de toujours
COALESCE
la colonne par défaut de votre choix et de le laisserNULL
pour l'instant. Cette option échoue lorsque vous souhaitezNULL
avoir un sens distinct de par défaut de votre choix. Il faut aussi dépendent de toujours se souvenir deCOALESCE
.Si vous êtes très confiant dans vos capacités à traiter avec les fichiers de la sauvegarde de la Ruche, vous pouvez également modifier directement à ajouter par défaut. En général, je déconseille ce parce que la plupart du temps, il sera plus lent et plus dangereux. Il pourrait y avoir quelques cas où il a un sens bien, alors je l'ai inclus cette option pour l'exhaustivité.