diff options
Diffstat (limited to 'kdb+.html.markdown')
| -rw-r--r-- | kdb+.html.markdown | 60 | 
1 files changed, 31 insertions, 29 deletions
| diff --git a/kdb+.html.markdown b/kdb+.html.markdown index 772c8a47..680c01c1 100644 --- a/kdb+.html.markdown +++ b/kdb+.html.markdown @@ -2,11 +2,11 @@  language: kdb+  contributors:      - ["Matt Doherty", "https://github.com/picodoc"] -    - ["Jonny Press", "jonny.press@aquaq.co.uk"] +    - ["Jonny Press", "https://github.com/jonnypress"]  filename: learnkdb.q  --- -The q langauge and its database component kdb+ were developed by Arthur Whitney +The q language and its database component kdb+ were developed by Arthur Whitney  and released by Kx systems in 2003. q is a descendant of APL and as such is  very terse and a little strange looking for anyone from a "C heritage" language  background. Its expressiveness and vector oriented nature make it well suited @@ -26,6 +26,8 @@ separable so this distinction is not really useful.  All Feedback welcome!  You can reach me at matt.doherty@aquaq.co.uk, or Jonny  at jonny.press@aquaq.co.uk +To learn more about kdb+ you can join the [Personal kdb+](https://groups.google.com/forum/#!forum/personal-kdbplus) or [TorQ kdb+](https://groups.google.com/forum/#!forum/kdbtorq) group. +  ```  / Single line comments start with a forward-slash  / These can also be used in-line, so long as at least one whitespace character @@ -74,7 +76,7 @@ floor 3.14159 / => 3  / ...getting the absolute value...  abs -3.14159 / => 3.14159  / ...and many other things -/ see http://code.kx.com/wiki/Reference for more +/ see http://code.kx.com/q/ref/card/ for more  / q has no operator precedence, everything is evaluated right to left  / so results like this might take some getting used to @@ -172,7 +174,7 @@ t - 00:10:00.000 / => 00:50:00.000  d.year / => 2015i  d.mm / => 12i  d.dd / => 25i -/ see http://code.kx.com/wiki/JB:QforMortals2/atoms#Temporal_Data for more +/ see http://code.kx.com/q4m3/2_Basic_Data_Types_Atoms/#25-temporal-data for more  / q also has an infinity value so div by zero will not throw an error  1%0 / => 0w @@ -181,7 +183,7 @@ d.dd / => 25i  / And null types for representing missing values  0N / => null int  0n / => null float -/ see http://code.kx.com/wiki/JB:QforMortals2/atoms#Null_Values for more +/ see http://code.kx.com/q4m3/2_Basic_Data_Types_Atoms/#27-nulls for more  / q has standard control structures  / if is as you might expect (; separates the condition and instructions) @@ -299,7 +301,7 @@ l:1+til 9 / til is a useful shortcut for generating ranges  -5#l / => 5 6 7 8 9  / drop the last 5  -5_l / => 1 2 3 4 -/ find the first occurance of 4 +/ find the first occurrence of 4  l?4 / => 3  l[3] / => 4 @@ -314,7 +316,7 @@ key d / => `a`b`c  / and value the second  value d / => 1 2 3 -/ Indexing is indentical to lists +/ Indexing is identical to lists  / with the first list as a key instead of the position  d[`a] / => 1  d[`b] / => 2 @@ -404,7 +406,7 @@ k!t  / We can also use this shortcut for defining keyed tables  kt:([id:1 2 3]c1:1 2 3;c2:4 5 6;c3:7 8 9) -/ Records can then be retreived based on this key +/ Records can then be retrieved based on this key  kt[1]  / => c1| 1  / => c2| 4 @@ -426,7 +428,7 @@ kt[`id!1]  f:{x+x}  f[2] / => 4 -/ Functions can be annonymous and called at point of definition +/ Functions can be anonymous and called at point of definition  {x+x}[2] / => 4  / By default the last expression is returned @@ -438,7 +440,7 @@ f[2] / => 4  / Function arguments can be specified explicitly (separated by ;)  {[arg1;arg2] arg1+arg2}[1;2] / => 3 -/ or if ommited will default to x, y and z +/ or if omitted will default to x, y and z  {x+y+z}[1;2;3] / => 6  / Built in functions are no different, and can be called the same way (with []) @@ -470,7 +472,7 @@ a / => 1  / Functions cannot see nested scopes (only local and global)  {local:1;{:local}[]}[] / throws error as local is not defined in inner function -/ A function can have one or more of it's arguments fixed (projection) +/ A function can have one or more of its arguments fixed (projection)  f:+[4]  f[4] / => 8  f[5] / => 9 @@ -481,7 +483,7 @@ f[6] / => 10  //////////     q-sql      //////////  //////////////////////////////////// -/ q has it's own syntax for manipulating tables, similar to standard SQL +/ q has its own syntax for manipulating tables, similar to standard SQL  / This contains the usual suspects of select, insert, update etc.  / and some new functionality not typically available  / q-sql has two significant differences (other than syntax) to normal SQL: @@ -640,7 +642,7 @@ kt upsert ([]name:`Thomas`Chester;age:33 58;height:175 179;sex:`f`m)  / => Thomas 32  175    m  / Most of the standard SQL joins are present in q-sql, plus a few new friends -/ see http://code.kx.com/wiki/JB:QforMortals2/queries_q_sql#Joins +/ see http://code.kx.com/q4m3/9_Queries_q-sql/#99-joins  / the two most important (commonly used) are lj and aj  / lj is basically the same as SQL LEFT JOIN @@ -667,7 +669,7 @@ aj[`time`sym;trades;quotes]  / => 10:01:04 ge   150  / for each row in the trade table, the last (prevailing) quote (px) for that sym  / is joined on. -/ see http://code.kx.com/wiki/JB:QforMortals2/queries_q_sql#Asof_Join +/ see http://code.kx.com/q4m3/9_Queries_q-sql/#998-as-of-joins  ////////////////////////////////////  /////     Extra/Advanced      ////// @@ -680,21 +682,21 @@ aj[`time`sym;trades;quotes]  / where possible functionality should be vectorized (i.e. operations on lists)  / adverbs supplement this, modifying the behaviour of functions  / and providing loop type functionality when required -/ (in q functions are sometimes refered to as verbs, hence adverbs) +/ (in q functions are sometimes referred to as verbs, hence adverbs)  / the "each" adverb modifies a function to treat a list as individual variables  first each (1 2 3;4 5 6;7 8 9)  / => 1 4 7  / each-left (\:) and each-right (/:) modify a two-argument function  / to treat one of the arguments and individual variables instead of a list -1 2 3 +\: 1 2 3 -/ => 2 3 4 -/ => 3 4 5 -/ => 4 5 6 -1 2 3 +/: 1 2 3 -/ => 2 3 4 -/ => 3 4 5 -/ => 4 5 6 +1 2 3 +\: 11 22 33 +/ => 12 23 34 +/ => 13 24 35 +/ => 14 25 36 +1 2 3 +/: 11 22 33 +/ => 12 13 14 +/ => 23 24 25 +/ => 34 35 36  / The true alternatives to loops in q are the adverbs scan (\) and over (/)  / their behaviour differs based on the number of arguments the function they @@ -714,7 +716,7 @@ first each (1 2 3;4 5 6;7 8 9)  {x + y}/[1 2 3 4 5] / => 15 (only the final result)  / There are other adverbs and uses, this is only intended as quick overview -/ http://code.kx.com/wiki/JB:QforMortals2/functions#Adverbs +/ http://code.kx.com/q4m3/6_Functions/#67-adverbs  ////// Scripts //////  / q scripts can be loaded from a q session using the "\l" command @@ -754,21 +756,21 @@ select from splayed / (the columns are read from disk on request)  / => 1 1  / => 2 2  / => 3 3 -/ see http://code.kx.com/wiki/JB:KdbplusForMortals/contents for more +/ see http://code.kx.com/q4m3/14_Introduction_to_Kdb+/ for more  ////// Frameworks //////  / kdb+ is typically used for data capture and analysis.  / This involves using an architecture with multiple processes  / working together.  kdb+ frameworks are available to streamline the setup -/ and configuration of this architecuture and add additional functionality +/ and configuration of this architecture and add additional functionality  / such as disaster recovery, logging, access, load balancing etc.  / https://github.com/AquaQAnalytics/TorQ  ```  ## Want to know more? -* [*q for mortals* q language tutorial](http://code.kx.com/wiki/JB:QforMortals2/contents) -* [*kdb for mortals* on disk data tutorial](http://code.kx.com/wiki/JB:KdbplusForMortals/contents) -* [q language reference](http://code.kx.com/wiki/Reference) +* [*q for mortals* q language tutorial](http://code.kx.com/q4m3/) +* [*Introduction to Kdb+* on disk data tutorial](http://code.kx.com/q4m3/14_Introduction_to_Kdb+/) +* [q language reference](https://code.kx.com/q/ref/)  * [Online training courses](http://training.aquaq.co.uk/)  * [TorQ production framework](https://github.com/AquaQAnalytics/TorQ) | 
