<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Columns</title><link>https://sourceforge.net/p/funnelsort/wiki/Columns/</link><description>Recent changes to Columns</description><atom:link href="https://sourceforge.net/p/funnelsort/wiki/Columns/feed" rel="self"/><language>en</language><lastBuildDate>Fri, 13 Dec 2013 20:54:04 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/funnelsort/wiki/Columns/feed" rel="self" type="application/rss+xml"/><item><title>Columns modified by Chris DeGreef</title><link>https://sourceforge.net/p/funnelsort/wiki/Columns/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Columns are simply a way to define the layout of the input file(s).  A column can then be reference in the --&lt;span&gt;[OrderBy clause]&lt;/span&gt; and the --&lt;span&gt;[Where clause]&lt;/span&gt;.  Other than being reference in this way they do not directly have any affect on the sort process.&lt;/p&gt;
&lt;p&gt;An interesting way to organize your sorting commands is to define the input (using --columns of course) and store just that in a command file (Trade.def).  Then include that command file in subsequent sort commands.&lt;/p&gt;
&lt;p&gt;The Trade.def file:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
 --columns&lt;br /&gt;
     (String --name BrokerBadgeId --offset 10 --length 5)&lt;br /&gt;
     (String --name State --offset 78 --length 2)&lt;br /&gt;
     (String --name TradeId --offset 0 --length 8)&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Subsequent use in a sort command:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;
 funnel trades.txt @Trade.def --where(State='IL') --orderBy(BrokerBadgeId)(TradeId desc)&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Funnel allows for any number of columns to be defined.  The order they are specified is not important.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;Although --keys will always be supported the --orderBy is the author's preferred means of specifying the order of the file.  --keys and --orderBy can not be used in the same sort.&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The general format of a column specification is&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;columns&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;one&lt;/span&gt; &lt;span class="n"&gt;column&lt;/span&gt; &lt;span class="n"&gt;definition&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;second&lt;/span&gt; &lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;third&lt;/span&gt; &lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;and&lt;/span&gt; &lt;span class="n"&gt;so&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;A column definition can take on one of two forms.  "format" is optional.  The "offset" is always zero-relative.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;columnType&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="n"&gt;myKeyName&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;offset&lt;/span&gt; &lt;span class="n"&gt;offset&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;length&lt;/span&gt; &lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;format&lt;/span&gt; &lt;span class="n"&gt;format&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The second form is the CSV column.  It must be used if the file is defined as a CSV file.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;columnType&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="n"&gt;myKeyName&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;field&lt;/span&gt; &lt;span class="n"&gt;fieldNo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;format&lt;/span&gt; &lt;span class="n"&gt;format&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Column Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;String&lt;/td&gt;
&lt;td&gt;normal readable character data like "ABC"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Integer&lt;/td&gt;
&lt;td&gt;a readable integer value like "1234"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Float&lt;/td&gt;
&lt;td&gt;a readable floating point number like "456.78"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BInteger&lt;/td&gt;
&lt;td&gt;an encoded integer value&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BFloat&lt;/td&gt;
&lt;td&gt;an encoded floating point number&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Date&lt;/td&gt;
&lt;td&gt;a readable Java-like date (SimpleDateFormat)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The encoded columns are the standard Java encoded numbers for Byte, Short, Integer, Long, Float, and Double.  The length of the key determines which one it is.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Key Type&lt;/th&gt;
&lt;th&gt;Data Type&lt;/th&gt;
&lt;th&gt;Length&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;BInteger&lt;/td&gt;
&lt;td&gt;Byte&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BInteger&lt;/td&gt;
&lt;td&gt;Short&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BInteger&lt;/td&gt;
&lt;td&gt;Integer&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BInteger&lt;/td&gt;
&lt;td&gt;Long&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BFloat&lt;/td&gt;
&lt;td&gt;Float&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BFloat&lt;/td&gt;
&lt;td&gt;Double&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Chris DeGreef</dc:creator><pubDate>Fri, 13 Dec 2013 20:54:04 -0000</pubDate><guid>https://sourceforge.netf1d7483277e7a46ec554bdfe6339a2f87da04ec6</guid></item></channel></rss>