Can Power BI connect to DynamoDB?
Not directly. Power BI has no native DynamoDB connector, because AWS ships no ODBC or JDBC driver for DynamoDB itself. You connect indirectly: query the table through Amazon Athena — via a federated query or a data export to S3 — using the Athena ODBC connector, or use a third-party ODBC driver such as CData's.
Why there is no direct connector
DynamoDB is a NoSQL API-driven service, not a SQL endpoint, and AWS does not provide an ODBC/JDBC driver for it. Power BI's data sources expect SQL-style connectivity, so a bridge is needed.
Option 1: through Amazon Athena
Athena can query DynamoDB using its federated-query connector, or query data you export from DynamoDB to Amazon S3. Power BI then connects to Athena with the Athena ODBC connector in Import or DirectQuery mode.
Option 2: a third-party ODBC driver
Vendors such as CData sell ODBC drivers and Power BI connectors that talk to DynamoDB directly and expose it as a SQL-like source.
Option 3: export the data
Export DynamoDB to S3 (or CSV) and load the file into Power BI — simplest for point-in-time reporting.
What a DirectQuery refresh actually costs
The Athena connector is not a SQL engine bolted onto DynamoDB. It calls the same API you would call yourself, and the AWS connector reference is specific about when that becomes a scan:
The Athena DynamoDB connector supports parallel scans and attempts to push down predicates as part of its DynamoDB queries. A hash key predicate with
Xdistinct values results inXquery calls to DynamoDB. All other predicate scenarios result inYnumber of scan calls, whereYis heuristically determined based on the size of your table and its provisioned throughput.
So a report visual filtered on the partition key becomes a Query. Everything else becomes scans. The eight operators that do push down (AND, EQUAL, NOT_EQUAL, LESS_THAN, LESS_THAN_OR_EQUAL, GREATER_THAN, GREATER_THAN_OR_EQUAL, IS_NULL) push into a filter expression, which DynamoDB applies after reading the items. Pushdown trims what crosses the wire, not what you pay for.
Price that. DynamoDB rounds a Query or Scan to 4 KB on the cumulative size of the items it evaluated, which puts one scanned GiB at 262,144 strongly consistent read units, or 131,072 eventually consistent ones. At the us-east-1 on-demand rate behind our pricing calculator, $0.000000125 per read request unit:
| Table size | One full scan | Refreshed hourly for 30 days | Refreshed every 15 minutes |
|---|---|---|---|
| 5 GB | $0.08 | $58.98 | $235.93 |
| 20 GB | $0.33 | $235.93 | $943.72 |
| 50 GB | $0.82 | $589.82 | $2,359.30 |
Read units only. Athena, the connector's Lambda function and its S3 spill bucket bill on top, and the floor can sit above the data volume: "Empty tables and very large tables which have a sparse amount of partition keys might see some additional RCUs charged beyond the amount of data scanned."
That is the case for Import mode on a schedule. A DirectQuery report left open by ten people re-runs those scans on every click.
Go deeper
See export DynamoDB to CSV. For the SQL-shaped questions themselves — JOIN, GROUP BY, aggregates — DynoTable's SQL Workbench runs them directly against your tables, no ODBC bridge required. Download DynoTable to query and export your table data.
References
- Use the Amazon Athena Power BI connector — Amazon Athena User Guide
- Amazon Athena DynamoDB connector — Amazon Athena User Guide
- DynamoDB data export to Amazon S3: how it works — Amazon DynamoDB Developer Guide
- DynamoDB read and write operations — Amazon DynamoDB Developer Guide
Last verified 2026-07-13 against the official AWS documentation linked above.
Connector behavior and the scan-cost table verified 2026-07-28: the quoted sentences come from the Athena connector reference and the DynamoDB Scan page as fetched that day, and the dollar figures use the us-east-1 on-demand read rate in our synced pricing table (AWS pricing API publication 2026-07-22).