I have six fairly simple CSV files containing dates, amounts, vendors, and notes. They're uploaded to Amazon S3, and I've already created a Glue database and crawler. I also tried using Bedrock with Nova Lite to generate SQL, but that means running separate queries for each file and then another query to combine everything.
My goal is to combine or query the files as one dataset and create basic visualizations of expenses by category. I'm using this as a way to learn AWS and Bedrock, so I'd prefer an AWS-based approach rather than simply uploading the files to a desktop AI application. Would Athena and QuickSight be the right tools, and is there a simpler workflow that avoids all these manual steps?
4 Answers
QuickSight is probably the most direct visualization tool for this. Point it at Athena, which can query the CSV files using the metadata created by Glue. The general flow is S3 → Glue crawler/catalog → Athena → QuickSight. You may not need to physically merge the six files if they have the same columns and are stored in a compatible layout; Athena can query them together through one table or view.
For a small personal expense dataset, Bedrock is unnecessary for the actual data processing. Use Athena for SQL and QuickSight for charts, or use DuckDB with a small Python script if the goal is simply to explore the data. Glue, Athena, and QuickSight are designed to scale to much larger workloads, so they may cost more and involve more setup than the data itself justifies. Converting the CSVs to Parquet can also reduce storage and query costs once the basic workflow is working.
Before experimenting further, set up AWS account protections and cost alerts. Enable MFA on the root account, remove any root access keys, create a separate IAM user or role for daily work, and configure an AWS Budget with notifications. Bedrock, Glue, Athena, and QuickSight can all create charges, and generated queries or repeated processing can add up unexpectedly. After that, start with a small test file and check the cost information before running the full dataset.
If you want the fewest steps while still learning AWS, make sure the six files have matching column names and data types, place them under the same S3 prefix, and let Glue catalog them as one logical dataset if possible. Query that dataset in Athena, create a view that groups expenses by category or vendor, and use the view as the QuickSight data source. You only need Bedrock if you want natural-language help writing or explaining the SQL.

That makes sense. I was blocked by a message saying the newer QuickSight experience was only available to a limited number of customers, so I wasn’t sure whether I was eligible to use it.