SlideShare a Scribd company logo
Работа с источниками данных
в GLPK
v 0.2 2015-04-23
План занятия
• Как устроены таблицы
• Поддерживаемые источники данных
• Использование данных в текстовых файлах
• Интерфейс доступа к данным ODBC
• Использование таблиц данных в ODBC-источниках
• Создание источника данных ODBC
• Особенности работы с данными в Excel
• Особенности работы с данными в Access
2
Работа с источниками данных
Модель.mod
Данные.dat
GLPK / AMPL +
решатель
Отчеты по
решению
Вывод в консоль
Модель.mod
GLPK / AMPL +
решатель
Таблица данных
Таблица данных
Визуализация,
анализ
3
Как устроены таблицы данных
• В строках таблицы находятся записи о некоторых объектах (товары, заказы, …)
• Столбцы таблицы – это характеристики (параметры) объекта
• В таблице есть уникальный столбец (один или несколько) – первичный ключ
• Первичный ключ используются для ссылки на конкретный объект
• Множества в 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
Описание таблицы данных в GLPK
• Для чтения данных:
table <имя> IN ‘<драйвер>’ ‘<строка подключения>’
‘имя таблицы в источнике данных’ :
<имя объекта GLPK> ~ <имя столбца таблицы>;
• Для записи данных:
table <имя> {<индексирующее выражение>} OUT
‘<драйвер>’ ‘<строка подключения>’
‘команды для очистки старых данных’
‘имя таблицы в источнике данных’ :
<имя объекта GLPK> ~ <имя столбца таблицы>;
5
Поддерживаемые 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
Текстовый формат
• Формат данных (файл 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
Особенности текстового формата
• Простой, человеко-читаемый
• Напрямую поддерживается
• Excel создает CSV-файлы «русского формата», которые не поддерживаются GLPK
8
Стандартные программные
интерфейсы доступа к данным
• 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
Чтение данных из источника (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
Чтение данных из источника (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
Запись данных в таблицу (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
Создание источника данных ODBC
• Источник данных (Data Source Name) – описание подключения к данным
• В Windows программу настройки источников можно запустить командой:
odbcad32.exe
• Если вы используете 32-битную версию Office с 64-битной версией
Windows x64, то программу настройки надо запускать из каталога
%windir%SysWOW64
• Создавайте файловые DSN
13
Содержимое файла DSN
• Рекомендуем использовать относительные пути к файлам Excel и Access
• Если собираетесь писать в файл Excel - убедитесь, что он не read only
14
Особенности 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
Чтение данных из таблицы 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
Запись данных в таблицу 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
Особенности 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

More Related Content

PDF
Тренинг GLPK, часть 1: Модель планирования производства
PDF
Тренинг GLPK, часть 2: Двухиндексные задачи
PDF
Трансформация данных в Deductor Studio
PDF
Моделирование цепей поставок: принципы и инструменты
PDF
Тренинг GLPK, часть 3: Транспортная задача
PPT
Прогнозирование - Лекция 7. Oracle Demand Management
PDF
Визуализация данных. Аналитическая платформа Tableau.
PPTX
паттерны проектирования источников данных
Тренинг GLPK, часть 1: Модель планирования производства
Тренинг GLPK, часть 2: Двухиндексные задачи
Трансформация данных в Deductor Studio
Моделирование цепей поставок: принципы и инструменты
Тренинг GLPK, часть 3: Транспортная задача
Прогнозирование - Лекция 7. Oracle Demand Management
Визуализация данных. Аналитическая платформа Tableau.
паттерны проектирования источников данных

What's hot (10)

PPTX
Паттерны проектирования источников данных
PPTX
Основы создания витрин данных - создание схемы звезда и снежинка
PPTX
24 25 запросы
PDF
0031
PPTX
How To Make Your Dashboard Smaller
PPTX
создание запросов, отчётов, Web страниц
PPT
акцесс изменён
PPTX
B pwin&ramus
PPTX
DBD lection 3. Outer and inner joins, nested queries, user views. In Russian.
PPT
0013
Паттерны проектирования источников данных
Основы создания витрин данных - создание схемы звезда и снежинка
24 25 запросы
0031
How To Make Your Dashboard Smaller
создание запросов, отчётов, Web страниц
акцесс изменён
B pwin&ramus
DBD lection 3. Outer and inner joins, nested queries, user views. In Russian.
0013
Ad

Viewers also liked (9)

PDF
Визуализация данных на географических картах в Tableau. Следующий уровень.
PDF
Визуализация данных на географических картах в Tableau (базовый уровень)
PPT
Прогнозирование - Лекция 5. Методология Бокса-Дженкинса (модели ARIMA)
PPT
Прогнозирование - Лекция 1. Компьютерные инструменты прогнозирования
PPT
Прогнозирование - Лекция 4. Регрессионные модели временных рядов
PPT
Прогнозирование - Лекция 6. Использование инструментов подготовки данных и пр...
PPT
Прогнозирование - Лекция 2. Корреляционный анализ и простая линейная регрессия
PPT
Прогнозирование - Лекция 3. Множественная регрессия
PPTX
TextMining with R
Визуализация данных на географических картах в Tableau. Следующий уровень.
Визуализация данных на географических картах в Tableau (базовый уровень)
Прогнозирование - Лекция 5. Методология Бокса-Дженкинса (модели ARIMA)
Прогнозирование - Лекция 1. Компьютерные инструменты прогнозирования
Прогнозирование - Лекция 4. Регрессионные модели временных рядов
Прогнозирование - Лекция 6. Использование инструментов подготовки данных и пр...
Прогнозирование - Лекция 2. Корреляционный анализ и простая линейная регрессия
Прогнозирование - Лекция 3. Множественная регрессия
TextMining with R
Ad

Similar to Взаимодействие с источниками данных в GLPK (20)

PPTX
PPT
лабраб 4
PPT
Drupal Migrate
PPTX
Расширение библиотеки Slick
PPT
базы данных в Delphi
PPTX
How optimize PL/SQL by decrease overhead for context switching between SQL an...
PPT
0041
PDF
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
PPTX
Витрины данных - загрузка данных, разработка процессов ETL
PPTX
Управление Данными. Лекция 7
PPTX
SQL________________________________.pptx
PDF
Дмитрий Долгов
DOC
0039
PPTX
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
PDF
ekonomicheskie_finansovie_rascheti_excel.pdf
PPT
базы данных
PPT
лабораторная работа 2
PPTX
Разработка бизнес приложений (5)
PDF
Лекция Android. БД SQLite, ContentProvider, Loader
PPTX
Разработка, тестирование и развертывание баз данных в Visual Studio Team Syst...
лабраб 4
Drupal Migrate
Расширение библиотеки Slick
базы данных в Delphi
How optimize PL/SQL by decrease overhead for context switching between SQL an...
0041
Сергей Аверин, То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Витрины данных - загрузка данных, разработка процессов ETL
Управление Данными. Лекция 7
SQL________________________________.pptx
Дмитрий Долгов
0039
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
ekonomicheskie_finansovie_rascheti_excel.pdf
базы данных
лабораторная работа 2
Разработка бизнес приложений (5)
Лекция Android. БД SQLite, ContentProvider, Loader
Разработка, тестирование и развертывание баз данных в Visual Studio Team Syst...

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

  • 1. Работа с источниками данных в GLPK v 0.2 2015-04-23
  • 2. План занятия • Как устроены таблицы • Поддерживаемые источники данных • Использование данных в текстовых файлах • Интерфейс доступа к данным ODBC • Использование таблиц данных в ODBC-источниках • Создание источника данных ODBC • Особенности работы с данными в Excel • Особенности работы с данными в Access 2
  • 3. Работа с источниками данных Модель.mod Данные.dat GLPK / AMPL + решатель Отчеты по решению Вывод в консоль Модель.mod GLPK / AMPL + решатель Таблица данных Таблица данных Визуализация, анализ 3
  • 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. Описание таблицы данных в GLPK • Для чтения данных: table <имя> IN ‘<драйвер>’ ‘<строка подключения>’ ‘имя таблицы в источнике данных’ : <имя объекта GLPK> ~ <имя столбца таблицы>; • Для записи данных: table <имя> {<индексирующее выражение>} OUT ‘<драйвер>’ ‘<строка подключения>’ ‘команды для очистки старых данных’ ‘имя таблицы в источнике данных’ : <имя объекта GLPK> ~ <имя столбца таблицы>; 5
  • 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. Текстовый формат • Формат данных (файл 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. Особенности текстового формата • Простой, человеко-читаемый • Напрямую поддерживается • Excel создает CSV-файлы «русского формата», которые не поддерживаются GLPK 8
  • 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. Чтение данных из источника (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. Чтение данных из источника (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. Запись данных в таблицу (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. Создание источника данных ODBC • Источник данных (Data Source Name) – описание подключения к данным • В Windows программу настройки источников можно запустить командой: odbcad32.exe • Если вы используете 32-битную версию Office с 64-битной версией Windows x64, то программу настройки надо запускать из каталога %windir%SysWOW64 • Создавайте файловые DSN 13
  • 14. Содержимое файла DSN • Рекомендуем использовать относительные пути к файлам Excel и Access • Если собираетесь писать в файл Excel - убедитесь, что он не read only 14
  • 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. Чтение данных из таблицы 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. Запись данных в таблицу 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. Особенности 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