![]() | |||||||||||||
| |||||||||||||
Dataframe formats Description This example demonstrates dataframe-style representation of data. This functionality is provided for CSV format files via the 'diskdata' I/O driver and subroutine of module mmetc and for databases accessed through an ODBC connection via SQL commands.
Source Files By clicking on a file name, a preview is opened at the bottom of this page.
dataframecsv.mos (!****************************************************** Mosel Example Problems ====================== file dataframecsv.mos ````````````````````` Dataframe functionality for reading and writing CSV files via 'diskdata' (I/O driver and subroutine) (c) 2021 Fair Isaac Corporation author: S.Heipcke, Oct 2021 *******************************************************!) model 'dataframecsv' uses 'mmsystem', 'mmetc' public declarations data=` C_e,C_d,C_c,C_b,C_a,C_s 1,,"3",4,5.5,"r1" 6,7,"8",,10.5,"r2" ` datanh=` 1,,"3",4,5.5,"r1" 6,7,"8",,10.5,"r2" ` end-declarations CSVFILE:="text:data" CSVFILENH:="text:datanh" !*** I/O driver version populating row counter and column (field names) indices declarations dfd: dynamic array(r:range, s:set of string) of text dff: array(rf:range, sf:set of string) of text dfa: dynamic array(ra:range, sa:set of string) of any end-declarations initialisations from 'mmetc.diskdata:' dfd as "dataframe;skiph;"+CSVFILE dff as "dataframe;skiph;"+CSVFILE dfa as "dataframe;skiph;"+CSVFILE end-initialisations writeln("dyn:", dfd.size, " dns:", dff.size) ! Output displayed: dyn:10 dns:12 writeln(dfa) initialisations to 'mmetc.diskdata:' dfd as "dataframe;skiph;res.csv" ! Output CSV file with header line dfd as "dataframe;resnh.csv" ! Output CSV file without header end-initialisations !*** Subroutine version populating row counter and column (field names) indices declarations dfd1: dynamic array(r1:range, s1:set of string) of text dff1: array(r1f:range, s1f:set of string) of text dfa1: dynamic array(ra1:range, sa1:set of string) of any end-declarations diskdata(ETC_DATAFRAME+ETC_SKIPH, CSVFILE, dfd1) diskdata(ETC_DATAFRAME+ETC_SKIPH, CSVFILE, dff1) diskdata(ETC_DATAFRAME+ETC_SKIPH, CSVFILE, dfa1) writeln("dyn:", dfd.size, " dns:", dff.size) ! Output displayed: dyn:10 dns:12 writeln(dfa1) ! Output CSV file with and without header line diskdata(ETC_SKIPH+ETC_OUT+ETC_CSV+ETC_DATAFRAME, "res1.csv", dfd1) diskdata(ETC_OUT+ETC_CSV+ETC_DATAFRAME, "resnh1.csv", dfd1) !*** No header line declarations dfd2: dynamic array(r21:range, r2:range) of text end-declarations initialisations from 'mmetc.diskdata:' dfd2 as "dataframe;"+CSVFILENH end-initialisations ! Same as: ! diskdata(ETC_DATAFRAME, CSVFILENH, dfd2) writeln("size df2=", dfd2.size) ! Output displayed: size df2=10 writeln("r1=", r21, " r2=", r2) ! Output displayed: r1=1..2 r2=1..6 !*** Selection of fields declarations dfd3: dynamic array(r3:range,s3:set of string) of any end-declarations initialisations from 'mmetc.diskdata:' dfd3 as "dataframe;skiph;csv(C_d,C_b);"+CSVFILE end-initialisations writeln("size df3=", dfd3.size) ! Output displayed: size df3=2 !*** Fixed number of rows declarations dfd4: dynamic array(1..1,s4:set of string) of text end-declarations initialisations from 'mmetc.diskdata:' dfd4 as "dataframe;skiph;"+CSVFILE end-initialisations ! Same as: ! diskdata(ETC_DATAFRAME+ETC_SKIPH, CSVFILE, df4) writeln("size df4=", dfd4.size) ! Output displayed: size df4=5 !*** Typed (integer) array declarations dfi: dynamic array(ri:range,si:set of string) of integer end-declarations ! Reading data of other types into an integer array will result in an ! I/O error: instead of stopping we continue to display what has been read setparam("ioctrl",true) initialisations from 'mmetc.diskdata:' dfi as "dataframe;skiph;"+CSVFILE end-initialisations ! Same as: ! diskdata(ETC_DATAFRAME+ETC_SKIPH, CSVFILE, dfi) setparam("ioctrl",false) if getparam("iostatus")<>0 then writeln("Error reading input file, interrupted in line ", ri.size) end-if ! Display what we have managed to read writeln(dfi, " size dfi=", dfi.size) ! Ouput displayed: size dfi=4 end-model
| |||||||||||||
© Copyright 2022 Fair Isaac Corporation. |