настройка запросов на производительность - PullRequest
0 голосов
/ 18 марта 2020

Мне нужно переписать приведенный ниже запрос для оптимизации производительности. В настоящее время он потребляет> 50000 процессорных секунд. Я вижу проблему с группой по кубу. Может кто-нибудь подсказать, как его переписать

select
  "platform", "subscriptions","rptg_dt","store_front_id","engaged_subscriptions",
  "state_type","subscribers","qualified_subscribers","hardware_detail",
  "engaged_subscribers","adam_id" 
from (
  select     
    '2020-03-16' as rptg_dt,
    coalesce(abc.adam_id, 'ALL_ITEMS') as adam_id,
    trim(coalesce(abc.store_front_id, 'ALL_ITEMS')) as store_front_id,
    coalesce(abc.state_type, 'ALL_ITEMS') as state_type,
    trim(coalesce(abc.hardware_detail, 'ALL_ITEMS')) as hardware_detail,
    coalesce(abc.platform, 'ALL_ITEMS') as platform,
    abc.subscriptions as subscriptions,
    abc.subscribers as subscribers,
    abc.qualified_subscribers as qualified_subscribers,
    abc.engaged_subscribers as engaged_subscribers,
    abc.engaged_subscriptions as engaged_subscriptions
  from (
    select store_front_id as store_front_id,
      cast(cast(a.adam_id as integer) as varchar(12)) as adam_id,
      case when subscn_type = 'Harmony' then 'Harmony Trial' else trim(state_type) end as state_type,
      coalesce(hardware_detail, 'Unknown') as hardware_detail, --state_type,hardware_detail,platform
      trim(platform_name) as platform,
      count(distinct subscn_id) as subscriptions,
      count(distinct acct_id) as subscribers,
      count(distinct case when qualified_ind = 1 or subscn_owner_ind = 1 then acct_id end) as qualified_subscribers,
      count(distinct case when engaged_ind = 1 then acct_id end) as engaged_subscribers,
      count(distinct case when engaged_ind = 1 then subscn_id end) as engaged_subscriptions
    from itsp_amr.atv_state_daily a
    where calendar_type = 'F'
    and adam_id in (1472441559,1478184786)
    and a.rptg_dt = '2020-03-16'
    and state_type <>'CHURNED'
    group by cube /*(store_front_id,adam_id,state_type,hardware_detail,platform)*/ (1,2,3,4,5)
  ) abc
) mandela_temp
...