Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Взаимодействие с источниками данных в GLPK

415 views

Published on

В презентации рассмотрено взаимодействие моделей в GLPK с источниками данных - текстовыми файлами, Excel, базами данных

Published in: Data & Analytics
  • Be the first to comment

  • Be the first to like this

Взаимодействие с источниками данных в GLPK

  1. 1. Работа с источниками данных в GLPK v 0.2 2015-04-23
  2. 2. План занятия • Как устроены таблицы • Поддерживаемые источники данных • Использование данных в текстовых файлах • Интерфейс доступа к данным ODBC • Использование таблиц данных в ODBC-источниках • Создание источника данных ODBC • Особенности работы с данными в Excel • Особенности работы с данными в Access 2
  3. 3. Работа с источниками данных Модель.mod Данные.dat GLPK / AMPL + решатель Отчеты по решению Вывод в консоль Модель.mod GLPK / AMPL + решатель Таблица данных Таблица данных Визуализация, анализ 3
  4. 4. Как устроены таблицы данных • В строках таблицы находятся записи о некоторых объектах (товары, заказы, …) • Столбцы таблицы – это характеристики (параметры) объекта • В таблице есть уникальный столбец (один или несколько) – первичный ключ • Первичный ключ используются для ссылки на конкретный объект • Множества в GLPK – то же самое, что ключевые столбцы в таблицах • Параметры в GLPK считываются из столбцов таблицы Код Название Цена 1 Хлеб 30 2 Молоко 50 3 Масло 80 Код периода Код товара Количество 1 1 1000 1 2 500 1 3 200 2 1 1200 2 2 600 2 3 300 3 1 1500 3 2 700 3 3 400 Код Период 1 Январь 2 Февраль 3 Март Периоды Товары Продажи 4
  5. 5. Описание таблицы данных в GLPK • Для чтения данных: table <имя> IN ‘<драйвер>’ ‘<строка подключения>’ ‘имя таблицы в источнике данных’ : <имя объекта GLPK> ~ <имя столбца таблицы>; • Для записи данных: table <имя> {<индексирующее выражение>} OUT ‘<драйвер>’ ‘<строка подключения>’ ‘команды для очистки старых данных’ ‘имя таблицы в источнике данных’ : <имя объекта GLPK> ~ <имя столбца таблицы>; 5
  6. 6. Поддерживаемые GLPK источники данных • Прямая поддержка (требуется только GLPK): – Text/CSV – MySQL • Поддержка через ODBC: – Excel – Access – dBase – sqlite – любая промышленная СУБД • ODBC – это стандарт для windows-систем. • Для unix-like систем (Linux, MacOS X) нужен iODBC, unixODBC • см. http://en.wikibooks.org/wiki/GLPK/ODBC 6
  7. 7. Текстовый формат • Формат данных (файл orfc.csv) csv = Comma Separated Values; GLPK поддерживает только американский формат разделителей • Загрузка данных в модель: "Код","code","name","cal","prota","protv","fata","fatv","carb" 1,2,"Баранки, сушки",272,0.00,8.60,0.00,0.50,56.80 2,194,"Батоны",240,0.00,7.50,0.00,1.00,49.50 3,193,"Булки городские",270,0.00,7.90,0.00,1.90,53.00 7
  8. 8. Особенности текстового формата • Простой, человеко-читаемый • Напрямую поддерживается • Excel создает CSV-файлы «русского формата», которые не поддерживаются GLPK 8
  9. 9. Стандартные программные интерфейсы доступа к данным • ODBC – Open Database Connectivity (X/Open, 1990) • JDBC – часть Java Development Kit (Sun, 1997) Клиент (front-end) ODBC-клиент (приложение) ODBC- драйвер SQL Данные CSV, DBF, XLS MS Access, FoxPro, Btrieve ODBC API ODBC SDK SQL Server, Oracle, DB2, MySQL… Сервер (Back-End) GLPK, Access, Excel… Команды ODBC API CSV, DBF, XLS MS Access, FoxPro, Btrieve 9
  10. 10. Чтение данных из источника (GLPK) • Описание таблицы для чтения данных: table <имя> IN ‘<драйвер>’ ‘<строка подключения>’ ‘имя таблицы’ : <имя объекта GLPK> ~ <имя столбца таблицы>; set I dimen 2; param st{I}; table t IN 'ODBC' 'FILEDSN=supply.dsn' 'stock' : I <- [product, period], st ~ quantity; столбцы, определяющие индексы элементов множества (первичный ключ)product period quantity A 1 10 A 2 12 B 1 100 B 2 101 Первичный ключ (Primary Key) – столбец, или несколько столбцов, уникальным образом идентифицирующих каждую запись в таблице данных 10
  11. 11. Чтение данных из источника (GLPK) • Вместо имени таблицы можно указывать SQL-запрос на выборку данных: table <имя> IN ‘<драйвер>’ ‘<строка подключения>’ ‘SQL-запрос на выборку’ : <имя объекта GLPK> ~ <имя столбца таблицы>; set I dimen 2; param st{I}; table t IN 'ODBC' 'FILEDSN=supply.dsn' 'SELECT product, period, quantity' ' FROM stock' : I <- [product, period], st ~ quantity; столбцы, определяющие индексы элементов множества (первичный ключ) product period quantity A 1 10 A 2 12 B 1 100 B 2 101 11
  12. 12. Запись данных в таблицу (GLPK) table <имя> {<индексирующее выражение>} OUT ‘<драйвер>’ ‘<строка подключения>’ ‘SQL-запрос для очистки данных’ ‘имя таблицы’ : <имя объекта GLPK> ~ <имя столбца таблицы>; table t {p in P, t in T} OUT 'ODBC' 'FILEDSN=supply.dsn' 'DELETE FROM stock;' 'stock' : p ~ product, t ~ period, st[p, t] ~ quantity; http://en.wikibooks.org/wiki/GLPK/Table_Statement product period quantity A 1 10 A 2 12 B 1 100 B 2 101 set P := A B; set T := 1..2; param st := A 1 10, A 2 12, B 1 100, B 2 101; Ключевые столбцы определяются индексирующим выражением Иногда требуются другие способы обновления данных, они описаны здесь: 12
  13. 13. Создание источника данных ODBC • Источник данных (Data Source Name) – описание подключения к данным • В Windows программу настройки источников можно запустить командой: odbcad32.exe • Если вы используете 32-битную версию Office с 64-битной версией Windows x64, то программу настройки надо запускать из каталога %windir%SysWOW64 • Создавайте файловые DSN 13
  14. 14. Содержимое файла DSN • Рекомендуем использовать относительные пути к файлам Excel и Access • Если собираетесь писать в файл Excel - убедитесь, что он не read only 14
  15. 15. Особенности Excel • Не поддерживает DELETE FROM • Не поддерживает DROP TABLE IF EXISTS • Автоматически определяет типы данных при чтении (может определять неправильно) • Не работает при открытой книге • Рекомендуем использовать формат файла Excel 2003 (xls) Типы данных при описании столбцов новой таблице CURRENCY DATETIME LOGICAL NUMBER TEXT http://msdn.microsoft.com/en-us/library/ms712640(v=vs.85).aspx 15
  16. 16. Чтение данных из таблицы Excel (GLPK) • Описание таблицы для чтения данных: table <имя> IN ‘<драйвер>’ ‘<строка подключения>’ ‘[имя таблицы]’ : <имя объекта GLPK> ~ <имя столбца таблицы>; • Правила описания имени таблицы: – Если таблица содержится на отдельном листе с именем Data, то имя таблицы в GLPK надо указывать так: [Data$] – Если таблица содержится в именованном диапазоне Data (имя задано в диспетчере имен), то имя таблицы в GLPK надо указывать так: [Data], т.е. без '$' в конце – Можно использовать адреса диапазонов. Например, таблица, находящаяся в диапазоне A1:F10 листа MyData, должна быть указана так: [MyData$A1:F10] – Имена, заданные для таблиц (Ctrl-T) в Excel не поддерживаются set I dimen 2; param st{I}; table t IN 'ODBC' 'FILEDSN=supply.dsn' '[stock$]' : I <- [product, period], st ~ quantity; Пример чтения данных из таблицы на отдельном листе stock product period quantity A 1 10 A 2 12 B 1 100 B 2 101 16
  17. 17. Запись данных в таблицу Excel (GLPK) table <имя> {<индексирующее выражение>} OUT ‘<драйвер>’ ‘<строка подключения>’ ‘SQL-запрос для удаления и создания таблицы’ ‘[имя таблицы$]’ : <имя объекта GLPK> ~ <имя столбца таблицы>; table t {p in P, t in T} OUT 'ODBC' 'FILEDSN=supply.dsn' 'DROP TABLE stock;' 'CREATE TABLE [stock]' '(product TEXT, period NUMBER, quantity NUMBER);' '[stock$]' : p ~ product, t ~ period, st[p, t] ~ quantity; product period quantity A 1 10 A 2 12 B 1 100 B 2 101 set P := A B; set T := 1..2; param st := A 1 10, A 2 12, B 1 100, B 2 101; таблица будет создана на отдельном листе 17
  18. 18. Особенности Access Microsoft Access data type Data type (CREATETABLE) BIT BIT COUNTER COUNTER CURRENCY CURRENCY DATE/TIME DATETIME LONG TEXT LONGTEXT MEMO LONGTEXT NUMBER (FieldSize= SINGLE) SINGLE NUMBER (FieldSize= DOUBLE) DOUBLE NUMBER (FieldSize= BYTE) UNSIGNED BYTE NUMBER (FieldSize= INTEGER) SHORT NUMBER (FieldSize= LONG INTEGER) LONG NUMERIC NUMERIC TEXT VARCHAR http://msdn.microsoft.com/en-us/library/ms714540(v=vs.85).aspx • Access поддерживает DELETE FROM, поэтому можно просто создавать таблицы в графическом конструкторе Access • При необходимости программного создания, используйте типы данных, указанные в таблице 18

×