Проблемы оператора SQL - PullRequest
0 голосов
/ 30 июня 2018

Я пытаюсь сделать то, что я считаю двумя дополнительными инструкциями case к SQL-запросу, и не могу понять, как добавить эти конкретные запросы.

Что я хочу, так это улучшить описание случая для имени_партнера и имя_публикатора. Прямо сейчас, если пользователь приходит из обычного поиска в магазине приложений, имя-партнера и имя-издателя будут «». Я хочу заменить «» на что-то пригодное для чтения, чтобы не было строк с пустыми данными. Что я хочу, так это улучшить оператор case уже в запросе для обоих вышеуказанных параметров, чтобы охватить Internal и Organic. Цель состоит в том, чтобы эти два поля использовались, когда канал является органическим, или внутренний вводил бы название канала вместо того, чтобы быть пустым.

Данные в исходной таблице всегда представлены в формате времени UTC, но мы используем время PST. Нужно держать его в UTC (длинная история). Все предметы являются строками.

Вот пример вывода этого.

Пример вывода

Вот мой текущий SQL

select install_date, campaign_type, channel, campaign_name, platform, partner_name, publisher_name, count (idfa)
from
(
select  
DATE(DATE_ADD(TIMESTAMP(left(timestamp_iso,19)),-7, 'HOUR')) install_date,
case when last_attributed_touch_data_tilde_feature = '' then 'organic' else last_attributed_touch_data_tilde_feature end as  campaign_type,
case when last_attributed_touch_data_tilde_channel = '' then 'organic' else last_attributed_touch_data_tilde_channel end as channel,
case when last_attributed_touch_data_tilde_campaign = '' then 'organic' else last_attributed_touch_data_tilde_campaign end as campaign_name,
case when last_attributed_touch_data_tilde_advertising_partner_name = '' then last_attributed_touch_data_tilde_channel else last_attributed_touch_data_tilde_advertising_partner_name end as partner_name,
case when last_attributed_touch_data_tilde_secondary_publisher = '' then last_attributed_touch_data_tilde_channel else last_attributed_touch_data_tilde_secondary_publisher end as publisher_name,

last_attributed_touch_type,
case when lower(user_data_platform) like 'android%' then 'Android' when user_data_platform like 'IOS%' then 'iOS' else 'Other' end as platform,
user_data_aaid,
user_data_idfa,
user_data_idfv,

case when (user_data_aaid is null or user_data_aaid = '') and (user_data_idfa = '' or user_data_idfa is null ) then user_data_idfv
when (user_data_aaid is null or user_data_aaid = '') then user_data_idfa
else user_data_aaid end as idfa,


FROM table_date_range([app_install_date_], timestamp('2018-06-23'), timestamp('2018-06-25')) --Change timestamp as required
where 1=1
and DATE(DATE_ADD(TIMESTAMP(left(timestamp_iso,19)),-7, 'HOUR')) >= '2018-06-23'
and DATE(DATE_ADD(TIMESTAMP(left(timestamp_iso,19)),-7, 'HOUR')) <= '2018-06-24'
group by 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
  order by 1 desc, 2 desc, 6 desc
  )
  group by 1, 2, 3, 4, 5, 6, 7

Я просто не уверен, как изменить или изменить мой случай, когда заявление для рекламного имени_представителя & вторичного_публикатора_имя. Я пытался это сделать, но он работает только тогда, когда канал внутренний ... Не органический. Я хочу, чтобы он обрабатывал как внутренние, так и органические.

1 Ответ

0 голосов
/ 30 июня 2018

Цель состоит в том, чтобы эти два поля ... вставить название канала вместо того, чтобы быть пустым

Сокращение:
вместо

SELECT install_date, campaign_type, channel, campaign_name, platform, 
  partner_name, publisher_name, count (idfa)   

использовать

SELECT install_date, campaign_type, channel, campaign_name, platform, 
  IF(partner_name = '', channel, partner_name) AS partner_name, 
  IF(publisher_name = '', channel, publisher_name) AS publisher_name,
  count (idfa)   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...