Bigquery, объединение влево нескольких таблиц на 2 столбца в зависимости от условий - PullRequest
0 голосов
/ 30 октября 2019

У меня есть 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...