Skip to content

Instantly share code, notes, and snippets.

@loguntsov
Created September 29, 2017 11:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save loguntsov/e63c18ddbdc75937b3522ff2bb7c048c to your computer and use it in GitHub Desktop.
Save loguntsov/e63c18ddbdc75937b3522ff2bb7c048c to your computer and use it in GitHub Desktop.

Язык построения отчетов

ТЕКСТ ВЫДЕЛЕННЫЙ КУРСИВОМ НЕ ЯВЛЯЕТСЯ РЕАЛИЗОВАННЫМ В ДАННОЙ ВЕРСИИ. БУДЕТ РЕАЛИЗАЦИЯ В ДАЛЬНЕЙШЕМ (ЕСЛИ НЕОБХОДИМО)

Предназначен для разработки запросов к трекеру для построения отчетов в различных разрезах.

Пример правил:

// ОТЧЕТ ПО ГРУППЕ "Фактор потери веса"
/*
	Это может быть многострочный комментарий.
*/
!ОТЧЕТ "Фактор потери веса по странам"
!ПО ГЕО
!ВЫЧИСЛИТЬ
	КОНВЕРСИЯ = ОКРУГЛИТЬ ( ЛИДЫ.ДОХОД / КЛИКИ.КОЛИЧЕСТВО_УНИКАЛЬНЫЕ * 100 )
    [ !НАЗВАНИЕ "Конверсия" ],
	ПРОДАЖИ = ЛИДЫ.КОЛИЧЕСТВО
    [ !НАЗВАНИЕ "Продажи" ]
!ПОКАЗАТЬ
	КЛИКИ.НАЗВАНИЕ_КАМПАНИИ,
	ЛИДЫ.ДОХОД,
	ЛИДЫ.КОЛИЧЕСТВО,
	КЛИКИ.КОЛИЧЕСТВО_УНИКАЛЬНЫЕ,
	КОНВЕРСИЯ,
	ПРОДАЖИ
!ГДЕ
	ИД_ГРУППЫ = 68
!ФИЛЬТРОВАТЬ
	КОНВЕРСИЯ > 0

Показать отчет с именем "Фактор потери веса по странам" в разрезе СТРАНЫ (ГЕО) для группы - Фактор потери веса (ID группы = 68)

Отчет будет иметь 2 вычисляемые колонки (КОНВЕРСИЯ и ПРОДАЖИ), с заголовками Конверсия и Продажи соотвественно.

Будут показаны следующие колонки в порядке пересичления: КЛИКИ.НАЗВАНИЕ_КАМПАНИИ, ЛИДЫ.ДОХОД, ЛИДЫ.КОЛИЧЕСТВО, КЛИКИ.КОЛИЧЕСТВО_УНИКАЛЬНЫЕ, КОНВЕРСИЯ, ПРОДАЖИ

Показывать только строки для которых КОНВЕРСИЯ > 0, остальные игнорировать.

Сущности

Существуют следующие сущности:

ЧИСЛА - обычные целые или дробные числа.

'СТРОКИ' - каждая строка начинается с кавычки (') или двойной кавычки (") и заканчивается идентичным символом. Например:

  • 'Это строка'
  • "Это тоже строка"
  • "Это не правильная строка' (будет выдана ошибка)
  • 'Это тоже неправильная строка" (будет выдана ошибка)

[ СПИСКИ ] - представляют собой перечисления строк или чисел. Список заключается в квадратные скобки '[',']', элементы отделяются запятой (,). Например:

  • ['яблоко','груша','цифра'] -- список строк
  • [ 1,2,3,4,5 ] -- список чисел

ИДЕНТИФИКАТОРЫ -- строки, которые начинаются с любого буквенного символа (А-ЯA-Z) и содержащие буквы, цифры, знаки подчеркивания, %. Идентификаторы предназначены для обозначения колонок, сущностей, встроенных функций.

  • ЛИДЫ.ДОХОД - адресует колонку ДОХОД у сущности ЛИДЫ в требуемом разрезе.
  • КОНВЕРСИЯ - адресует вычисляемую колонку
  • ОКРУГЛИТЬ ( [ВЫРАЖЕНИЕ] ) - адресует функцию ОКРУГЛИТЬ, которая применяется к ВЫРАЖЕНИЕ.

!ЗАРЕЗЕРВИРОВАННЫЕ СЛОВА - начинаются со знака ! (восклицание) и предназначены для адресации различных секций в запросе.

Зарезервированными словами являются:

  • !REPORT
  • !ОТЧЕТ
  • !SHOW
  • !ПОКАЗАТЬ
  • !CALC
  • !ВЫЧИСЛИТЬ
  • !TITLE
  • !НАЗВАНИЕ
  • !DESCRIPTION
  • !ОПИСАНИЕ
  • !FILTER
  • !ФИЛЬТРОВАТЬ
  • !BY
  • !ПО
  • !WHERE
  • !ГДЕ
  • !HAVING
  • !ИТОГИ
  • !TOTAL

[[ ТИП "Подпись к полю ввода:" ]] --- значения для подстановки. В запросе могут встречаться [[ ... ]] поля подстановки, которые позволяют описывать в запросе автоматически генерируемын HTML-странице поля. "Подпись к полю ввода:" -- является опциональной строкой.

Поддерживаются следующие ТИПЫ подстановок:

  • ГРУППА -- список групп (результат - ИД_ГРУППЫ)
  • КАМПАНИЯ -- список кампаний (результат - ИД_КАМПАНИИ)
  • ДАТА -- дата для чего либо (результат - ДАТА)
  • ПАРТНЕРКА -- список партнерок (результат - ИД_ПАРТНЕРКИ)
  • ЧИСЛО -- обычное число (результат - ЧИСЛО)
  • СТРОКА - простая строка (результат - СТРОКА)
  • СТРАНА -- список стран (результат - Название страны )
  • ИТОГИ_ПО -- список итоговых разрезов для динамической подстановки в !ИТОГИ !ПО.

Примеры использования:

!ИТОГИ !ПО [[ ИТОГИ_ПО ]]
[[ ГРУППА "Укажите группу: ]]

Пример использования в запросах:

!ОТЧЕТ "Фактор потери веса для русского трафика"
!ПО КАМПАНИИ
!ВЫЧИСЛИТЬ
	КОНВЕРСИЯ = ОКРУГЛИТЬ ( ЛИДЫ.ДОХОД / КЛИКИ.КОЛИЧЕСТВО_УНИКАЛЬНЫЕ * 100 )
		[ !НАЗВАНИЕ "Конверсия" ]
!ПОКАЗАТЬ
	КЛИКИ.НАЗВАНИЕ_КАМПАНИИ,
	ЛИДЫ.ДОХОД,
	КЛИКИ.КОЛИЧЕСТВО_УНИКАЛЬНЫЕ,
	КОНВЕРСИЯ
!ГДЕ
	ИД_ГРУППЫ = [[ ГРУППА "Выберите группу:" ]] И СТРАНА = 'Russian Federation'
!ИТОГИ !ПО [[ ИТОГИ_ПО ]]
!ФИЛЬТРОВАТЬ
	КОНВЕРСИЯ > [[ ЧИСЛО "Порог конверсии:" ]]

СЕКЦИИ

Запрос состоит из секций. В общем случе синтаксис запроса следующий:

!ОТЧЕТ "Название отчета"
!ПО [идентификатор разреза по которуму строится отчет]

Далее могут следовать любые секции в любом порядке:

!ВЫЧИСЛИТЬ <- секция для описания вычисляемых полей в отчете
	[список полей для вычисления]

Список полей через запятую.

[элемент из списка полей для вычисления] = ИДЕНТИФИКАТОР КОЛОНКИ [ !НАЗВАНИЕ "Название колонки в таблице"]

!ПОКАЗАТЬ <- секция для перечисления и настройки способов отображения колонок в таблице
	[правило вывода] = ТАБЛИЦУ | ГРАФИК | И (например: ТАБЛИЦУ И ГРАФИК, или  ГРАФИК, или ТАБЛИЦУ). По-умолчанию действует ТАБЛИЦУ
	[список полей, которые должны показываться в отчете]

[элемент из списка полей, которые должны показываться в отчете] = ИДЕНТИФИКАТОР КОЛОНКИ "Название колонки в таблице" [ опции_колонки ]

[опции_колонки] <- различные опции применяемы к колонке.

  • !НАЗВАНИЕ "НАЗВАНИЕ КОЛОНКИ" - строка отображается в заголовке таблицы, и легенде графика.

  • !ОПИСАНИЕ "ОПИСАНИЕ КОЛОНКИ" - расширенное описание, отображается (ХЗ ГДЕ :))), сделано на будущее.

  • !СКРЫТЬ - делает невидимым ряд на графике.

  • !ОСЬ !СПРАВА - ось колонки отображается справа на графике

  • !ОСЬ !СЛЕВА - ось колонки отображается слева на графике (по-умолчанию)

  • !ТИП !ЛИНИЯ или !СТОЛБЕЦ -- тип отображения ряда на графике (по-умолчанию СПЛАЙН)

    !ГДЕ <- секция фильтрации сущностей по заданным правилам [выражение для фильтрации сущностей при выполнении отчета]

Колонки, перечисленные в данной секции должны поддерживаться всеми сущностями учавствующими в запросе. Колонки обозначаются без указания сущности (просто имя).

!ФИЛЬТРОВАТЬ <- секция фильтрации строк результата для отображения только значимой информации
	[выражение для фильтрации окончательного результата]

!ИТОГИ !ПО ДНЯМ/НЕДЕЛЯМ/МЕСЯЦАМ [список полей для вычисления итоговых строк] <- секция указывает на то, что нужно получить итоговые данные с группировкой по ДНЯМ\НЕДЕЛЯМ\МЕСЯЦАМ

ИЛИ !ИТОГИ список полей для вычисления итоговых строк <- секция описывает формулы получения значений итоговой строки

	[ список полей для вычисления итоговых строк ] - аналогичен формату списка полей из секции !ВЫЧИСЛИТЬ

ОПЕРАЦИИ:

Математические операции

Доступны следующие общеизвестные операции: +, - , * , /

Применение операции '+' к строкам приводит к их объединению, например: 'кот' + 'бегемот' = 'котбегемот'

Примеры:

  • 1 + 2
  • ( 1 + 3 ) / 4
  • CTR > 20

Логические операции

Доступны следующие логические операции (в скобочках написаны эквивалентные английские наименования):

  • И (AND)
  • ИЛИ (OR)
  • НЕ (NOT) -- операция отрицания, переворачивает результат истиности (ИСТИНА -> ЛОЖЬ, ЛОЖЬ -> ИСТИНА)
  • (больше)

  • < (меньше)
  • = (больше или равно)

  • <= (меньше или равно)
  • = (строго равно)
  • {ВЫРАЖЕНИЕ1} МЕЖДУ {ВЫРАЖЕНИЕ2} И {ВЫРАЖЕНИЕ3} -- истина, когда ВЫРАЖЕНИЕ2 <= ВЫРАЖЕНИЯ1 <= ВЫРАЖЕНИЕ3

Также доступны предопределенные константы:

  • ИСТИНА (true) - всегда выражающее значение ИСТИНЫ
  • ЛОЖЬ (false) - всегда выражающее значение противоположное ИСТИНЕ (ЛОЖЬ).

Примеры:

* 1 > 2 -- ЛОЖЬ
* НЕ( 1 > 2 ) -- ИСТИНА
* НЕ ЛОЖЬ -- ИСТИНА

При фильтрации таблицы, остаются только те строки для которых вычисляемое выражение есть ИСТИНА.

Приоритеты операций

Перечисленные ниже операции выполняются в следующей последовательности (от наинизшего приоритета к наивысшему) при равных условиях:

  • Логические: 'И', 'ИЛИ', 'НЕ ' '>','<','=<','>=', '<>','='
  • Математические: '+', '-' '*' '/' '^', '!', '%'
  • Статистические: 'СУММА', 'COUNT', 'МАКСИМУМ', 'МИНИМУМ', 'СРЕДНЕЕ', 'КОЛИЧЕСТВО'

Разрезы.

Каждый отчет строится в определенном разрезе. Текущие поддерживаемые разрезы:

  • ГЕО - по странам
  • КАМПАНИИ - по кампаниям

С помощью разрезов указываются типы значений для ключевой (главной) колонки, которые будут в отчете. Каждая сущность в разрезе генерирует данные с одинаковыми типами главной колонки.

Cущности

Сущность в отчете привязана к разрезу. Текущие доступные универсальные сущности:

  • КЛИКИ -- отображение статистики по кликам
  • ЛИДЫ -- отображение статистики по лидам

В зависимости от разреза, сущность генерирует различную информацию.

Комплекс Разрез-Сущность можно представить как таблицу, внутри которой происходит выборка.

Каждая сущность содержит колонки. Адресация колонок внутри сущности осуществляется путем указания (через точку):

ИМЯ_СУЩНОСТИ.ИМЯ_КОЛОНКИ

В секции !ГДЕ имена колонок представлены лишь одним именем, т.к. выражение из данной секции применяется к каждой из сущностей учавствующих в запросе.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment