DataBox. Бесплатный plugin для манипуляции данными

Законченные решения. Заполняется по результатам дискуссий в «Практике».
Ответить
Аватара пользователя
Arcady
Администратор
Сообщения: 166
Зарегистрирован: 10 сен 2017, 20:45
Контактная информация:

DataBox. Бесплатный plugin для манипуляции данными

Сообщение Arcady » 31 мар 2021, 17:08

Коллеги, спешу поделится радостью.
Наконец-то "допилил" первую версию собственного плагина для FileMaker - DataBox.
Если не ошибаюсь, то DataBox - это первый российский плагин для FileMaker и при этом бесплатный.
Ссылка для скачивани вот: https://tria.pw/databox/
Плагин работает на macOS, Windows, а также на FileMaker server на обеих операционных системах

О чем это.
DataBox позволяет сохранять и манипулировать данными в памяти компьютера. Вы можете загрузить в память переменную, массив, таблицу (например результат SQL-запроса) или сформировать иерархическую структуру, бесконечной вложенности.
В отличии от $$ глобальных переменных (которые по сути текст), данные хранятся в памяти в поддерживаемых FileMaker форматах (number, text, date, time or timestamp, контейнеры пока не поддерживаются )

Поскольку все манипуляции происходят в памяти, все работает очень быстро. Есть функции для поиска, манипуляции, агрегирования, и получения данных в различных форматах, в том числе JSON и в виде html-таблицы (сразу получаем красивую готовую интерактивную таблицу для вебвьюера)

По ссылке выше можно найти документацию.
Пока эта первая версия, но планов много, плагин планирую развивать и дальше.

Спасибо, всем кто помогает!
Вложения
DataBox_in_DataViewer.png
DataBox_in_DataViewer.png (147.85 КБ) 159 просмотров
Аркадий Перла.
ТриА. Разработка решений для FileMaker
http://tria.pw

andrey volkov
Сообщения: 290
Зарегистрирован: 11 сен 2017, 13:42
Откуда: Санкт-Петербург

Re: DataBox. Бесплатный plugin для манипуляции данными

Сообщение andrey volkov » 03 апр 2021, 10:47

Если бы я был президентом, я бы наградил орденом. Честно.
Поскольку я не президент, я могу лишь сказать СПАСИБО.
Даже представить невозможно, насколько это качественно изменит принципы работы с массивами данных в фм.

У меня вопросы появились.
Вопрос 1: если два пользователя через PSOS создают два датасета с одинаковым именем, не происходит ли конфликта в этом случае? UPD. Прочитал. поставлю вопрос по-другому.
Если фм работает с файлами, то он файл открывает, пишет, закрывает. Пока файл открыт, он заблокирован для доступа извне. В случае с датасетами в памяти, я так понимаю, блокировки не происходит. Любой пользователь может вмешаться и изменить данные. Верно?

Вопрос 2. Если мы датасет сохраняем как текст, то каков следующий шаг, чтобы превратить этот сохраненный текст снова в датасет?

Аватара пользователя
Arcady
Администратор
Сообщения: 166
Зарегистрирован: 10 сен 2017, 20:45
Контактная информация:

Re: DataBox. Бесплатный plugin для манипуляции данными

Сообщение Arcady » 03 апр 2021, 17:29

За орден, спасибо, подожду когда станешь президентом :)

Поо вопросам:

1. Да - если плагин запускается на сервере, то созданный датасет будет доступен всем пользователям, а также скриптам запущенным по расписанию. И это не баг, а фича. Таким образом мы можем передавать данные, или хранить общие для разных пользователей переменные в памяти сервера, не обращаясь к самой базе данных. И да, за именами датасетов надо на сервере следить, чтобы один пользователь не перезаписал данные другого, если это в наши планы не входит. Я обычно, в имя датасета на сервере добавляю таймштамп.
И кстати, данные будут оставаться в памяти пока мы не перезагрузим сервер, или не удалим датасет явно, с помощью функции DB_Delete

И еще фишка: в отличии от глобальных переменных существующих для каждого файла отдельно, датасет доступен всем базам и остается в памяти даже после закрытия базы. Можете провести эксперимент, открыть в ФМ файл (на пользовательской стороне), создать и сохранить в датасет, что-то из базы, закрыть файл, но не закрывать ФМ и посмотреть в датаввьюере - датасет с данным останется. Так можно на пользовательской стороне перекидывать данные из одного открытого файла в другой или хранить общие переменные.

По поводу блокировки - нет никаких блокировок не происходит. Кто угодно, кто может вызвать функции плагина может манипулировать данными. Это уже ответственность разработчика базы

2. При создании датасета мы указываем его тип. При добавлении данных, Databox пытается конвертировать получаемые данные в формат датасета (поэтому важно для типа дата, время и таймштампа указывать маску). Если данные некорректные (пытаемся "бла бла засунуть в number) получим 0.
Если у нас текстовый датасет, который мы после каких-то манипуляций привели к виду пригодному для конвертации в цифру, то можно используя sApply создать новый датасет копируя данные с конвертацией, а старый датасет удалить.

В будущих версиях планируется добавить функции конвертации типа датасета, но пока этого нет.
Аркадий Перла.
ТриА. Разработка решений для FileMaker
http://tria.pw

andrey volkov
Сообщения: 290
Зарегистрирован: 11 сен 2017, 13:42
Откуда: Санкт-Петербург

Re: DataBox. Бесплатный plugin для манипуляции данными

Сообщение andrey volkov » 03 апр 2021, 18:09

загрузил в датасет из SQL таблицу из трех полей длиной 121 тысяча записей и следом создал выборку в сто записей, начиная с 111000.
замерил время: одна секунда.
И это не баг, а фича.
да, это важная фича. Просто важно знать особенности. Например, эту фичу можно использовать для отслеживания прогресса скрипта, который запущен через PSOS и выполняется на сервере. Последующие регулярные обращения PSOS от клиента могут прочитать датабокс и вернуть клиенту значение прогресса.
И вообще это единственный рабочий способ получать с сервера данные порциями. Запускаем длинную обработку на сервере и получаем данные порциями по мере их готовности.


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

А сортировать таблицы вообще невозможно, как я понял. Или есть какой-то обходной маневр?

+ Хотелось бы изучить примеры решения конкретных производственных задач с использованием плагина. Описание кейсов.

Аватара пользователя
Arcady
Администратор
Сообщения: 166
Зарегистрирован: 10 сен 2017, 20:45
Контактная информация:

Re: DataBox. Бесплатный plugin для манипуляции данными

Сообщение Arcady » 03 апр 2021, 19:26

http://www.fmforum.ru/viewtopic.php?f=4&t=3451
вот в этой теме ответил
Аркадий Перла.
ТриА. Разработка решений для FileMaker
http://tria.pw

Ответить