Изменения

Перейти к: навигация, поиск

Общий вид статистики

2904 байта добавлено, 10:12, 21 сентября 2017
м
Нет описания правки
Маленький настраиваемый OLAP’ик на PHP+/MySQL, на самом деле также поддерживает любые источники данных, если напишете функцию, которая эти данные по запросу предоставит. Брать [{{SVN|vitalif/trunk/olap}} здесь]. Общий вид любой, по сути дела, статистики. Есть, условно говоря, «события» (в OLAP — «факты»), у каждого есть показатели. То есть, обычный OLAP-куб, который берётся из SQL-БД или генерируется функцией. По этим событиям интересно получать какие-то отчёты.
Типы показателей:
#* По горизонтали — аналогично, но по горизонтальной оси.
#* В ячейке — список значений данного поля будет выведен внутри ячейки таблицы вместе с соответствующими значениями показателя.
#* График — по значениям поля строится JavaScript-график. Не комбинируется с другими типами.
# Само поле: любой П или Ф(П).
# Порядок сортировки — по убыванию или по возрастанию.
* Если по вертикали не одно, а два поля, то для первого («внешнего») это будет А(Ф(П)) за все строки, соответствующие его значению, а для второго («внутреннего») — А(Ф(П)) за все строки, соответствующие значениям ''обоих'' полей. То есть «внутреннее» поле и будет сортироваться как бы «внутри» каждого значения внешнего.
Также умеет Графики строятся с помощью JavaScript-библиотеки [http://www.jqplot.com/ jQplot]. На график «умещаются» максимум две группировки — одна по горизонтали, вторая — несколько линий на одном графике. Остальные группировки помещаются на отдельные графики. Тип группировки «график» не комбинируется с табличными способами — если хотя бы одна группировка — график, графиками становятся и остальные. Поддерживается переключаемый логарифмический масштаб показателя (по вертикали). Графики сглаживаются. Числа и даты отображаются на линейной оси, строковые показатели — с равными интервалами между значениями. [[File:olap-jqplot.png|frame|center|Старый скриншот (сглаживания и пропорциональной оси дат нет)]] {{----}}В коде также есть временно отключённая возможность строить «псевдографики», состоящие из горизонтальных полос шириной, пропорциональной значению. Но — не умеет их смешивать с другими типами группировок, если выбираете хотя бы один график, графиками становится всё.
== Конфигурация ==
Конфигурация OLAP пишется в файле olap-config.php, кладётся рядом с olap.php, и включает в себя:
 
<source lang="php">
OLAP::$sources = array(
'comment' => 'необязательный комментарий (показывается после полей ввода)',
'options' => array(array('значение', 'читаемое имя')), // опции для выпадающего списка (необязательно)
// 'options' может быть callback'ом, вызываемым с одним параметром $olap (= объекту-построителю)
// и возвращающим опции в том же формате
'autofilter' => (true, если можно загрузить опции для выпадающего списка из таблицы автоматически),
'le_ge' => (true, если к полю применимы фильтры >= и <=),
</source>
За описанием параметров <tt>tables, where, sql_options</tt> обращайтесь к описанию подобного MediaWikовскому SelectBuilder’а: [[MySQL_Select_BuilderMySQL Select Builder]], или в его код — {{SVN|vitaphoto/php/mysqlDatabaseMysql.php|markup}} (функция <tt>mysql_select_builderDatabaseMysql::select_builder</tt>). Да, кстати, под E_STRICT вся эта хрень выплюнет тучу Notice’ов, плюньте на них и скажите <tt>error_reporting(E_ALL & ~E_STRICT)</tt>. == Пример генерации: Wayback Machine == Любопытным примером генерации данных функцией является такая весёлая вещь — построение отчётов с учётом истории изменений, хранящихся в виде undo-логов, то есть, когда в базе хранится актуальное состояние объектов плюс история изменений (какое поле, с чего, на что и когда было изменено), а аналитику хочется делать развёрнуто по времени. Так, например, хранится история изменений багов в Bugzilla. Без функции-генератора тут не обойтись, и она должна загружать актуальное состояние и нужные изменения, а потом просто последовательно применять их, восстанавливая состояния объектов на более старые даты. [[Category:Техактивы]]

Навигация