La suppression des lignes en DOUBLE dans la ruche basés sur des colonnes
J'ai un tableau de la RUCHE avec 10 colonnes où les 9 premières colonnes ont des lignes en double alors que le 10ème colonne ne va pas comme il CREATE_DATE qui aura la date à laquelle il a été créé.
Exemple:
Si j'insère 10 lignes dans la table aujourd'hui, il aura la CREATE_DATE comme date d'aujourd'hui.. Si je insérer de la même 10 rangées de nouveau demain, il aura une autre CREATE_DATE qui crée le problème de moi, en utilisant DISTINCTES..
Est-il un moyen de supprimer les enregistrements en double basé sur 9 colonnes et en ignorant le 10.
Exemple: considérons j'ai 5 colonnes dans le tableau. C'est une TABLE HIVE EXTERNE partitionné par DAYID et MARKETID. Chaque fois que les colonnes autres que CREATEDATE (comme indiqué par la Ligne 1 et 2) sont les mêmes OU si les lignes sont en double (comme indiqué par la Ligne 3 et 4) elle doit conserver à l'un de ces lignes. N'a pas d'importance dont il garde.
COL1 COL2 CREATEDATE DAYID MARKETID
A 1 20131206 20131207 1234
A 1 20131207 20131207 1234
A 1 20131206 20131207 1234
B 1 20131206 20131207 1234
B 1 20131206 20131207 1234
C 2 20131206 20131207 1234
C 2 20131207 20131207 5678
de sortie---
COL1 COL2 CREATEDATE DAYID MARKETID
A 1 20131206 20131207 1234
B 1 20131206 20131207 1234
C 2 20131206 20131207 1234
C 2 20131207 20131207 5678
Merci
Nates
- Pouvez-vous fournir des exemples de données ici et la sortie que vous voulez ?
- Exemple: considérons j'ai 5 colonnes dans le tableau. COL1, COL2 CREATEDATE DAYID MARKETID UN
Vous devez vous connecter pour publier un commentaire.
Vous pouvez effectuer les opérations suivantes :
Cette façon, vous êtes le regroupement des données par toutes les colonnes sauf les données, donc si il y a des lignes avec les mêmes valeurs dans ces colonnes, ils seront dans le même groupe, et ensuite, il suffit de "choisir" les createdate vous le voulez en utilisant une fonction d'agrégation comme max/min etc.
Bien, la ruche ne fournit pas de niveau de ligne mise à jour/suppression, par conséquent, nous pouvons éviter la duplication des données pendant le chargement des données dans des tables de base.Comme indiqué ci-dessous
Ce que nous pouvons utiliser.