Форум программистов, компьютерный форум, киберфорум
sqltd1
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  

Excel+SQL=

Запись от sqltd1 размещена 25.06.2023 в 08:09
Показов 1736 Комментарии 4

Используя терминологию соц.сетей, я нахожусь "в активном поиске".

Доминирование MS на рынке офисного софта подходит к концу и я задаюсь вопросом "что будет после Экселя?". Точнее, как минимизировать издержки при переходе от продуктов MS к альтернативам.

Это состояние "активного поиска" привело меня к проекту OfficeToolbox, в котором предлагается автоматизировать офисные процессы с помощью Юпитеровских блокнотов (Python + Jupyter Motebook).

В рамках участия в этом проекте у меня появился вопрос - а может быть для некоторых задач не требуется знание Python, а достаточно знания SQL?

Как мне кажется, ответ на этот вопрос - ДА. Ниже описывается пробный вариант реализации.

Концепция обработчика XLSX-файла с SQL-командами

1) Обработчик должен получать ссылку на XLSX-файл с SQL-командами (и, возможно, данными), обрабатывать и генерировать выходные данные
2) Для преобразования данных из формата электронных таблиц в формат БД (и обратно), используемый SQL-диалект расширяется соответствующими командами (функциями).
3) Последовательность исполняемых SQL-команд должна находиться внутри XLSX-файла (не снаружи в виде отдельного файла). Наиболее простой способ - это разместить команды на отдельном листе.

Реализация

В виде юпитеровского блокнота. Файл прикреплен к этому сообщению (см. ниже во вложениях)

Исходные данные

XLSX-файл с листом __sql, на котором должны быть столбцы rel и sql (эти два столбца загружаются и используются).
Столбец sql содержит исполняемые sql-команды. Столбец rel содержит имена связей. Если в строке указана связь, то команда не исполняется немедленно, а создается именованный источник данных, к которому можно обращаться по имени в последующих запросах в разделе FROM.
Код запроса, которому назначена связь, будет исполняться только тогда, когда произойдет непосредственное обращение.
Связи - это внутренняя фича (Relational API) duckdb, который используется в качестве SQL-движка.

Детали реализации

В качестве SQL-движка используется duckdb c тремя дополнительными функциями:
- show(qry) - вывод в консоль блокнота результата исполнения запроса qry. Функция предназначена для вывода при отладке.
- read_xlsx(path, sheet, sargs) - чтение листа sheet из XLSX-файла path с сохранением загруженных данных во временной таблице, доступ к которой предоставляется через назначенную связь
- write_xlsx(path, sheet, qry, sargs) - запись результата qry в лист sheet в XLSX-файл path

через параметр sargs (JSON) передаются дополнительные параметры

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

Ниже приведен sql-код из этого примера, иллюстрирующий вызов всех дополнительных функций

Code
1
2
3
4
rel sql
src SELECT read_xlsx(‘' ,’Прайс-лист’, ‘{“header”:4, “na_values”: [“Цена (руб.)”, “№",”Наличие"]}')
    SELECT show(‘SELECT *  from src’)
    SELECT write_xlsx(‘’,’Дешевые’,’select * from src where “Цена (руб.)” < 9000’,’’)
Более подробная документация будет опубликована через несколько дней. Прямо сейчас можно "поиграть" с приложенным примером во вложении.
Вложения
Тип файла: zip xlsx-sql.zip (12.7 Кб, 212 просмотров)
Размещено в DuckDB, Python, Jupyter Notebook
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 4
Комментарии
  1. Старый комментарий
    Доминирование MS на рынке офисного софта подходит к концу
    Разве что в чьих то фантазиях. В реальности же полноценной альтернативы MS Office как не было, так и нет.
    Запись от Катафалк размещена 25.06.2023 в 08:24 Катафалк вне форума
  2. Старый комментарий
    Разве что в чьих то фантазиях.
    Собственно обратный отсчет включен - 1.5 года осталось
    https://www.tadviser.ru/index.... 1%80%D0%B5
    Запись от sqltd1 размещена 25.06.2023 в 14:14 sqltd1 вне форума
  3. Старый комментарий
    Аватар для АЕ
    Более подробная документация будет опубликована через несколько дней
    Только не уточнили. Дней, недель или месяцев.
    Запись от АЕ размещена 08.10.2023 в 22:47 АЕ вне форума
  4. Старый комментарий
    AE
    Только не уточнили. Дней, недель или месяцев.
    Спасибо, что привлекли внимание к этому прискорбному факту.

    В связи с низким интересом общественности проект временно приостановлен. (Но нет ничего более постояного, чем временное, увы )
    Запись от sqltd1 размещена 09.10.2023 в 15:23 sqltd1 вне форума
 
Новые блоги и статьи
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг. Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя. Странные серые краски проникают и. . .
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
Dispose и Finalize в C#
stackOverflow 12.06.2025
Работая с C# больше десяти лет, я снова и снова наблюдаю одну и ту же историю: разработчики наивно полагаются на сборщик мусора, как на волшебную палочку, которая решит все проблемы с памятью. Да,. . .
Повышаем производительность игры на Unity 6 с GPU Resident Drawer
GameUnited 11.06.2025
Недавно копался в новых фичах Unity 6 и наткнулся на GPU Resident Drawer - штуку, которая заставила меня присвистнуть от удивления. По сути, это внутренний механизм рендеринга, который автоматически. . .
Множества в Python
py-thonny 11.06.2025
В Python существует множество структур данных, но иногда я сталкиваюсь с задачами, где ни списки, ни словари не дают оптимального решения. Часто это происходит, когда мне нужно быстро проверять. . .
Работа с ccache/sccache в рамках C++
Loafer 11.06.2025
Утилиты ccache и sccache занимаются тем, что кешируют промежуточные результаты компиляции, таким образом ускоряя последующие компиляции проекта. Это означает, что если проект будет компилироваться. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »