Моя проблема в том, что я начинаю получать дублирование данных после добавления некоторой логики (safe_divide) в свой большой запрос # стандартный оператор SQL? Эта проблема возникает только после того, как я добавлю в этой строке
SAFE_DIVIDE( u.weekly_capacity/25200, 1) AS TargetDailyHours
Если я не решу это, мне, возможно, придется написать всю логику в студии данных, так как текущий рабочий процесс - Harvest -> Stitch-> Bigquery-> data studio
В этом запросе я использую левое объединение таблицы time_entires
для MAX (updated_at) или самой последней записи времени для полного объединения таблицы users
, где пользователь в данный момент активен. Я хочу на самом деле манипулировать данными, чтобы я мог найти FTE фактических рабочих часов / weekly_capacity. Но каждый раз, когда я пишу логику или большие функции запросов, я получаю дубликаты в результатах?
SELECT DISTINCT outer_e.hours, outer_e.id, outer_e.updated_at,
outer_e.spent_date, outer_e.created_at,
outer_e.client_id, outer_e.user_id AS harvest_userid,
u.is_admin, u.first_name, u.is_active, u.id AS user_id,
u.weekly_capacity,
client.name as names,
--SAFE_DIVIDE( u.weekly_capacity /25200, 1) AS TargetDailyHours
FROM
(SELECT e.id, MAX(e.updated_at) AS updated_at FROM `harvest-experiment.harvest.time_entries` AS e
GROUP BY e.id LIMIT 1000
) AS inner_e
LEFT JOIN `harvest-experiment.harvest.time_entries` AS outer_e
ON inner_e.id = outer_e.id AND inner_e.updated_at = outer_e.updated_at
FULL JOIN ( SELECT DISTINCT id, first_name, weekly_capacity, is_active, is_admin FROM `harvest-experiment.harvest.users`WHERE is_active = true
) AS u
ON outer_e.user_id = u.id
JOIN (SELECT DISTINCT id ,
name FROM `harvest-experiment.harvest.clients`) AS client
ON outer_e.client_id = client.id
В столбце «Емкость за неделю в результатах» начнут отображаться люди с разными номерами за неделю, например:
Row hours id updated_at spent_date created_at client_id harvest_userid is_admin first_name is_active user_id weekly_capacity TargetDailyHours
1
0.22
995005338
2019-05-07 15:14:13 UTC
2019-04-29 00:00:00 UTC
2019-04-29 15:30:40 UTC
6864491
2622223
false
Nolan
true
2622223
72000
2.857142857142857
2
0.22
995005338
2019-05-07 15:14:13 UTC
2019-04-29 00:00:00 UTC
2019-04-29 15:30:40 UTC
6864491
2622223
false
Nolan
true
2622223
129600
5.142857142857143
В этом случае пользователь Nolan отобразит двухкратные записи с порядковым номером 995005338 с 0,22 часами, а число weekly_capacity изменится с 129600 в ROW: от 2 до 72000 в ROW: 1