20% off Steal the Deal With Unreal Engine Plugins For Grab
AthenaQuery
Query your game analytics data in Amazon S3 with SQL right inside the Unreal Editor: an Amazon Athena query tab, 80 Editor Utility nodes, and results straight to CSV, JSβ¦
Highlights
All 12 features βAthenaQuery brings Amazon Athena into the Unreal Editor. Your telemetry, economy logs and match results already land in S3 - now designers and analysts can ask questions of that data without leaving the editor, and turn the answers into game data.
Open Window > Tools > Alpha XP > Athena Query, pick a workgroup and database, type SQL and press Run. The query runs in the background while the editor stays responsive; the status line shows its state, the data scanned and the estimated cost. Results appear in a grid with one column per field. Export them to CSV, or save them as a DataTable asset: pick a row struct, and AthenaQuery maps the result columns to its fields by name (player_id fills PlayerId) and creates or updates the asset.
Everything the tab does is also available to Editor Utility Blueprints and Widgets. Run Query And Wait starts a query, polls it with back-off and downloads every result page; cancelling it stops the query on Athena. Run Query To Data Table does the query and the DataTable in one node - ideal for a "refresh balance data" button. Browse data catalogs, databases, tables (columns, partition keys, types) and workgroups, manage saved queries and prepared statements, and read the query history.
Result helpers convert cells to numbers, integers, bools and dates, filter and sort rows, select columns, aggregate locally, and export CSV or JSON. SQL helpers escape strings, quote identifiers, build SELECT and GROUP BY queries and write partition filters for year/month/day partitioned data, so date-range queries scan only the days you need. Estimate Query Cost shows what a query cost before you run it again.
Sign in the way your team already does: a named AWS profile (static keys, AWS IAM Identity Center / SSO, assume-role or credential_process), the default AWS credential chain, static keys or a Cognito identity pool. Get Caller Identity shows which AWS account the editor is using. Settings are stored per user, never in the project's shared config.
AthenaQuery is part of the Alpha XP AWS collection for Unreal Engine 4.27 and 5.8. It is an editor-only tool (nothing ships in your game), includes the AWS SDK for C++ prebuilt for Win64, and comes with styled HTML documentation.
Key features
- Athena Query tab: SQL editor, Run / Stop, workgroup and database pickers, results
- Run Query And Wait (latent): start, poll with back-off, download all pages, cancel
- Run Query To Data Table: one node from SQL to a saved DataTable asset
- Create DataTable From Results: columns mapped to row-struct fields by name, create or
- Start / Get / Stop Query Execution, Get Query Results (paged, typed columns), Wait For
- Catalog browsing: data catalogs, databases, table metadata (columns, partition keys),
- Named queries and prepared statements (create, get, list, update, delete, execute with
- Results to CSV (RFC 4180) and JSON, Load Results From CSV, typed cell getters, filter,
- SQL helpers: escaping, identifiers, SELECT / GROUP BY builders, year/month/day
- Cost estimate (price per TB setting), result reuse, query timeout
- Named AWS profiles (SSO included), default chain, static keys or Cognito; Get Caller
- C++ API with a native callback
Blueprint & C++ API
The API is organised into these entry points:
| Class | Type | Nodes | Use it for |
|---|---|---|---|
| AthenaQueryResultsLibrary | Function library | 24 | Working with query results: CSV / JSON export, DataTables, typed cell access, local filtering and cost helpers. |
| AthenaQueryLibrary | Function library | 15 | Configuration, identity and query-tab nodes of AthenaQuery (Editor Utility Blueprints and Widgets). |
| AthenaQuerySqlLibrary | Function library | 10 | SQL text helpers for building Athena (Trino / Presto) queries safely. |
| Async action nodes | Latent Blueprint nodes | 2 | Latent node with success / failure output pins. |
Callable runs when executed Β· Pure no exec pin, returns a value Β· LatentAsync finishes later and fires its outputs
AthenaQuery 2
| Node | Type | Available on | Description |
|---|---|---|---|
| Cancel | Async | Async | Stops waiting for this request: none of its output pins fire any more. Running queries started by a wait node are stopped on Athena too. |
| Is Finished | Async | Async | True after Cancel was called or the node finished. |
Config 4
| Node | Type | Available on | Description |
|---|---|---|---|
| Set Region(Region: String) | Callable | Static | Switches the AWS region used by every following request. |
| Set Credential Mode(Mode: Athena Query Credential Mode) | Callable | Static | Overrides the credential mode from the project settings for this editor session. |
| Is Configured() β Boolean, Problem | Pure | Static | Checks the settings and returns false with a reason when requests cannot work yet. |
| Get Default Query Options() β Athena Query Options | Pure | Static | The query options the plugin uses when a node leaves fields empty (workgroup, catalog, database, output location, reuse, max rows). |
Identity 7
| Node | Type | Available on | Description |
|---|---|---|---|
| Set Profile(Profile Name: String) | Callable | Static | Uses a named profile from ~/.aws/credentials or ~/.aws/config (static keys, SSO, assume-role or credential_process) for every following request. |
| List Profiles() β Array of String | Callable | Static | Names of the profiles found in ~/.aws/credentials and ~/.aws/config (or the files named by AWS_SHARED_CREDENTIALS_FILE / AWS_CONFIG_FILE). |
| Set Login Token(Provider: String, Token: String) | Callable | Static | Signs in to the Cognito identity pool with a token from an identity provider (Cognito Identity Pool mode). |
| Clear Login Tokens | Callable | Static | Forgets all login tokens and the cached identity. |
| Set Static Credentials(Access Key Id: String, Secret Access Key: String, Session Token: String) | Callable | Static | Uses these credentials from now on (Static Keys mode), for example temporary keys from your SSO tooling. Not saved. |
| Get Identity Id() β String | Pure | Static | The Cognito identity id, empty until credentials were resolved once (Cognito mode only). |
| Make User Pool Provider Name(Region: String, User Pool Id: String) β String | Pure | Static | Builds the identity-pool login key of a Cognito user pool: cognito-idp.<region>.amazonaws.com/<user pool id>. |
Editor 4
| Node | Type | Available on | Description |
|---|---|---|---|
| Open Query Editor | Callable | Static | Opens (or focuses) the Athena Query tab (Window > Tools > Alpha XP > Athena Query). |
| Set Query Editor Sql(Sql: String, Run Now: Boolean) | Callable | Static | Puts SQL into the Athena Query tab's editor (opening the tab), optionally running it at once. |
| Get Query Editor Sql() β String | Pure | Static | The SQL currently in the Athena Query tab's editor. |
| Get Last Editor Results() β Boolean, Results, Execution | Callable | Static | The results last shown in the Athena Query tab (empty before the first run). Returns false when there are none. |
Results 24
| Node | Type | Available on | Description |
|---|---|---|---|
| Results To CSV(Results: Athena Query Results, Include Header: Boolean) β String | Pure | Static | The results as CSV text (RFC 4180: fields with commas, quotes or line breaks are quoted, quotes doubled). NULL cells are empty. |
| Save Results As CSV(Results: Athena Query Results, File Path: String, Include Header: Boolean) β Boolean, Saved Path | Callable | Static | Writes the results to a UTF-8 CSV file. FilePath empty = a Save File dialog. Returns false when nothing was written. |
| Load Results From CSV(File Path: String) β Boolean, Results | Callable | Static | Reads a CSV file (first line = column names) back into a result table, for example an exported or downloaded Athena result. FilePath empty = an Open File dialog. |
| Results To JSON(Results: Athena Query Results, Typed: Boolean, Pretty: Boolean) β String | Pure | Static | The results as a JSON array with one object per row. |
| Create DataTable From Results(Results: Athena Query Results, Row Struct: Script Struct, Package Path: String, Asset Name: String, Row Name Column: String, β¦) β Data Table, Report | Callable | Static | Creates or updates a DataTable asset from the results. |
| Get Column Names(Results: Athena Query Results) β Array of String | Pure | Static | Column names in order. |
| Get Column Index(Results: Athena Query Results, Column Name: String) β Integer | Pure | Static | Index of a column by name (case-insensitive), -1 when missing. |
| Get Column Values(Results: Athena Query Results, Column Name: String) β Array of String | Pure | Static | Every value of one column, in row order (NULL = empty string). |
| Get Cell(Results: Athena Query Results, Row Index: Integer, Column Name: String) β Boolean, Value | Pure | Static | The text of one cell. Returns false when the row or column does not exist. |
| Get Cell As Float(Results: Athena Query Results, Row Index: Integer, Column Name: String) β Boolean, Value | Pure | Static | One cell as a float (double, real, decimal, integer columns). Returns false when missing, NULL or not a number. |
| Get Cell As Integer 64(Results: Athena Query Results, Row Index: Integer, Column Name: String) β Boolean, Value | Pure | Static | One cell as a 64-bit integer (bigint, integer, smallint, tinyint columns). Returns false when missing, NULL or not an integer. |
| Get Cell As Bool(Results: Athena Query Results, Row Index: Integer, Column Name: String) β Boolean, Value | Pure | Static | One cell as a bool (true/false, 1/0, yes/no). Returns false when missing, NULL or not a bool. |
| Get Cell As Date Time(Results: Athena Query Results, Row Index: Integer, Column Name: String) β Boolean, Value | Pure | Static | One date / timestamp cell ("2026-10-28", "2026-10-28 14:05:00.123", ISO 8601) as a UTC date time. |
| Is Cell Null(Results: Athena Query Results, Row Index: Integer, Column Name: String) β Boolean | Pure | Static | True when the cell is SQL NULL (or the row / column does not exist). |
| Get Row As Map(Results: Athena Query Results, Row Index: Integer) β Map String β String | Pure | Static | One row as a column name -> value map (NULL cells are left out). |
| Find Rows Where(Results: Athena Query Results, Column Name: String, Compare: Athena Query Compare, Value: String) β Athena Query Results | Pure | Static | The rows whose column matches (numeric comparison when both sides are numbers, else case-insensitive text). |
| Sort Results By Column(Results: Athena Query Results, Column Name: String, Descending: Boolean) β Athena Query Results | Pure | Static | The rows sorted by one column (numbers numerically, text case-insensitively, NULL last). |
| Select Columns(Results: Athena Query Results, Column Names: Array of String) β Athena Query Results | Pure | Static | A copy with only the named columns, in the given order (unknown names are skipped). |
| Append Results(A: Athena Query Results, B: Athena Query Results) β Athena Query Results | Pure | Static | Rows of B appended to A (columns are matched by name; B's extra columns are dropped). |
| Aggregate Column(Results: Athena Query Results, Column Name: String, Aggregate: Athena Query Aggregate) β Float | Pure | Static | Sum / average / min / max / count / count distinct of one column, computed locally. Non-numeric cells are skipped for numeric aggregates. |
| Estimate Query Cost(Data Scanned Bytes: Integer64, Price Per Terabyte Usd: Float) β Float | Pure | Static | Athena cost of scanning this many bytes in USD: bytes rounded up to 10 MB (the per-query minimum) x price per TB. |
| Format Bytes(Bytes: Integer64) β String | Pure | Static | Bytes as text: "512 B", "3.4 MB", "1.27 TB". |
| Format Duration(Milliseconds: Integer64) β String | Pure | Static | Milliseconds as text: "850 ms", "12.4 s", "3 min 05 s". |
| Is Terminal State(State: Athena Query State) β Boolean | Pure | Static | True for Succeeded, Failed and Cancelled. |
SQL 10
| Node | Type | Available on | Description |
|---|---|---|---|
| Escape SQL String(Value: String) β String | Pure | Static | A quoted SQL string literal: O'Brien -> 'O''Brien'. Use it for every user-provided value. |
| Quote Identifier(Name: String) β String | Pure | Static | A quoted identifier for column / table names with odd characters: player id -> "player id" (dots split db.table). |
| Make Select Query(Table: String, Columns: Array of String, Where: String, Order By: String, Limit: Integer) β String | Pure | Static | SELECT <columns> FROM <table> [WHERE ...] [ORDER BY ...] [LIMIT n]. |
| Make Partition Filter(From: Date Time, To: Date Time, Date Column: String, Year Column: String, Month Column: String, β¦) β String | Pure | Static | A partition predicate for a date range on year / month / day partition columns (Hive-style partitions such as year=2026/month=10/day=28), one (year, month, day)β¦ |
| Make In List(Column: String, Values: Array of String, Numeric: Boolean) β String | Pure | Static | column IN ('a', 'b', 'c') with every value escaped (numbers unquoted when bNumeric). Empty values = FALSE. |
| Make Timestamp Literal(Time: Date Time) β String | Pure | Static | A TIMESTAMP literal: TIMESTAMP '2026-10-28 14:05:00.000' (UTC). |
| Make Aggregate Query(Table: String, Group By Columns: Array of String, Aggregates: Array of String, Where: String, Order By: String, β¦) β String | Pure | Static | SELECT <group columns>, <aggregates> FROM <table> [WHERE] GROUP BY <group columns> [ORDER BY] [LIMIT]. |
| Is Read Only Query(Sql: String) β Boolean | Pure | Static | True for statements that only read data (SELECT, WITH, SHOW, DESCRIBE, EXPLAIN, VALUES). Comments are skipped. |
| Split Sql Statements(Sql: String) β Array of String | Pure | Static | Splits a script into statements at semicolons that are outside quotes and comments (empty statements are dropped). |
| Make S3 Location(Bucket: String, Prefix: String) β String | Pure | Static | s3://bucket/prefix/ from a bucket and a prefix (slashes normalized), for Output Location and LOCATION clauses. |
Events & delegates
Bind these in Blueprint (drag off the object β Bind Event) or with AddDynamic in C++.
| Event | Parameters | Fires on |
|---|---|---|
| On Success | Id (String), Error (Athena Query Error) | AthenaQueryIdAction |
| On Failure | Id (String), Error (Athena Query Error) | AthenaQueryIdAction |
| On Progress | Execution (Athena Query Execution) | AthenaQueryRunAction |
| On Succeeded | Execution (Athena Query Execution), Results (Athena Query Results), Error (Athena Query Error) | AthenaQueryRunAction |
| On Failed | Execution (Athena Query Execution), Results (Athena Query Results), Error (Athena Query Error) | AthenaQueryRunAction |
Project settings
Configure once under Project Settings βΊ Plugins βΊ AthenaQuery β values are saved to the project's config .ini, so they travel with the project and your build.
| Setting | Section | Type | What it does |
|---|---|---|---|
| Region | Connection | String | AWS region of your Athena workgroup and data, for example "us-east-1" or "eu-west-1". |
| Credential Mode | Credentials | Credential Mode | Where request credentials come from. Default Credential Chain or Named Profile is the common choice for the editor. |
| Profile Name | Credentials | String | Profile from ~/.aws/credentials or ~/.aws/config, for example "analytics" (Named Profile mode, or call Set Profile). |
| Identity Pool Id | Credentials | String | Cognito identity pool, for example "us-east-1:01234567-89ab-cdef-0123-456789abcdef". |
| Allow Guest Access | Credentials | Boolean | Allow unauthenticated (guest) identities before Set Login Token is called. The pool must allow guest access too. |
| Access Key Id | Credentials | String | Access key for Static Keys mode (stored in your per-user editor settings). Prefer a named profile. |
| Secret Access Key | Credentials | String | Secret key for Static Keys mode. |
| Endpoint Override | Connection | String | Custom endpoint, for example a VPC endpoint or a local emulator. Empty = the regional Athena endpoint. |
| Request Timeout Ms | Connection | Integer | Total time one API call may take, in milliseconds (queries themselves are polled and may run longer). |
| Connect Timeout Ms | Connection | Integer | Time allowed to open the connection, in milliseconds. |
| Max Retries | Connection | Integer | Automatic retries with exponential back-off for throttled and transient failures. |
| Worker Threads | Connection | Integer | Worker threads that run requests in the background (requests never block the editor). |
| Verify SSL | Connection | Boolean | Verify TLS certificates. Only disable for a local emulator. |
| Log Sdk Warnings | Connection | Boolean | Forward SDK warnings and errors to the Output Log (LogAthenaQuery). |
| Default Work Group | Athena | String | Workgroup used when a node or the tab leaves it empty. |
| Default Catalog | Athena | String | Data catalog used when a node leaves it empty. "AwsDataCatalog" is the AWS Glue Data Catalog. |
| Default Database | Athena | String | Database used for unqualified table names when a node leaves it empty, for example "game_analytics". |
| Default Output Location | Athena | String | S3 folder for query results, for example "s3://my-athena-results/editor/". Empty = the workgroup's location. |
| Result Reuse Max Age Minutes | Athena | Integer | Reuse results of identical queries up to this many minutes old (saves cost while iterating). 0 = off. |
| Poll Interval Seconds | Athena | Float | First wait between status checks of a running query; it grows up to Max Poll Interval. |
| Max Poll Interval Seconds | Athena | Float | Longest wait between status checks of a long query. |
| Max Result Rows | Athena | Integer | Rows Run Query And Wait and the query tab download at most (more rows mark the results Truncated). |
| Query Timeout Seconds | Athena | Float | Stop waiting (and cancel the query) after this many seconds. 0 = no limit. |
| Price Per Terabyte Usd | Athena | Float | Athena price per terabyte scanned in USD, used by Estimate Query Cost and the tab's status line. |
| Confirm Non Read Only Queries | Query Tab | Boolean | The query tab asks before it runs statements that are not read-only (CREATE, DROP, INSERT, ...). |
| Default Data Table Folder | Query Tab | String | Content folder the tab's Save As DataTable suggests, for example "/Game/Data/Athena". |
Options & enums
| Enum | Values |
|---|---|
| Credential Mode | Cognito Identity Pool Static Keys Default Credential Chain Named Profile |
| State | Unknown Queued Running Succeeded Failed Cancelled |
| Compare | Equals Not Equals Contains Starts With Greater Than Less Than Greater Or Equal Less Or Equal Is Null Is Not Null |
| Aggregate | Sum Average Min Count Distinct |
Compatibility
One ready-made build per engine version is included in the download β copy the one that matches your project.
| Platform | Supported in |
|---|---|
| Windows | Editor & packaged |
| Module | Type | Loading phase |
|---|---|---|
| AthenaQuery | Editor | Default |
Technical details
| Code modules | AthenaQuery (Editor), AthenaQuerySdk (External, Source/ThirdParty - prebuilt AWS SDK for C++) |
|---|---|
| Blueprints | 0 Β· C++ classes: 25 |
| Network replicated | No |
| Development platforms | Windows: Yes, Mac: No, Linux: No |
| Target build platforms | Win64 (editor only - nothing is added to packaged games) |
| Third-party software | Yes - AWS SDK for C++ 1.11.916 (Apache-2.0), in Source/ThirdParty/AthenaQuerySdk |
| Engine versions | Unreal Engine 4.27 Β· 5.8 β a build for each is included |
| C++ classes | 25 + 14 structs |
| Blueprint nodes | 51 |
| Events | 5 |
| Documentation | Documentation.html (in the download) |
| Download | AthenaQuery.zip Β· 7.7 MB |
| Version | v1.0.0 |
What's in the download
| File | What it is |
|---|---|
| AthenaQuery 4.27.zip | Plugin build for Unreal Engine 4.27 |
| AthenaQuery 5.8.zip | Plugin build for Unreal Engine 5.8 |
| Documentation.html | Documentation (open in a browser) |
Quick start
- Unzip the download and pick the build that matches your engine (4.27 Β· 5.8).
- Copy the AthenaQuery folder into your project's Plugins/ folder (create it if needed).
- Open the project, enable AthenaQuery under Edit βΊ Plugins and restart the editor.
- Fill in Project Settings βΊ Plugins βΊ AthenaQuery.
- Right-click in any Blueprint graph and search AthenaQuery β or include the public headers from C++.
- Package for your target platform (Windows).
Good to know
Editor-only tool, built for Unreal Engine 4.27 and 5.8 on Windows. Requires an AWS account; Amazon Athena bills per terabyte of data scanned and S3 stores the query results. The SDK is one DLL with a plugin-specific name, so AthenaQuery can be installed next to other AWS-based plugins. Credentials are read from your AWS profile or the default credential chain; nothing is stored in the project's shared config files. Developed and maintained by Alpha XP.
Everything included
- Athena Query tab: SQL editor, Run / Stop, workgroup and database pickers, resultsβ¦
- Run Query And Wait (latent): start, poll with back-off, download all pages, cancelβ¦
- Run Query To Data Table: one node from SQL to a saved DataTable asset
- Create DataTable From Results: columns mapped to row-struct fields by name, create orβ¦
- Start / Get / Stop Query Execution, Get Query Results (paged, typed columns), Wait Forβ¦
- Catalog browsing: data catalogs, databases, table metadata (columns, partition keys),β¦
- Named queries and prepared statements (create, get, list, update, delete, execute withβ¦
- Results to CSV (RFC 4180) and JSON, Load Results From CSV, typed cell getters, filter,β¦
- SQL helpers: escaping, identifiers, SELECT / GROUP BY builders, year/month/dayβ¦
- Cost estimate (price per TB setting), result reuse, query timeout
- Named AWS profiles (SSO included), default chain, static keys or Cognito; Get Callerβ¦
- C++ API with a native callback
Platforms
Requirements
- Unreal Engine 4.27 and 5.8
- Develop on Windows (Win64)
- Blueprints and C++
In the download
Personal
One non-commercial project
- 1 activation seat
- 1 year of updates
- One end product
- Non-commercial use
- Community support
- 14-day refund window
Commercial
Ship paid products
- 5 activation seats
- 1 year of updates
- One paid end product
- Unlimited end users
- Priority support
- Source files
- 14-day refund window
Extended
Resell & white-label
- Unlimited activation seats
- Lifetime updates
- Unlimited end products
- White-label & resell
- 1-hour SLA
- Seat-free team use
- 14-day refund window
One purchase per product, no subscription. Each licence comes with a signed key β 1 seat on Personal, 5 seats on Commercial, unlimited seats on Extended. Paid licences can be refunded within 14 days from your order page.
- v1.0.0Latest
- Unreal Engine 4.27 and 5.8
- Blueprint and C++ API, HTML documentation
Be the first to review AthenaQuery β reviews come from customers who bought it, so every one is a verified purchase.
Frequently asked
How do I get the files after paying?
Straight after checkout you land on your order page with the download button and your licence key. A receipt is emailed to you, and every order stays in My library.
Which licence do I need?
Personal β One non-commercial project. Commercial β Ship paid products. Extended β Resell & white-label. The Licences tab compares them side by side.
On how many devices can I activate it?
1 seat on Personal, 5 seats on Commercial, unlimited seats on Extended.
How long do I get updates?
Personal: 1 year of updates, Commercial: 1 year of updates, Extended: lifetime updates, counted from your purchase.
Can I get a refund?
Yes β paid licences can be refunded within 14 days, straight from your order page.
Is the download safe?
The file was scanned with ClamAV when it was published. Its SHA-256 checksum is listed under Features β In the download, so you can verify the file you receive.
Do I need an account?
No. Checkout only needs your email. Signing in keeps all your purchases, keys and downloads together in My library.
More like this
AudioLens
Real-time audio analysis: FFT spectrum, onset and beat detection, and a full set of time- and frequency-domain descriptors..
β β β β β No reviews yetTTechHarbour$14.00BlueprintTCP
BlueprintTCP lets you connect to any TCP server and exchange data entirely from Blueprints β no C++ and no networking boilerplate.
β β β β β No reviews yetTTechHarbour$12.99BluetoothLink
Bluetooth Low Energy for Unreal - scan, connect, read, write and subscribe to BLE devices on Android and iOS.
β β β β β No reviews yetTTechHarbour$11.99ClusterLink
SocketCluster realtime client for Unreal - pub/sub channels, auth engine and JSON codec, usable from Blueprints.
β β β β β No reviews yetTTechHarbour$11.99