Skip to content

classmethod/athena-query

Folders and files

NameName
Last commit message
Last commit date

Latest commit

a70170d · Apr 1, 2024
Nov 9, 2023
Mar 6, 2023
Mar 13, 2024
Mar 13, 2024
Nov 30, 2022
Jan 31, 2023
Nov 29, 2022
Nov 30, 2022
Mar 31, 2024
Apr 1, 2024
Apr 1, 2024
Jan 26, 2023
Nov 30, 2022

Repository files navigation

Athena-Query

Release CI npm version GitHub license

Athena-Query provide simple interface to get athena query results.

Athena-Query was inspired and forked from athena-express.

Warning Athena-Query support aws-sdk v3 only. So if you use aws-sdk v2, we recommend to use athena-express.

Installation

npm install @classmethod/athena-query @aws-sdk/client-athena
yarn add @classmethod/athena-query @aws-sdk/client-athena

Usage

Basic Usage

Athena-Query provide query() method as async generator function. So we can use it with for await () {},

import { Athena } from "@aws-sdk/client-athena";
import AthenaQuery from "@classmethod/athena-query";

const athena = new Athena({});
const athenaQuery = new AthenaQuery(athena);

for await (const item of athenaQuery.query("SELECT * FROM waf_logs;")) {
  console.log(item); // You can get all items across pagination.
}

And if you break loop out, Athena-Query don't call unnecessary pages of get-query-result api.

If you want to reduce the size of the queried data rather than the retrieved data, you can use the LIMIT clause.

Options

When you initialize AthenaQuery class, you can pass options to specify the query target.

const athenaQuery = new AthenaQuery(athena, {
  db: "test-db",
  workgroup: "test-workgroup",
  catalog: "test-catalog",
  outputLocation: "s3://path/to/query/bucket/",
});

When you query to Athena, you can pass options for query.

const resultGen = athenaQuery.query(
  `
    SELECT * FROM waf_logs
    WHERE name = ? AND groupId = ? AND score > ?;
  `,
  {
    executionParameters: ["test", 123, 456n],
  },
);

Packages

No packages published

Contributors 8