use hahn;
PRAGMA yt.InferSchema;

$last_table = Python::is_yesterday("(String)->Bool",
@@
import datetime
yesterday = str(datetime.date.today() - datetime.timedelta(days=3))
is_yesterday = lambda day: day == yesterday
@@);

$script_rnd = @@
import random
import math
def get_log(x):
    rnd = random.random()
    log_rnd = math.log(rnd)
    return log_rnd
@@;
    
$script_host = @@
from urlparse import urlparse
def get_host(rec):
    try:
        host = urlparse(rec).netloc
        if host.startswith('www.'):
            host = host[4:]
        else:
            host = host
        return(host)
    except:
        pass
@@;




$getHost = Python::get_host("(String?)->String", $script_host);
$getLog = Python::get_log("(String?)->Double", $script_rnd);


$dzenClicks = (select zen_clicks.url as url, 
zen_clicks._other{"url_type"} as url_type,
zen_clicks.event as event,
zen_clicks.product as product
from FILTER ([//logs/zen-stats-log/1d], $last_table) as zen_clicks
where zen_clicks.event in ('click') 
and  zen_clicks.product in 
    ('abr_native',
    'web',
    'zenkit',
    'apad_native',
    'ios_native',
    'ipad_native',
    'launcher_native',
    'site_mobile',
    'zen_app',
    'launcher') 
and zen_clicks._other{"url_type"} in ('turbo'));

$zen_table = (select $getHost(zen_urls.url)as host, 
zen_urls.saas_key as turbo_url,
zen_urls.url as url
from [//home/search-functionality/zen_sideblock/zen_urls] as zen_urls);

$join_table = (select 
zenClicks.url as dzen_url,
zenClicks.event as event,
zenClicks.product as product, 
zenClicks.url_type as url_type,
zenUrls.host as host,
zenUrls.turbo_url as turbo_url,
zenUrls.url as url
from $dzenClicks as zenClicks
inner join
$zen_table as zenUrls
on
zenClicks.url = zenUrls.url);

$match_table = (select host as host, 
turbo_url  as left_url, 
dzen_url as right_url, count(*) as cnt
from $join_table
group by host, turbo_url, dzen_url
order by cnt DESC);


select $getLog(right_url)/cnt as ceil, cnt, host, right_url, left_url
from $match_table as mt
order by $getLog(right_url)/cnt DESC