Kurl Quickstart
This page demonstrates how to load Kurl and perform basic sync and async requests against public and authenticated endpoints.
Setup
Ensure your cloud credentials are set as environment variables, for example:
export AWS_REGION=eu-west-1
export AWS_ACCESS_KEY_ID="… "
export AWS_SECRET_ACCESS_KEY="…"
export AWS_SESSION_TOKEN="… "
.kurl:use`kx.kurl
.kurl.init`aws
.kurl.sync ("https://kx-mybucket.s3.us-east-2.amazonaws.com/test_data/data.csv";`GET;::)
export AZURE_STORAGE_ACCOUNT="..."
export AZURE_STORAGE_SHARED_KEY="..."
.kurl:use`kx.kurl
.kurl.init`azr
.kurl.sync("https://kx-bucket.blob.core.windows.net/test_data/data.csv";`GET;enlist[`headers]!enlist[enlist["x-ms-version"]!enlist["2017-07-29"]])
200i
...
.kurl.sync API and its arguments, visit the Reference page.
gcloud init
export GCP_TOKEN=$(gcloud auth print-access-token)
.kurl:use`kx.kurl
/ Call one of .kurl.init or .kurl.register
.kurl.init`gcp / .kurl.register(`oauth2; "*.googleapis.com"; "";enlist[`access_token]!enlist getenv`GCP_TOKEN)
.kurl.sync("https://bigquery.googleapis.com/bigquery/v2/projects/bigquery-public-data/datasets";`GET; ::)
200i
"{\n \"kind\": \"bigquery#datasetList\",\n \"etag\": \"IyFqxYKvltLbvNdsx9qlIQ==\",\n \"nextPageT..
Basic usage
-
To make synchronous calls, use these details in your KDB-X session:
q).kurl:use`kx.kurl // load in the module q) info:`AccessKeyId`SecretAccessKey`Token!(getenv`AWS_ACCESS_KEY_ID;getenv`AWS_SECRET_ACCESS_KEY;getenv`AWS_SESSION_TOKEN) q).kurl.sync ("https://kx-mybucket.s3.us-east-2.amazonaws.com/test_data/data.csv";`GET;::) // sync calls fails as you have not registered 403i "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Error><Code>AccessDenied</Code><Message>Access Denied.. q).kurl.register (`aws_cred;"*amazonaws.com";"";info) // register, this is an alternative to .kurl.init`aws q).kurl.sync ("https://kx-mybucket.s3.us-east-2.amazonaws.com/test_data/data.csv";`GET;::) // successful sync call 200i "sym,price,size\nFDP,1.2,100\n" -
To make asynchronous calls:
q) .kurl.async ("https://kx-mybucket.s3.us-east-2.amazonaws.com/test_data/data.csv";`GET;``callback!(`;{.debug.x:x})) .debug.x 200i "sym,price,size\nFDP,1.2,100\n" -
For public datasets (no authentication required):
.kurl:use`kx.kurl .kurl.sync ("https://api.census.gov/data/2020/dec/pl?get=NAME,P1_001N&for=state:*"; `GET; ::) 200i "[[\"NAME\",\"P1_001N\",\"state\"],\n[\"Pennsylvania\",\"13002700\",\"42\"],\n[\"California\",\"395..
Next steps
- Take a look at the Kurl examples for a deeper understanding of how it works.