Я новичок в Spark, и я просто хочу задать вам этот вопрос, связанный с Spark SQL. Давайте рассмотрим эту таблицу EMPLOYEE:
Employee Sub_department Department
A 105182 10
A 105182 10 (data can be redundant !)
A 114256 11
A 127855 12
A 125182 12
B 136234 13
B 133468 13
Отдел определяется как подстрока (sub_department, 0, 2) для извлечения только первых 2 цифр sub_department.
То, что я хочу показать, это разделить 3 типа сотрудников:
- Набор 1: Сотрудники, имеющие как минимум 3 разных отдела (независимо от их подотделов)
- Набор 1: сотрудники, имеющие как минимум 5 разных подотделов И 2 разных отдела
- Набор 3: Сотрудники, имеющие не менее 10 различных подотделов с одним и тем же отделом
Конкретно я понятия не имею, как это сделать даже в классическом SQL. Но, по крайней мере, я думаю, что конечный результат может быть примерно таким:
Employee Sub_department total_sub_dept Department total_dept
A 105182 4 10 3
A 114256 4 11 3
A 127855 4 12 3
A 125182 4 12 3
И "в конце концов" столбец с именем "Set", показывающий, к какому набору может принадлежать сотрудник, но это необязательно, и я боюсь, что это будет слишком тяжело для вычисления такого значения ...
Важно отобразить различные значения И счетчик для каждого из 2 столбцов (подразделение и отдел).
У меня очень большая таблица (со многими столбцами и множеством данных, которые могут быть избыточными), поэтому я решил сделать это, используя первый раздел в sub_department и сохранить его в первой таблице. Затем второй раздел в отделе (независимо от значения «sub_department») и сохраните его во второй таблице. И, наконец, сделайте внутреннее соединение двух таблиц на основе имени сотрудника.
Но я получил некоторые неправильные результаты, и я не знаю, есть ли лучший способ сделать это? или, по крайней мере, иметь оптимизацию, так как столбец отдела зависит от sub_department (чтобы сделать одну группу вместо 2).
Итак, как мне это исправить, пожалуйста? Я пытался, но кажется невозможным объединить счетчик (столбец) с одним и тем же столбцом для каждого из 2 столбцов ...
Заранее спасибо