для чего используются электронные таблицы
Электронные таблицы как средство разработки бизнес-приложений
Excel часто используется как универсальное средство для разработки бизнес-приложений. В этой статье я хочу сравнить, существующие без особых изменений уже более 30 лет, электронные таблицы с современной классической императивной парадигмой программирования глазами архитектора ПО. Затем я хочу рассказать о своей работе над новым табличным процессором, который исправляет многие недостатки, выявленные при сравнении, тем самым позволяя создавать более надежные, масштабируемые и легкие для поддержки и дальнейшего развития, бизнес-приложения.
Электронные таблицы и их возможности
Принцип, по которому работают современные электронные таблицы (Microsoft Excel, LibreOffice Calc или Google Sheets) появился в конце 70-х – середине 80-х годов. Двухмерный массив ячеек, как модель данных, и возможность автоматических вычислений с помощью формул появились в VisiCalc в 1979 году. Трехмерный массив ячеек (возможность пользоваться несколькими листами) впервые появился в 1985 в Boeing Calc.
В теории, электронные таблицы ничем не уступают любому языку программирования. Существует машина Тьюринга на формулах Excel (линк), а это значит, что любой алгоритм, который можно реализовать с помощью компьютера, можно реализовать в Excel. Вопрос только в удобстве и эффективности такой реализации.
Выходит, что одну и ту же задачу можно решить, как электронной таблицей, так и универсальным языком программирования. Значит, мы можем сравнить сильные и слабые стороны этих двух инструментов, как средств создания бизнес-приложений. Здесь мы попробуем взглянуть на Excel глазами программиста-архитектора и применим правила архитектуры ПО, которые уже устоялись в классической разработке софта.
Достоинства электронных таблиц
Недостатки электронных таблиц
Как сделать электронные таблицы лучше?
Меня зовут Вадим. Я CTO в CubeWeaver и уже довольно давно занимаюсь разработкой нового табличного процессора. Несколько лет назад я уже писал (линк) про раннюю версию системы, но с тех пор многое изменилось и в этом году проект дошел до коммерческой стадии.
Вот список новшеств моего проекта, которые позволяют устранить перечисленные выше недостатки, стараясь при этом сохранить преимущества электронных таблиц:
Многомерная модель данных
Многомерная модель данных широко используется в Business Intelligence и OLAP системах, предназначенных для анализа данных. Суть модели заключается в том, чтобы хранить данные в ячейках многомерного куба, грани которого подписаны заголовками бизнес-объектов:
В интерфейсе программы отображается не весь многомерный куб, а его двумерный срез, соответствующий выбранной нами комбинации фильтров:
При реализации такой модели в реляционной BI системе, часто используют схему снежинки (snowflake schema). Кубы реализуются таблицами фактов (fact table), а заголовки на гранях хранятся в таблицах измерений (dimension table).
В моей системе кубы называются рабочими листами (worksheets), а заголовки на гранях куба называются элементами списков (list items).
Каждая ячейка такого многомерного рабочего листа имеет уникальный адрес, состоящий из надписей на гранях. Например, значение 935 на изображении имеет адрес: Bikes, 2020, Paris.
Каждый элемент списка имеет название и идентификатор. В ссылках на ячейки используются идентификаторы, и вышеуказанный адрес в формуле мог бы выглядеть так (ссылки заключаются в квадратные скобки):
Применение многомерной модели позволяет значительно улучшить ситуацию с недостатком номер 1. Во-первых, заголовки теперь хранятся отдельно от численных данных. Во-вторых, введение дополнительного измерения «метрика» (или «позиция отчета») позволяет адресовать ячейки не по порядковому номеру, а по семантическому смыслу, исключая ошибки из-за добавления или удаления столбцов или строк.
Конечно, нужно сказать, что такой подход слегка портит ситуацию с преимуществом номер 1. В морской бой играли все, а в четырехмерные шахматы только некоторые студенты-математики. Но опыт показывает, что благодаря двумерному представлению куба, большинство пользователей довольно быстро привыкают к новой модели данных.
Функция JOIN и метаданные
Многомерная модель позволяет использовать метаданные для описания ячеек. Метод адресации описанный выше означает, что каждая ячейка рабочего листа соответствует определенному набору элементов списка (например, году, продукту и точке продажи). Списки в свою очередь могут иметь атрибуты (колонки), что делает их похожими на обычные реляционные таблицы. Например, можно добавить колонку «валюта» к списку «точка продажи», связывая таким образом списки «точка продажи» и «валюта» в реляцию с кардинальностью many-to-one.
Функция JOIN дает возможность динамически ссылаться на ячейки, используя такую связь. Эта функция заменяет VLOOKUP, устраняя при этом необходимость работать с индексами.
Пример: для того чтобы посчитать сумму продаж по миру, нужно сначала сконвертировать сумму продаж по каждой стране в единую валюту (умножить позицию «продажи» на курс обмена). В Excel мы бы хранили 2 таблицы: список стран с валютой для каждой страны и список валют с курсом обмена. Для того чтобы найти правильный курс мы бы использовали функцию VLOOKUP два раза: найти код валюты по названию страны и найти курс обмена по коду валюты.
Цепочки связей могут быть любой длины, например: STORE.join(COUNTRY).join(CURRENCY)
Фактически, строя модель, мы создаем схему снежинки. Функция JOIN позволяет формулам динамически ссылаться на ячейки рабочих листов, используя связи между таблицами (списками) этой схемы. При этом зависимости между ячейками явно указаны в аргументах функции JOIN.
Зона действия формул
Возможность указать зону действия формулы (area of effect) позволяет избавиться от необходимости копировать формулы.
По каждому измерению куба мы задаем набор элементов, на которые действует формула, как например: все года, продукты типа «велосипед», позиция отчета «выручка». На практике это выглядит вот так (Синим цветом отмечена цель формулы, красным и оранжевым её аргументы. Список выбранных элементов по каждому измерению находиться внизу экрана):
Этот подход устраняет недостаток номер 2 и позволяет добавлять и удалять элементы или даже измерения, не изменяя формулу. Также отпадает необходимость искать все ячейки, в которые формула была скопирована, каждый раз, когда мы хотим ее изменить.
Интерактивность ячеек
Это нововведение позволяет создавать интерактивные интерфейсы, используя формулы. Формулы можно использовать не только для того чтобы вычислить значение ячейки, но и для форматирования ячеек (cell formatting), изменения цвета ячеек (cell color) и для того чтобы спрятать или показать группу ячеек или целые колонки или строки (cell visibility). Ячейки можно форматировать не только как числа, даты и текст, но и как кнопки, флажки (checkbox) и списки выбора (dropdown).
Таким образом, например, цвет ячеек может меняться в зависимости от значения ячейки. Флажок или список выбора в одном листе может отображать, прятать или блокировать на запись ячейки в другом листе.
Кнопки в ячейках позволяют создавать довольно сложные операции со значениями ячеек. Создавая кнопку, мы задаем цель операции (cell range) и формулу, которая выполняется один раз для каждой из целевых ячеек. На одной кнопке может быть несколько операций. Так, нажатие на кнопку может, например, скопировать данные из предыдущего года в следующий или распределить содержимое ячейки по нескольким другим ячейкам, пропорционально какой-то величине (splashing).
Кнопки в сочетании с ограничениями доступа пользователя позволяют создавать необратимую функциональность. Так, например пользователь получивший доступ к кнопке, но не получивший доступ к целевой ячейке, сможет записать в ячейку только то, что позволит ему формула в кнопке.
Заключение
Новый табличный процессор позволяет создавать значительно более сложные модели, чем это возможно в других системах. При этом модели остаются понятными и простыми в сопровождении. Также значительно уменьшается вероятность ошибок в формулах.
Платой за эти преимущества является повышенная сложность системы. Прежде чем начать работать, пользователь должен создать модель данных в виде списков и кубов.
В целом система рассчитана на технически более грамотного пользователя, чем Excel (например, экономисты с базовыми знаниями программирования или программисты, работающие над экономическими моделями).
С удовольствием отвечу на ваши вопросы в комментариях или личных сообщениях. Также, в интернете можно найти документация к системе и несколько обучающих видео.
§3.1 Электронные таблицы
Сотни лет в деловой сфере при выполнении громоздких однотипных расчётов используются таблицы. С их помощью рассчитывается заработная плата, ведутся различные системы учёта материальных ценностей, просчитывается стоимость новых товаров и услуг, прогнозируется размер прибыли и т. д. Такие расчёты многие специалисты до конца прошлого века выполняли с помощью калькуляторов, вручную занося полученные результаты в соответствующие графы таблиц. Такая работа требовала больших временных затрат; на исправление незначительной ошибки, допущенной расчётчиком, уходили недели и даже месяцы.
Ситуация кардинально изменилась с появлением электронных таблиц, позволивших за счёт изменения исходных данных быстро решать большое количество типовых расчётных задач.
Электронные таблицы (табличный процессор) — это прикладная программа, предназначенная для организации табличных вычислений на компьютере. Электронными также называют и таблицы, созданные с помощью одноименных программ в памяти компьютера.
В наши дни электронные таблицы являются одним из программных продуктов, наиболее широко используемых на практике. С их помощью пользователи, не обладая специальными знаниями в области программирования, имеют возможность определять последовательность вычислительных операций, выполнять различные преобразования исходных данных, представлять полученные результаты в графической форме.
3.1.1. Интерфейс электронных таблиц
Наиболее распространёнными табличными процессорами являются Microsoft Excel и OpenOffice.org Calc.
При запуске любого из них на экран выводится окно, многие элементы которого вам хорошо известны по опыту работы с другими программами.
Строка заголовка содержит название документа, название программы и кнопки управления окном.
Строка меню содержит названия групп команд управления электронной таблицей, объединённых по функциональному признаку.
Панели инструментов содержат пиктограммы для вызова наиболее часто выполняемых команд.
Рабочей областью табличного процессора является прямоугольное пространство, разделённое на столбцы и строки. Каждый столбец и каждая строка имеют обозначения (заголовки, имена). Столбцы обозначаются слева направо латинскими буквами в алфавитном порядке; могут использоваться однобуквенные, двухбуквенные и трёхбуквенные имена (А, В, С и т. д.; после 26-го столбца начинаются двухбуквенные сочетания АА, АВ и т. д.). Строки нумеруются сверху вниз. Число строк и столбцов у разных табличных процессоров различно.
На пересечении столбцов и строк образуются ячейки (клетки), в которые могут быть записаны данные или выполняемые над ними операции.
Ячейка — наименьшая структурная единица электронной таблицы. Каждая ячейка электронной таблицы имеет имя, составленное из буквенного имени столбца и номера строки, на пересечении которых она располагается. Возможны следующие имена ячеек: El, К12, АВ1251. Таким образом, имя ячейки определяет её адрес в таблице.
Ячейка — наименьшая структурная единица электронной таблицы, образуемая на пересечении столбца и строки.
Табличный курсор — выделенный прямоугольник, который можно поместить в любую ячейку. Ячейка таблицы, которую в данный момент занимает курсор, называется текущей ячейкой. Вводить или редактировать данные можно только в текущей ячейке.
Адрес текущей ячейки и вводимые в неё данные отражаются в строке ввода. В строке ввода можно редактировать информацию, хранящуюся в текущей ячейке.
Идущие подряд ячейки в строке, столбце или прямоугольнике образуют диапазон. При задании диапазона указывают его начальную и конечную ячейки, в прямоугольном диапазоне — ячейки левого верхнего и правого нижнего углов. Наибольший диапазон представляет вся таблица, наименьший — одна ячейка. Примеры диапазонов: А1:А10, В2:С2, B2:D10.
Рабочая область табличного процессора иначе называется листом. Создаваемый и сохраняемый в табличном процессоре документ называется книгой; он может состоять из нескольких листов. Аналогично листам бухгалтерской книги, их можно перелистывать, щёлкая на ярлыках, расположенных внизу окна. Каждому листу книги пользователь может задать имя, исходя из содержимого этого листа.
Лист — рабочая область, состоящая из ячеек.
Книга — документ электронной таблицы, состоящий из листов, объединенных одним именем, и являющийся файлом.
В строке состояния выводятся сообщения о текущем режиме работы таблицы и возможных действиях пользователя.
3.1.2. Данные в ячейках таблицы
Содержимым ячейки может быть:
Текст — это последовательность любых символов из компьютерного алфавита.
Тексты (надписи, заголовки, пояснения) нужны для оформления таблицы, в текстовой форме могут быть представлены характеристики рассматриваемых объектов. Изменить содержимое ячейки с текстом можно только путём редактирования ячейки. По умолчанию текст выравнивается в ячейке по левому краю — по аналогии со способом письма слева направо.
С помощью чисел задаются количественные характеристики рассматриваемых объектов. При этом используются различные числовые форматы. По умолчанию используется числовой формат с двумя десятичными знаками после запятой. Для записи чисел, содержащих большое количество разрядов, не умещающихся в ячейке, применяется экспоненциальный (научный) формат. Числовые данные, введённые в ячейки таблицы, являются исходными данными для проведения вычислений. Изменить числовые данные можно путём их редактирования. По умолчанию числа выравниваются в ячейке по правому краю, что обеспечивает выравнивание всех чисел столбца по разрядам (единицы размещаются под единицами, десятки — под десятками и т. д.).
Для чего используются электронные таблицы
Электронная таблица — компьютерная программа, позволяющая проводить вычисления с данными, представленными в виде двумерных массивов, имитирующих бумажные таблицы. Некоторые программы организуют данные в «листы», предлагая, таким образом, третье измерение. Электронные таблицы (ЭТ) представляют собой удобный инструмент для автоматизации вычислений. Многие расчёты, в частности в области бухгалтерского учёта, выполняются в табличной форме: балансы, расчётные ведомости, сметы расходов и т. п. Кроме того, решение численными методами целого ряда математических задач удобно выполнять именно в табличной форме. Использование математических формул в электронных таблицах позволяет представить взаимосвязь между различными параметрами некоторой реальной системы. Решения многих вычислительных задач, которые раньше можно было осуществить только с помощью программирования, стало возможно реализовать через математическое моделирование в электронной таблице.
, в приведенной ниже таблице 1.1 активной ячейкой является ячейка СЗ.
| Таблица 1.1. Электронные таблицы (столбцы, строки, ячейки) |
Рабочие листы и книги. При работе на компьютере электронная таблица существует в форме рабочего листа, который имеет имя (например, Лист 1). Рабочие листы объединяются вкниги, причем пользователь может вставлять, копировать, удалять и переименовывать рабочие листы. При создании, открытии или сохранении документа в электронных таблицах речь идет фактически о создании, открытии или сохранении книги.
При работе с электронными таблицами можно вводить и изменять данные одновременно на нескольких рабочих листах, а также выполнять вычисления на основе данных из нескольких листов.