Dense vs. sparse data format
|
|
|
| Type: | Programming |
| Rating: | 2 (easy-medium) |
| Description: | The example 'indexeg' shows how to read data tables with different formats from a spreadsheet:
A spreadsheet may be accessed from Mosel through an ODBC connection (using the odbc driver, indexeg.mos, or with SQL statements, indexeg2.mos), with the software-specific driver excel (indexeg3.mos), or with the portable mmsheet module that can be used to read and write xls, xlsx (indexeg5.mos) and csv (indexeg6.mos) files. |
| File(s): | indexeg.mos, indexeg2.mos, indexeg3.mos, indexeg4.mos, indexeg5.mos, indexeg6.mos |
| Data file(s): | indexeg.csv, indexeg.xls, indexeg.xlsx, indexeg.sqlite |
|
|
|
| indexeg.mos |
(!*******************************************************
Mosel Example Problems
======================
file indexeg.mos
````````````````
Using ODBC with dense and sparse format data tables.
- Using 'initializations from' with the odbc driver -
(c) 2008 Fair Isaac Corporation
author: S. Heipcke, 2006, rev. Feb. 2014
*******************************************************!)
model ODBCImpEx
uses "mmodbc"
declarations
A: array(1..3, 1..2) of real
B: array(1..2, 1..3) of real
C: array(1..2, 1..3) of real
D: array(R:range, 1..3) of real
CSTR: string
end-declarations
! CSTR:= 'mmodbc.odbc:indexeg.xls'
CSTR:= "mmodbc.odbc:debug;indexeg.sqlite"
! CSTR:= "mmodbc.odbc:debug;DSN=sqlite;DATABASE=indexeg.sqlite"
setparam("SQLverbose",true)
! Data must be dense - there are not enough columns to serve as index!
initializations from CSTR
A as 'Range3by2'
end-initializations
writeln("\n ===A=== ")
forall(i in 1..3)
writeln("Row(",i,"): ", A(i,1), " ", A(i,2))
! Dense data
initializations from CSTR
B as 'noindex;Range2by3'
end-initializations
writeln("\n ===B=== ")
forall(i in 1..2)
writeln("Row(",i,"): ", B(i,1), " ", B(i,2), " ", B(i,3))
! Indexed data
initializations from CSTR
C as 'Range2by3i'
end-initializations
writeln("\n ===C=== ")
forall(i in 1..2)
writeln("Row(",i,"): ", C(i,1), " ", C(i,2), " ", C(i,3))
! Partially indexed ("rectangular format") data
initializations from CSTR
D as 'RectRange'
end-initializations
writeln("\n ===D=== ")
forall(i in R)
writeln("Row(",i,"): ", D(i,1), " ", D(i,2), " ", D(i,3))
end-model
|
| indexeg2.mos |
(!*******************************************************
Mosel Example Problems
======================
file indexeg2.mos
`````````````````
Using ODBC with dense and sparse format data tables.
- Using SQL statements -
(c) 2008 Fair Isaac Corporation
author: Y. Colombani, 2002, rev. Sep. 2018
*******************************************************!)
model ODBCImpEx2
uses "mmodbc"
declarations
A: array(1..3, 1..2) of real
B: array(1..2, 1..3) of real
C: array(1..2, 1..3) of real
D: array(R:range, 1..3) of real
CSTR: string
end-declarations
! CSTR:= 'DSN=Excel Files;DBQ=C:/xpress/examples/mosel/WhitePapers/MoselData/indexeg.xls'
! CSTR:= 'indexeg.xls'
! CSTR:= 'DSN=sqlite;DATABASE=indexeg.sqlite'
CSTR:= 'indexeg.sqlite'
SQLconnect(CSTR)
setparam("SQLverbose",true)
setparam("SQLdebug",true)
! Data must be dense - there are not enough columns to serve as index!
SQLexecute("select * from Range3by2 ", A)
writeln("\n ===A=== ")
forall(i in 1..3)
writeln("Row(",i,"): ", A(i,1), " ", A(i,2))
setparam("SQLndxcol", false) ! Dense data
SQLexecute("select * from Range2by3 ", B)
writeln("\n ===B=== ")
forall(i in 1..2)
writeln("Row(",i,"): ", B(i,1), " ", B(i,2), " ", B(i,3))
setparam("SQLndxcol", true) ! Indexed data
SQLexecute("select * from Range2by3i ", C)
writeln("\n ===C=== ")
forall(i in 1..2)
writeln("Row(",i,"): ", C(i,1), " ", C(i,2), " ", C(i,3))
setparam("SQLndxcol", false) ! Partially indexed data
SQLexecute("select * from RectRange ", D)
writeln("\n ===D=== ")
forall(i in R)
writeln("Row(",i,"): ", D(i,1), " ", D(i,2), " ", D(i,3))
SQLdisconnect
end-model
|
| indexeg3.mos |
(!*******************************************************
Mosel Example Problems
======================
file indexeg3.mos
`````````````````
Using ODBC with dense and sparse format data tables.
- Using 'initializations from' with the excel driver -
(c) 2008 Fair Isaac Corporation
author: S. Heipcke, 2007, rev. Apr. 2014
*******************************************************!)
model ODBCImpEx3
uses "mmsheet"
declarations
A: array(1..3, 1..2) of real
B: array(1..2, 1..3) of real
C: array(1..2, 1..3) of real
D: array(R:range, 1..3) of real
CSTR: string
end-declarations
CSTR:= 'mmsheet.excel:indexeg.xls'
! Dense data ('noindex'), skipping the header line ('skiph')
initializations from CSTR
A as 'skiph;noindex;Range3by2'
end-initializations
writeln("\n ===A=== ")
forall(i in 1..3)
writeln("Row(",i,"): ", A(i,1), " ", A(i,2))
! Dense data
initializations from CSTR
B as 'skiph;noindex;Range2by3'
end-initializations
writeln("\n ===B=== ")
forall(i in 1..2)
writeln("Row(",i,"): ", B(i,1), " ", B(i,2), " ", B(i,3))
! Indexed data
initializations from CSTR
C as 'skiph;Range2by3i'
end-initializations
writeln("\n ===C=== ")
forall(i in 1..2)
writeln("Row(",i,"): ", C(i,1), " ", C(i,2), " ", C(i,3))
! Partially indexed ("rectangular format") data
initializations from CSTR
D as 'skiph;partndx;RectRange'
end-initializations
writeln("\n ===D=== ")
forall(i in R)
writeln("Row(",i,"): ", D(i,1), " ", D(i,2), " ", D(i,3))
end-model
|
| indexeg4.mos |
(!*******************************************************
Mosel Example Problems
======================
file indexeg4.mos
`````````````````
Reading dense and sparse format data tables
from an Oracle database.
- Using 'initializations' and SQL statements -
(c) 2008 Fair Isaac Corporation
author: S. Heipcke, 2007, rev. Feb. 2014
*******************************************************!)
model OCIImpEx
uses "mmoci"
parameters
DB="myname/mypassword@dbname" ! Login to Oracle database (not provided)
end-parameters
declarations
A,A2: array(1..3, 1..2) of real
B,B2: array(1..2, 1..3) of real
C,C2: array(1..2, 1..3) of real
D,D2: array(R:range, 1..3) of real
end-declarations
! **** Using SQL statements ****
setparam("OCIverbose",true)
OCIlogon(DB)
setparam("OCIdebug",true)
! Data must be dense - there are not enough columns to serve as index!
OCIexecute("select * from Range3by2 ", A)
writeln("\n ===A=== ")
forall(i in 1..3) writeln("Row(",i,"): ", A(i,1), " ", A(i,2))
setparam("OCIndxcol", false) ! Dense data
OCIexecute("select * from Range2by3 ", B)
writeln("\n ===B=== ")
forall(i in 1..2)
writeln("Row(",i,"): ", B(i,1), " ", B(i,2), " ", B(i,3))
setparam("OCIndxcol", true) ! Indexed data
OCIexecute("select * from Range2by3i ", C)
writeln("\n ===C=== ")
forall(i in 1..2)
writeln("Row(",i,"): ", C(i,1), " ", C(i,2), " ", C(i,3))
setparam("OCIndxcol", false) ! Partially indexed data
OCIexecute("select * from RectRange ", D)
writeln("\n ===D=== ")
forall(i in R)
writeln("Row(",i,"): ", D(i,1), " ", D(i,2), " ", D(i,3))
OCIlogoff
! **** Using 'initializations from' ****
initializations from "mmoci.oci:"+DB
A2 as 'Range3by2'
B2 as 'noindex;Range2by3'
C2 as 'Range2by3i'
D2 as 'noindex;RectRange'
end-initializations
writeln("\n ===A2=== ")
forall(i in 1..3) writeln("Row(",i,"): ", A2(i,1), " ", A2(i,2))
writeln("\n ===B2=== ")
forall(i in 1..2)
writeln("Row(",i,"): ", B2(i,1), " ", B2(i,2), " ", B2(i,3))
writeln("\n ===C2=== ")
forall(i in 1..2)
writeln("Row(",i,"): ", C2(i,1), " ", C2(i,2), " ", C2(i,3))
writeln("\n ===D2=== ")
forall(i in R)
writeln("Row(",i,"): ", D2(i,1), " ", D2(i,2), " ", D2(i,3))
end-model
**************************************************
! Creation of data tables in an Oracle database:
declarations
tsucc: array ({false,true}) of string
end-declarations
tsucc(false):="failed"; tsucc(true):="succeeded"
OCIexecute("create table Range3by2 (First float, Second float)")
writeln(" - Create Range3by2 (",tsucc(getparam("OCIsuccess")),")")
OCIexecute("insert into Range3by2 (First, Second) values (:1, :2)", [ 1.2, 2.2, 2.1, 2.2, 3.1, 4.4])
writeln(" - Insert values in Range3by2 (",tsucc(getparam("OCIsuccess")),",",
getparam("OCIrowcnt"),'/',getparam("OCIrowxfr")," rows)")
OCIexecute("create table Range2by3 (First float, Second float, Third float)")
writeln(" - Create Range2by3 (",tsucc(getparam("OCIsuccess")),")")
OCIexecute("insert into Range2by3 (First, Second, Third) values (:1, :2, :3)", [ 1.2, 1.2, 1.3, 2.1, 2.2, 2.3])
writeln(" - Insert values in Range2by3 (",tsucc(getparam("OCIsuccess")),",",
getparam("OCIrowcnt"),'/',getparam("OCIrowxfr")," rows)")
OCIexecute("create table Range2by3i (Firsti integer, Secondi integer, Value float)")
writeln(" - Create Range2by3i (",tsucc(getparam("OCIsuccess")),")")
OCIexecute("insert into Range2by3i (Firsti, Secondi, Value) values (:1, :2, :3)", [ 1, 1, 1.1, 1, 2, 1.2, 1, 3, 1.3, 2, 1, 2.1, 2, 2, 2.2, 2, 3, 2.3])
writeln(" - Insert values in Range2by3i (",tsucc(getparam("OCIsuccess")),",",
getparam("OCIrowcnt"),'/',getparam("OCIrowxfr")," rows)")
OCIexecute("create table RectRange (Firsti integer, Second_1 float, Second_2 float, Second_3 float)")
writeln(" - Create RectRange (",tsucc(getparam("OCIsuccess")),")")
OCIexecute("insert into RectRange (Firsti, Second_1, Second_2,Second_3) values (:1, :2, :3, :4)", [ 1, 1.1, 1.2, 1.3, 2, 2.1, 2.2, 2.3])
writeln(" - Insert values in RectRange (",tsucc(getparam("OCIsuccess")),",",
getparam("OCIrowcnt"),'/',getparam("OCIrowxfr")," rows)")
|
| indexeg5.mos |
(!*******************************************************
Mosel Example Problems
======================
file indexeg5.mos
`````````````````
Using ODBC with dense and sparse format data tables.
- Using 'initializations from' with the xls driver -
(c) 2012 Fair Isaac Corporation
author: S. Heipcke, Dec. 2012, rev. Apr. 2014
*******************************************************!)
model "ODBCImpEx3 (generic spreadsheet)"
uses "mmsheet"
parameters
! CSTR = 'mmsheet.xls:indexeg.xls'
CSTR = 'mmsheet.xlsx:indexeg.xlsx'
end-parameters
declarations
A: array(1..3, 1..2) of real
B: array(1..2, 1..3) of real
C: array(1..2, 1..3) of real
D: array(R:range, 1..3) of real
end-declarations
! Dense data ('noindex'), skipping the header line ('skiph')
initializations from CSTR
A as 'skiph;noindex;Range3by2'
end-initializations
writeln("\n ===A=== ")
forall(i in 1..3)
writeln("Row(",i,"): ", A(i,1), " ", A(i,2))
! Dense data
initializations from CSTR
B as 'skiph;noindex;Range2by3'
end-initializations
writeln("\n ===B=== ")
forall(i in 1..2)
writeln("Row(",i,"): ", B(i,1), " ", B(i,2), " ", B(i,3))
! Indexed data
initializations from CSTR
C as 'skiph;Range2by3i'
end-initializations
writeln("\n ===C=== ")
forall(i in 1..2)
writeln("Row(",i,"): ", C(i,1), " ", C(i,2), " ", C(i,3))
! Partially indexed ("rectangular format") data
initializations from CSTR
D as 'skiph;partndx;RectRange'
end-initializations
writeln("\n ===D=== ")
forall(i in R)
writeln("Row(",i,"): ", D(i,1), " ", D(i,2), " ", D(i,3))
end-model
|
| indexeg6.mos |
(!*******************************************************
Mosel Example Problems
======================
file indexeg6.mos
`````````````````
Using ODBC with dense and sparse format data tables.
- Using 'initializations from' with the csv driver -
(c) 2012 Fair Isaac Corporation
author: S. Heipcke, Dec. 2012, rev. Apr. 2014
*******************************************************!)
model "ODBCImpEx3 (CSV)"
uses "mmsheet"
parameters
CSTR = 'mmsheet.csv:indexeg.csv'
end-parameters
declarations
A: array(1..3, 1..2) of real
B: array(1..2, 1..3) of real
C: array(1..2, 1..3) of real
D: array(R:range, 1..3) of real
end-declarations
! Dense data ('noindex')
initializations from CSTR
A as 'noindex;[B3:C5]'
end-initializations
writeln("\n ===A=== ")
forall(i in 1..3)
writeln("Row(",i,"): ", A(i,1), " ", A(i,2))
! Dense data
initializations from CSTR
B as 'noindex;[B9:D10]'
end-initializations
writeln("\n ===B=== ")
forall(i in 1..2)
writeln("Row(",i,"): ", B(i,1), " ", B(i,2), " ", B(i,3))
! Indexed (=sparse format) data
initializations from CSTR
C as '[B14:D19]'
end-initializations
writeln("\n ===C=== ")
forall(i in 1..2)
writeln("Row(",i,"): ", C(i,1), " ", C(i,2), " ", C(i,3))
! Partially indexed ("rectangular format") data
initializations from CSTR
D as 'partndx;[B22:E23]'
end-initializations
writeln("\n ===D=== ")
forall(i in R)
writeln("Row(",i,"): ", D(i,1), " ", D(i,2), " ", D(i,3))
end-model
|
