Перейти к содержанию

Примеры запросов универсальной статистики

Переходы по ссылкам

Суммарное количество переходов по ссылкам

  • по каждому выпуску название выпуска, название группы, дата выпуска, число кликов, число писем; сортировка по дате выпуска
{

  "select" : ["issue.name" ,"issue.group.name" ,"issue.dt" ,"issue.clicked" ,"issue.members"]

 ,"order"  : ["issue.dt"]

}
  • с фильтром по коду группы
{

  "select" : ["issue.name" ,"issue.group.name" ,"issue.dt" ,"issue.clicked" ,"issue.members"]

 ,"filter" : [{ "a" : "issue.group.gid", "op" : "==" , "v" : "gdfhdfh" }]

 ,"order"  : ["issue.dt"]

}
  • с фильтром по коду группы и дате выпуска с 2011-03-17 11:30:27
{

  "select" : ["issue.name" ,"issue.group.name" ,"issue.dt" ,"issue.clicked" ,"issue.members"]

 ,"filter" : [ {"a" : "issue.group.gid", "op" : "==", "v" : "gdfhdfh" }
             , {"a" : "issue.dt", "op" : ">=", "v" : "2011-03-17 11:30:27"}]

}
  • с фильтром по id выпуска
{

  "select" : ["issue.name" ,"issue.group.name" ,"issue.dt" ,"issue.clicked" ,"issue.members"]

 ,"filter" : [{"a" : "issue.id", "op" : "==", "v" : 15 }]

 ,"order"  : ["issue.dt"]

}
  • с фильтром по коду группы и дате выпуска
{

  "select" : ["issue.name" ,"issue.group.name" ,"issue.dt" ,"issue.clicked" ,"issue.members"]

 ,"filter" : [ {"a" : "issue.group.gid", "op" : "==", "v" : "gdfhdfh" }
             , {"a" : "issue.dt", "op" : "==", "v" : "2011-03-17 11:30:27" }]

 ,"order"  : ["issue.dt"]

}

Переходы по ссылкам за период с разбивкой по времени

  • по дням
{

  "select" : ["click.dt:YD" ,"count(*)"]

 ,"order"  : ["click.dt:YD"]

}
  • по месяцам
{

  "select" : ["click.dt:YM" ,"count(*)"]

 ,"order"  : ["click.dt:YM"]

}
  • по годам
{

  "select" : ["click.dt:YY" ,"count(*)"]

 ,"order"  : ["click.dt:YY"]

}
  • по месяцам с фильтром по дате клика
{

  "select" : ["click.dt:YD" ,"count(*)"]

 ,"filter" : [ { "a" : "click.dt:YM", "op" : ">=", "v" : "2011-05" }
             , { "a" : "click.dt:YM", "op" : "<=", "v" : "2012-05" } ]

 ,"order"  : ["click.dt:YD"]

}
  • по месяцам с фильтром по дате клика
{

  "select" : ["click.dt:YM" ,"count(*)"]

 ,"filter" : [ { "a" : "click.dt:YY", "v" : "2011", "op" : ">=" }
             , { "a" : "click.dt:YY", "op" : "<=", "v" : "2010" } ]

 ,"order"  : ["click.dt:YM"]

}
  • по дням с фильтром по id выпуска и по дате клика
{

  "select" : ["click.dt:YD" ,"count(*)"]

 ,"filter" : [ { "a" : "issue.id", "op":"==", "v" : 15}
             , { "a" : "click.dt:YM", "op" : "<=", "v" : "2011-05" }]

 ,"order"  : ["click.dt:YD"]

}
  • по дням с фильтром по дате выпуска
{

  "select" : ["click.dt:YD" ,"count(*)"]

 ,"filter" : [{"a" : "issue.dt:YY", "op":">", "v" : "2011"} ]

 ,"order"  : ["click.dt:YD"]

}
  • по дням с фильтром по коду группы и дате выпуска
{

  "select" : ["click.dt:YD" ,"count(*)"]

 ,"filter" : [ { "a" : "issue.dt:YY", "op":">", "v" : "2011"}
             , { "a" : "issue.group.gid", "op" : "==", "v" : "gdfhdfh" }]

 ,"order"  : ["click.dt:YD"]

}

Переходы по каждой ссылке в выпуске

  • все
{

  "select" : ["click.link.url" ,"count(*)"]

 ,"order"  : ["click.link.url"]

}
  • с фильтром по дате клика
{

  "select" : ["click.link.url" ,"count(*)"]

 ,"order"  : ["click.link.url"]

 ,"filter" : [ { "a" : "click.dt:YY", "op" : "==", "v" : "2010" } ]

}
  • с фильтром по дате клика и id выпуска
{

  "select" : ["click.link.url" ,"count(*)"]

 ,"filter" : [ { "a" : "click.dt:YY", "op" : "==", "v" : "2011" }
             , { "a" : "issue.id", "op" : "==", "v" : "16" } ]

 ,"order"  : ["click.link.url"]

}
  • с фильтром по дате клика, коду группы и дате выпуска
{

  "select" : ["click.link.url" ,"count(*)"]

 ,"order" : ["click.link.url"]

 ,"filter" : [ { "a" : "click.dt:YY", "op" : ">=", "v" : "2011" }
             , { "a":"issue.group.gid", "op":"==", "v":"all"}
             , { "a" : "issue.dt", "op" :  "==", "v" : "2010-01-26 16:51:26" } ]

}

Переходы по определенной ссылке

  • с группировкой по дням
{

  "select" : ["click.dt:YD" ,"count(*)"]

 ,"filter" : [ {"a" : "click.link.url", "op" : "==", "v" : "http://www.disney.com/" }]

}
  • с группировкой по дням c фильтром и по дате клика
{

  "select" : ["click.dt:YD" ,"count(*)"]

 ,"filter" : [ {"a" : "click.link.url", "op" : "==", "v" : "http://www.disney.com/" }
             , { "a" : "click.dt", "op" : ">=", "v" : "2011-05-11 14:25:54" }]

}
  • с группировкой по дням с фильтром по id группы ссылок и дате клика
{

  "select" : ["click.dt:YD" ,"count(*)"]

 ,"filter" : [ {"a" : "click.linkgroup.id", "op" : "==", "v" : "16" }
             , { "a" : "click.dt", "op" : ">=", "v" : "2011-05-11 14:25:54" }]

}
  • с группировкой по дням с фильтром по названию группы ссылок и дате клика
{

  "select" : ["click.dt:YD" ,"count(*)"]

 ,"filter" : [ {"a" : "click.linkgroup.name", "op" : "==", "v" : "Профиль all" }
             , {"a" : "click.dt", "op" : ">=", "v" : "2011-05-11 14:25:54" }]

}

Переходы определенного подписчика по ссылкам

  • с группировкой по дням и по ссылкам
{

  "select" : ["click.dt:YD" ,"click.link.url" ,"count(*)"]

 ,"filter" : [{"a" : "member.email", "op" : "==", "v" : "vadim\@iprojects.ru" }]

}
  • с фильтром по дате клика
{

  "select" : ["click.dt:YD","click.link.url ","count(*)"]

 ,"filter" : [ {"a" : "member.email", "op" : "==", "v" : "ask\@subscribe.ru" }
             , { "a" : "click.dt:Ym", "op" : ">=", "v" : "2011-08-10 13:30" } ]

}

Чтения

Все чтения выпуска

  • по каждому выпуску название выпуска, название группы, дата выпуска, число чтений, число писем
{

  "select" : ["issue.name", "issue.group.name" ,"issue.dt" ,"issue.readed" ,"issue.members"]

}
  • с фильтром по коду группы и дате выпуска
{

  "select" : ["issue.name", "issue.group.name" ,"issue.dt" ,"issue.readed" ,"issue.members"]

 ,"filter" : [ {"a" : "issue.group.gid", "op" : "==", "v" : "import20110627175254" }
             , { "a" : "issue.dt", "op" : "==", "v" : "2011-06-28 13:54:48" } ]

}

Чтения выпуска за период с разбивкой по времени (по дням, месяцам, годам)

  • по годам
{

  "select" : ["read.dt:YY" ,"count(*)"]

}
  • по месяцам
{

  "select" : ["read.dt:YM" ,"count(*)"]

}
  • по дням
{

  "select" : ["read.dt:YD" ,"count(*)"]

}
  • по дням с фильтром по коду группы и дате выпуска
{

  "select" : ["read.dt:YD" ,"count(*)"]

 ,"filter" : [ {"a" : "issue.group.gid", "op" : "==", "v" : "import20100720185533" }
             , { "a" : "issue.dt", "op" : "==", "v" : "2010-10-18 17:17:17" }]

}
  • по дням с фильтром по дате выпуска
{

  "select" : ["read.dt:YD" ,"count(*)"]

 ,"filter" : [{"a" : "issue.dt:Ym", "op" : ">", "v" : "2010-10-18 17:30" }]

}

Зафиксированные чтения выпусков подписчиками

  • дата чтения, email
{

 "select" : ["read.dt" ,"member.email"]

}
  • c фильтром по дате чтения и сортировкой по дате чтения
{

  "select" : ["read.dt" ,"member.email"]

 ,"filter" : [ {"a":"read.dt:YD", "op" : "<=", "v" : "2010-10-20" }]

 ,"order"  : [ "read.dt"]

}
  • c фильтром по дате чтения, коду группы и дате выпуска, сортировкой по дате чтения
{

  "select" : ["read.dt" ,"member.email"]

 ,"filter" : [ { "a" : "read.dt:YD", "op" : "<=", "v" : "2010-10-20" }
             , { "a" : "issue.group.gid", "op" : "==", "v" : "import20100720185533" }
             , { "a" : "issue.dt", "op" : "==", "v" : "2010-10-18 17:17:17" }
             ]

 ,"order"  : [ "read.dt"]

}

Доставка выпусков

Успешная доставка

  • название выпуска, группа, дата выпуска, количество доставлено, количество отосланных писем
{

  "select" : ["issue.name" ,"issue.group.name" ,"issue.dt" ,"issue.deliv_ok" ,"issue.members"]

 ,"filter" : [ { "a" : "deliv.status", "op" : ">", "v" : "0" } ]

}
  • с фильтром по коду группы
{

  "select" : ["issue.name","issue.group.name","issue.dt","issue.deliv_ok","issue.members"]

 ,"filter" : [ { "a" : "deliv.status", "op" : ">", "v" : "0" }
             , { "a" : "issue.group.gid", "op" : "==", "v" : "masssending" } ]

}
  • с фильтром по коду группы и дате выпуска
{

  "select" : ["issue.name","issue.group.name","issue.dt","issue.deliv_ok","issue.members"]

 ,"filter" : [ { "a" : "deliv.status", "op" : ">", "v" : "0" }
             , { "a" : "issue.group.gid", "op" : "==", "v" : "masssending" }
             , { "a" : "issue.dt", "op" : "==", "v" : "2010-05-31 16:23:47" } ]

}

Ошибки при доставке выпусков

  • название выпуска, дата выпуска, емайл, код ошибки
{

  "select" : ["issue.name","issue.group.name","issue.dt","member.email","deliv.status"]

 ,"filter" : [ { "a" : "deliv.status", "op" : "<", "v" : "0" } ]

}
  • с фильтром по коду группы и дате выпуска
{

  "select" : ["member.email","deliv.status"]

 ,"filter" : [ { "a" : "deliv.status", "op" : "<", "v" : "0" }
             , { "a" : "issue.group.gid", "op" : "==", "v" : "p212" }
             , { "a" : "issue.dt", "op" : "==", "v" : "2010-12-31 23:02:29" } ]

}

Доставка выпусков определенному подписчику

  • название выпуска, дата выпуска, статус доставки
{

  "select" : ["issue.name","issue.group.name","issue.dt","deliv.status"]

 ,"filter" : [ { "a" : "member.email", "op" : "==", "v" : "test@test.ru" } ]

}
  • с фильтром по дате выпуска
{

  "select" : ["issue.name","issue.group.name","issue.dt","deliv.status"]

 ,"filter" : [ { "a" : "member.email", "op" : "==", "v" : "test@test.ru"}
             , { "a" : "issue.dt:YM", "op" : ">=", "v" : "2010-12" } ]

}

Замена вызова stat.issue

{

  "select" : ["issue.id","issue.group.gid","issue.dt","member.email","deliv.status"]

 ,"filter" : [ {"a" : "issue.dt:YM", "op" : ">=", "v" : "2011-08" }
             , {"a":"deliv.status", "op":"<","v":"0"} ]

 ,"order"  : ["issue.id","issue.dt","member.email"]

}
{

  "select" : ["member.email","count(deliv.*)"]

 ,"filter" : [ {"a" : "issue.dt:YM", "op" : ">=", "v" : "2011-08" }
             , { "a":"deliv.status", "op":"<","v":"0"} ]

 ,"order"  : ["member.email"]

}
{

  "select" : ["member.email","count(deliv.*)"]

 ,"filter" : [{"a" : "issue.dt:YM", "op" : ">=", "v" : "2011-08" }]

 ,"order"  : ["member.email"]

}

Сводные отчеты

Суммарное число чтений, кликов по дням

  • сортировка по убыванию даты
{

  "select" : ["*.dt:YD", "count(click)", "count(read)" ]

 ,"order"  : ["-*.dt:YD"]

}

Суммарное число чтений, кликов по месяцам с 2021 года

  • сортировка по убыванию даты
{

  "select" : ["*.dt:YM", "count(click)", "count(read)" ]

 ,"filter" : [{"a":"*.dt:YY", "op" : ">=", "v" : "2021" }]

 ,"order"  : ["-*.dt:YM"]

}

Суммарное число много чего по дате события

  • Суммарное число отправленных писем, успешно доставленных писем, чтений, уникальных читавших, кликов, уникальных кликавших по месяцам, сортировка по убыванию даты

Указание*.dt:YMограничиваетдату события- т.е. дату клика, чтения, выпуска. Даты событий не взаимосвязаны и клики и чтения берутся все случившиеся

в указанный интервал. Сравните со следующим отчётом.

{

  "select" : ["*.dt:YM","sum(issue.members)","count(deliv)","count(read)","count(unique read.member.id)","count(click)", "count(unique click.member.id)"]

 ,"filter" : [ {"a" : "*.dt:YM", "op" : ">=", "v" : "2021-06" }
             , {"a" : "deliv.status", "op" : ">", "v" : "0" }]

 ,"order"  : ["-*.dt:YM"]

}

Суммарное число много чего для даты выпуска

  • Отправленных писем, доставленных успешно писем, чтений, кликов по выпускам по месяцам, сортировка по убыванию даты_

Указание*.issue.dt:YMограничиваетдату выпуска- т.е. клики и чтения считаются только от выпусков указанного интервала

{

  "select" : ["issue.dt:YM","sum(issue.members)","sum(issue.deliv_ok)","sum(issue.clicked)","sum(issue.readed)"]

 ,"filter" : [ {"a" : "issue.dt:YM", "op" : ">=", "v" : "2021-06" } ]

 ,"order"  : ["issue.dt:YM"]

}

Статистика активности по выпускам

  • название выпуска, дата выпуска, название группы, отправленных писем, доставленных успешно писем, доставленных не успешно писем, чтений всего, чтений уникальных, кликов всего, кликов уникальных сортировка по возрастанию даты выпуска_

Быстрый вызов по заранее подготовленным данным с небольшим (5-10 минут) отставанием от реального времени

{

  "select" : [ "issue.name", "issue.dt", "issue.group.name", "issue.members",
             , "issue.deliv_ok", "issue.deliv_bad", "issue.clicked", "issue.u_clicked",
             , "issue.readed", "issue.u_readed", "issue.unsubed" 
             ]

 ,"filter" : [ {"a" : "issue.dt", "op" : ">=", "v" : "2021-06-01 00:00:00" } ]

 ,"order"  : [ "issue.dt" ]

}

Аналогичный, но заметно более медленный на больших списках, вызов по данным в реальном времени

{

  "select" : [ "*.issue.name", "*.issue.dt", "*.issue.group.name", "*.issue.members" 
             , "count(deliv_ok)", "count(deliv_bad)", "count(click)", "count(unique click.member.id)" 
             , "count(read)", "count(unique read.member.id)" 
             ]

 ,"filter" : [ {"a" : "*.issue.dt", "op" : ">=", "v" : "2021-06-01 00:00:00" } ]

 ,"order"  : ["*.issue.dt"]

}

Запрос с объединением двух единичных запросов

Для каждого участника выпуска номер 50 выбирается его адрес, дата внесения в базу, дата выпуска рассылки, статус доставки, дата первого клика в письме рассылки, общее число кликов в письме

Уникальный ключ составлен из номера получателя и номера выпуска. В данном случае это избыточно (номер выпуска у всех один), но если запрос подразумевает охват нескольких выпусков, то это необходимо. Вместо номера получателя можно было бы использовать его адрес (он так есть в выборке), но тогда будет выполняться дольше, так как числовое поле (номер) в уникальном ключе работает быстрее чем строчное (адрес).

{
 "action":"stat.uni" 

,"joinby" : 2 -- размер ключа

,"join" : [

   {  -- Первый запрос. На основе списков доставки выбираются участники выпуска 50 и их данные
    "select":[
             -- уникальный ключ
              "deliv.member.id" 
             ,"deliv.issue.id" 

             -- данные об адресе и доставке
             ,"deliv.member.email" 
             ,"deliv.member.anketa.member.create.time" 
             ,"deliv.issue.dt" 
             ,"deliv.status" 
             ]

   ,"filter":[
              {"a":"deliv.issue.id","op":"==","v":"50"}
             ]
  }
,

  {   -- Второй вопрос. Данные о кликах выпуска 50
   "select":[
            -- уникальный ключ
             "click.member.id" 
            ,"click.issue.id" 

            -- данные о первом клике и их количество
            ,"min(click.dt)" 
            ,"count(*)" 
            ]

  ,"filter":[
             {"a":"click.issue.id","op":"==","v":"50"}
            ]
  }
       ]

,"caption":[
           -- Один раз колонки уникального ключа

            "Номер получателя" 
           ,"Номер рассылки" 

           -- Колонки первого запроса

           ,"Адрес получателя" 
           ,"Дата регистрации" 
           ,"Дата рассылки" 
           ,"Статус доставки" 

           -- Колонки второго запроса

           ,"Дата первого клика" 
           ,"Число кликов" 
           ]
}

В результате получится примерно следующее.

Пользователь второй из строки не кликал, что отражается как null в соответствующий колонках.

Номер получателя Номер рассылки Адрес получателя Дата регистрации Дата рассылки Статус доставки Дата первого клика Число кликов
34 50 xxx@kovalyuk.ru 2013-08-27 13:49:14 2013-10-04 16:26:03 1 2013-10-04 16:45:28 1
21 50 yyy@avon.com 2013-08-27 10:07:17 2013-10-04 16:26:03 1 null null
78 50 zzz@gmail.com 2013-08-27 10:36:32 2013-10-04 16:26:03 1 2013-10-04 16:45:28 3