Zum Beispiel:
Name | Punktzahl |
---|---|
Computer | 1600 |
Telefon | 12 |
Telefon | 12 |
Schritte:
1. Tabellenstruktur kopieren
CREATE TABLE <new_table> LIKE <old_table>;
2. Fügen Sie deduplizierte Daten ein
insert overwrite table
<new_table> select distinct * from <old_table> ;
ps: Manchmal wird beim Ausführen dieser Anweisung der folgende Fehler gemeldet:
FAILED: SemanticException TOK_ALLCOLREF is not supported in current context
Schreiben Sie einfach alle Spaltennamen:
insert overwrite table
<new_table> select distinct name, score from <old_table> ;
2. Teilweise Datenduplizierung
Zum Beispiel:
Name | Punktzahl | Typ |
---|---|---|
Computer | 1600 | 2 |
Telefon | 12 | 1 |
Telefon | 15 | 1 |
Schritte:
1. Tabellenstruktur kopieren
CREATE TABLE <new_table> LIKE <old_table>;
2. Fügen Sie deduplizierte Daten ein
insert overwrite table <new_table>(
select t.name, t.score, t.type
from (
select
name, score, ,type, row_number() over(distribute by name sort by score ) as rn
from <old_table>
) t where t.rn=1
);
3. Zusammenfassend:
insert overwrite table <new_table> (
select <字段>
from (
select <字段>, row_number() over(distribute by <有重复的字段> sort by <重复字段的排列根据字段>) as rn
from <old_table>
) t where t.rn=1
);
-
Angehängt: Grundlegende Verwendung der ROW_NUMBER() OVER-Funktion
语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)
Einfach ausgedrückt, row_number() beginnt bei 1 und gibt eine Zahl für jeden gruppierten Datensatz zurück. Hier geht ROW_NUMBER() OVER (ORDER BY
xlh DESC) zuerst die xlh-Spalte abwärts und gibt dann eine fortlaufende Nummer für keinen xlh-Datensatz nach der absteigenden Reihenfolge zurück . Beispiel: xlh row_num
1700 1 1500 2 1085 3 710
4row_number() OVER (PARTITION BY COL1 ORDER BY COL2)
bedeutet Gruppierung nach COL1 und Sortierung nach COL2 innerhalb der Gruppe, und der von dieser Funktion berechnete Wert stellt die Sequenznummer nach Sortierung innerhalb jeder Gruppe dar (fortlaufend und eindeutig innerhalb der Gruppe )