kdb+ HTTP web server
Kdb+ provides a basic implementation of a web server allowing browsing tables that exist on the server, performing queries and downloading data from a web browser. Kdb+ also provides calls to pull data via HTTP. We'll examing how to do this below:
Contents
- Connect to kdb+ Web Interface
- Query kdb+ from a Web Browser
- .z.ph HTTP event handler
- HTTP Requests - Download data from an internet address into kdb+
Connect to kdb+ Web Interface
To connect to a kdb+ server:
- First make sure you know the address of the server you want to connect to.
Here we start a kdb process on our local machine port 5000 using the commandq -p 5000
- Next open your web browser and enter the host and port of the kdb process. Ours is localhost:5000,
- the left frame is a list of links to tables that exist
- the right hand side will display any of the tables you click.
Query kdb+ from a Web Browser
To send a custom query to the server we use a /?
followed by our query as shown:
If you insert a filename with the ending .csv
, .xls
or .xml
this will download a file for that query from the server in either csv/excel format.
.z.ph http event handler
When an HTTP GET request is received, the request is processed by the .z.ph event handler.
The argument it receives is a two item list of the form: ( request text ; request header )
. Here I have saved it to a variable a:
You can override this function to provide your own html interface. Here's an example where we override .z.ph to provide a qStudio like web interface:
Similarly there is a .z.pp event handler for HTTP post events.
HTTP Requests
From kdb+ we can send HTTP requests to webservers. For example we can send a request to yahoo finance servers for a csv file they provide:
Let's wrap our http get in a function and then parse our data so we get a table:
This http querying works for any type of page, even plain webpages, and could be used to query REST api's etc.