metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2013-02-06 02:33 pm
Entry tags:

Функциональщина в бухгалтерии

Самоочевидно ли то, что с помощью filter/map/fold можно реализовать бухгалтерскую отчетность более простым и очевидным образом, чем с помощью select .. where .. group by?

Нет, наверно я хотел задать не этот вопрос. Правильный вопрос: сколько в час денег попросит человек, способный за неделю-две разобраться в вышеописанном вопросе?

[identity profile] metaclass.livejournal.com 2013-02-06 12:12 pm (UTC)(link)
джоины можно и в СУБД сделать, перед тем как передать результат в функциональщину.
Кроме того - джоины в 90% случаев - это ссылки на справочник, "подпишем ка этот аналитический код".

[identity profile] dmzlj.livejournal.com 2013-02-06 12:14 pm (UTC)(link)
вот почему мои задачи ВСЕГДА попадают в оставшиеся 10% ?

[identity profile] metaclass.livejournal.com 2013-02-06 12:16 pm (UTC)(link)
Давай пример, мне вечно не хватает задач, выходящих за рамки привычного :)

[identity profile] dmzlj.livejournal.com 2013-02-06 12:27 pm (UTC)(link)
ну, я джойнил маршруты с эвентами по ключу, вычисляемому оконными функциями, т.к прямой связи между текущей локацией ТС и маршрутом не было (ну, например, то, что автобус сейчас находится в точке D, совсем не означает, что он успешно следует по маршруту A-B-C-D-E-F, а факт того, что он следует сейчас именно по этому маршруту выводился из его предыдущей истории некоторыми эвристиками).

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

[identity profile] metaclass.livejournal.com 2013-02-06 12:33 pm (UTC)(link)
Ты маньяк.
Я в таком же самом алгоритме тупо грузил текущую поездку в память (за некий интервал времени) и обрабатывал теми же самыми эвристиками уже в виде графа объектов. А результат затем ложил в БД в пригодном для обработки SQL запросами виде (список посещений точек маршрута и проч.)

[identity profile] dmzlj.livejournal.com 2013-02-06 12:38 pm (UTC)(link)
беда в том, что эта херь была нужна в отчёте, который, теоретически, мог модифицировать усер. т.е просто была запилина хп, которая всё это и делала, а юзер ее звал. выбор встроенных языков в pg как-то невелик, я пытался поиграться со встроенной схемой или питоном, но быстро сдался. а процессинг на нормальном языке как-то в архитектуру не вписывался. возможно, надо было бы данные как-то более лучше денормализовать, что ли.

[identity profile] swizard.livejournal.com 2013-02-06 02:02 pm (UTC)(link)
> что-то написал и подумал, что уж это точно проще было загрузить целиком и
> обработать на нормальном языке


Я вот периодически размышляю, что надо-то ровно наоборот: загружать в базу куски кода на нормальном языке вместо запросов.

Эдакий удалённый REPL к машине с данными.

[identity profile] metaclass.livejournal.com 2013-02-06 02:12 pm (UTC)(link)
Я тоже думаю, но у меня за прикладными задачами времени не хватает это реализовать в пригодном для повторного использования виде.

[identity profile] swizard.livejournal.com 2013-02-07 10:32 am (UTC)(link)
не могу найти по ссылке нормального языка вместо запросов, там какой-то sql в виде quoted json

[identity profile] tonsky.livejournal.com 2013-02-08 10:14 am (UTC)(link)
Я думал речь об исполнении кода там же, где лежат данные, а не об синтаксисе конкретного языка первоначальной выборки.

[identity profile] dmzlj.livejournal.com 2013-02-06 12:16 pm (UTC)(link)
ну типа на х-ле реализовывать типа OLAP что ли? засосал датасет, отпроцессил, сгенерил (если надо) сикли для апдейта, жирной такой транзакцией накатил.

[identity profile] metaclass.livejournal.com 2013-02-06 12:22 pm (UTC)(link)
Хм.
Я их (датасеты такие) сразу отображаю юзерам, сейчас вот еще буду дорабатывать, чтобы мемоизировать результаты на будущее.
В таких задачах джоины нужны разве что параметры из каких-нибудь справочников по кодам аналитики доставать и это можно сделать предобработкой на SQL в три строчки.

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