У меня есть 3 таблицы, которые я использую в левом соединении, чтобы получить некоторые показатели на основе даты:
create table `i-xxx.xxx.xxxxx` as
(WITH min_trial_start AS (
SELECT * FROM `i-xxx.xxx.ap_staging2` ),
most_used_feature_names AS (
SELECT
a.xxxx,
a.min_trial,
APPROX_TOP_COUNT(xx_brand_nm, 1) as most_used_platform FROM
min_trial_start a
LEFT JOIN
`i-xxx.xxx.xx_cs_video_summary` b
ON
a.xxxx=b.xxxx
AND b.day_dt BETWEEN a.min_trial
AND DATE_ADD(a.min_trial, INTERVAL 2 DAY)
WHERE
b.day_dt BETWEEN a.min_trial
AND DATE_ADD(a.min_trial, INTERVAL 2 DAY)
GROUP BY
1,2 ),
most_mpx_video AS (
SELECT
a.xxxx,
a.min_trial,
APPROX_TOP_COUNT(top_level_category_nm, 1) as most_watched_top_lvl_category,
APPROX_TOP_COUNT(category_level1_nm, 1) as most_watched_category_lvl_1,
FROM
min_trial_start a
LEFT JOIN
`i-xxxx.xxx.xx_cs_video_summary` b
ON
a.xxxx=b.xxxx
AND b.day_dt BETWEEN a.min_trial
AND DATE_ADD(a.min_trial, INTERVAL 2 DAY)
LEFT JOIN
`i-xxxx.xxx.mpx_video_xxx` mpx
ON
mpx.mpx_reference_guid=b.xxx_mpx_reference_guid
WHERE
b.day_dt BETWEEN a.min_trial
AND DATE_ADD(a.min_trial, INTERVAL 2 DAY)
AND duration_sec_qty>0
GROUP BY
1,2
),
ftag_detail AS (
SELECT
a.xxxx,
ftag_attr_1_cd, ftag_attr_2_cd,ftag_attr_3_cd,ftag_attr_4_cd,
ftag_attr_7_cd, ftag_attr_8_cd, ftag_attr_9_cd, marketing_channel_id, market_channel_name
FROM
min_trial_start a
LEFT JOIN
`i-xxxx.xxx.ftag_dim` b ON a.ftag_cd=b.ftag_id )
SELECT
all fields FROM . min_trial_start sf LEFT JOIN
most_used_feature_names
ON
sf.xxxx=most_used_feature_names.xxxx
AND
sf.min_trial=most_used_feature_names.min_trial
LEFT JOIN
most_mpx_video ON sf.xxxx=most_mpx_video.xxxx AND sf.min_trial=most_mpx_video.min_trial LEFT JOIN ftag_detail ON sf.xxxx=ftag_detail.xxxx
Я получил несколько строк с одними и теми же данными при выполнении этого запроса, мой вопрос - почему я получил повторяющиеся строкис точными данными? и как я могу изменить этот запрос, чтобы возвращать только строки с различными min_trial и xxxx?