У меня есть требование создать GROUP_ID на основе информации, представленной в двух других полях.Все ID_1 с одинаковыми значениями должны иметь уникальный Group_ID, а также все ID_2 с одинаковыми значениями должны иметь уникальный Group_ID.Group_ID не обязательно должен быть смежным.
ID_1 ID_2 GROUP_ID
X1 10 1
X1 20 1
Y1 30 2
Y2 30 2
A1 100 3
A1 200 3
B1 200 3
B1 200 3
B1 300 3
B1 300 3
C1 300 3
C1 400 3
Я использую pyspark, и я попытался решить в Spark SQL с помощью оконных функций (см. Ниже), но не смог получить желаемый результат.Пожалуйста, дайте мне знать, если есть эффективный способ решить эту проблему.В моем наборе данных> 100 миллионов строк.
RowNum ID_1 ID_2 ID_1_1 ID_2_1 GROUP_ID
1 X1 10 1 1 1
2 X1 20 1 1 1
3 Y1 30 3 3 3
4 Y2 30 4 3 3
5 A1 100 5 5 5
6 A1 200 5 5 5
7 B1 200 7 5 5
8 B1 200 7 5 5
9 B1 300 7 7 5
10 B1 300 7 7 5
11 C1 300 11 7 7
12 C1 400 11 11 7
Where
ID_1_1 = First(ROWNUM) over (Partition by ID_1 order by RowNum)
ID_2_1 = First(ID_1_1) over (Partition by ID_2 order by ID_1_1)
Group_ID = First(ID_2_1) over (Partition by ID_1_1 order by ID_2_1)
Using above approach, Rows 11 and 12 gets a group ID of 7 instead of 5.