This is version 2.x document. 1.x document is here
Install with:
npm install athena-client
var clientConfig = {
bucketUri: 's3:https://xxxx'
}
var awsConfig = {
region: 'xxxx',
}
var athena = require("athena-client")
var client = athena.createClient(clientConfig, awsConfig)
client.execute('SELECT 1', function(err, data) {
if (err) {
return console.error(err)
}
console.log(data)
})
client.execute('SELECT 1').toPromise()
.then(function(data) {
console.log(data)
})
.catch(function(err) {
console.error(err)
})
var stream = client.execute('SELECT 1').toStream()
stream.on('data', function(record) {
console.log(record)
})
stream.on('query_end', function(queryExecution) {
console.log(queryExecution)
})
stream.on('end', function() {
console.log('end')
})
stream.on('error', function(e) {
console.error(e)
})
This module exposes the createClient
and setConcurrentExecMax
method, which execute query to AWS Athena.
Returns a client instance attached to the account specified by the given clientConfig
and awsConfig
.
Set the number of cuncurrent execution of query max. It should be set smaller than AWS Service limit
(default is 5).
Property | Default | Description |
---|---|---|
bucketUri | Required | URI of S3 bucket for saving a query results file (.csv) and a metadata file (.csv.metadata) |
pollingInterval | 1000 | Interval of polling sql results (ms) |
queryTimeout | 0 | Timeout of query execution. 0 is no timeout |
Property | Default | Description |
---|---|---|
region | Required | Your Athena and S3 region |
accessKeyId | undefined | Your IAM accessKeyId , optional |
secretAccessKey | undefined | Your IAM secretAccessKey , optional |
It will return the following result.
If you want to know more about params of queryExecution
, please refer to the aws-sdk
document
{
"records": [
{"_col0:": "1"}
],
"queryExecution": {
"Query": "SELECT 1",
"QueryExecutionId": "55571bb9-8e4e-4274-90b7-8cffe4539c3c",
"ResultConfiguration": {
"OutputLocation": "s3:https://bucket/55571bb9-8e4e-4274-90b7-8cffe4539c3c"
},
"Statistics": {
"DataScannedInBytes": 0,
"EngineExecutionTimeInMillis": 137
},
"Status": {
"CompletionDateTime": "2017-12-31T16:03:53.493Z",
"State": "SUCCEEDED",
"SubmissionDateTime": "2017-12-31T16:03:53.209Z"
}
}
}
Returns a Promise
that resolves the result of your query.
Returns a Stream
to buffer the results of your query. This method is recommended for large result sets.
// Get record one by one
stream.on('data', function(record) {
console.log(record) // {"col1": "val1", "col2": "val2"}
})
// When query succeed, this event will emit.
stream.on('query_end', function(queryExecution) {
console.log(queryExecution) // {"QueryExecutionId": "", ...}
})
stream.on('end', function() {
console.log('end')
})
stream.on('error', function(e) {
console.error(e)
})