When I first started out in Finance, there was one undisputed hero: Excel. We pushed it to its limits: macros, array formulas, custom-built VBA scripts, and then some. We used it for financial modelling, data cleansing, forecasting, even as a poor man's database. We demanded more power, more rows, more reliability. Eventually, Microsoft responded.

Power Query and Power Pivot were born, not as replacements for Excel, but as bolt-ons to meet the growing hunger for more robust data processing within the familiar spreadsheet interface. We wanted Excel to do more, and Microsoft delivered. But while these tools were revolutionary, they were still built around the same core idea: a spreadsheet interface.

Now, years later, we're in the age of big data and AI. And the tool that feels like Excel's true successor isn't even from Microsoft. It's DuckDB.

Why DuckDB Is the Next Logical Step

DuckDB is a fast, in-process SQL OLAP database. It reads Parquet and CSV files directly, supports complex SQL queries, and integrates with tools like Python and R, but what's game-changing is that it runs entirely on your local machine with no setup, no cloud dependency, and no IT gatekeeping.

If DuckDB had existed back during my early finance days, I probably wouldn't have jumped ship to IT and gone deep into data engineering. That leap happened mostly because I outgrew the tools available to me as a finance professional. I needed versioning, scale, traceability, and the ability to work with more than a million rows, something Excel simply couldn't provide.

The analogy
📊

Excel

~1M rows, formula-based logic, crash-prone with big data, UI-first

🦆

DuckDB

Billions of rows, SQL-based, runs locally, tiny file, no server needed

A Foot in Both Worlds, Until Now

These days, I'm fully immersed in the tech world. But I look back and see finance professionals today doing what data analysts are doing (data wrangling, reconciliations, KPI tracking) all centred around large, complex datasets. The only difference? Finance folks are still doing it in Excel.

Imagine reconciling intercompany transactions from two 5-million-row CSVs, a task that would crash Excel but is a simple join query in DuckDB.

⚠️

The honest truth: Relying on Excel's row limits or multi-tab nightmares in a big data world is like using a flip phone in the age of smartphones. You can do it, but you're making life harder for yourself.

Power Query Is Great, But It's Not a Database

I have enormous respect for Power Query. It's one of the best data ingestion and transformation tools available, especially for non-coders. But, and this is key, it's not a database. It doesn't store data. It doesn't manage data in a structured, ACID-compliant way. You can't write data back to it in a controlled manner.

DuckDB changes that. It's not just read-only. You can write data back. You can insert, update, delete, and store data in tables, just like a real database. It supports transactions, joins, window functions, and even local Delta Lake-style workflows using Parquet files.

💡

Why this matters emotionally: Accountants like to own the numbers. Power Query lets you look at data. DuckDB lets you own it, at scale.

How it compares
Feature Excel Power Query DuckDB
Max rows (practical) ~1 million ~10 million Billions
Write data back
Runs locally, no server
Logic separate from data Partial ✓ (.sql files)
ACID transactions
Reads Parquet/CSV directly
Version-controllable logic Partial ✓ (plain .sql)

It's Simple Enough to Start Today

Here's what working with DuckDB can look like. No VBA. No Power Query GUI. Just clean, understandable SQL:

DuckDB SQL · invoices.sql
-- Group invoices by customer, total them up
SELECT CustomerID,
       SUM(InvoiceAmount) AS total_invoiced
FROM 'invoices.parquet'
GROUP BY CustomerID;

And even if you've never written SQL before, AI tools like ChatGPT or GitHub Copilot can help you write queries just by describing what you want. The learning curve has never been lower.

1

Install DuckDB

Visit duckdb.org and follow their 5-minute install guide for Python or the command line. Or ask IT to set it up.

2

Get an IDE

Install DBeaver. It's free, connects to DuckDB, and looks just like a professional database client. You can point it at your .db file directly.

3

Point it at your data

Have a CSV or Parquet file? Just reference it in your SQL query. DuckDB reads it directly, no importing required.

4

Ask AI to help write your queries

Describe what you want in plain English to ChatGPT. It'll write the SQL. You review, tweak, run.

Why IT will love it too

Safe by Design

One of DuckDB's biggest hidden advantages is its isolation. It doesn't touch production systems. It doesn't connect to the company-wide SQL Server. And that's exactly why it's safe.

By running locally and only interacting with the user's own .db file or flat files, DuckDB avoids the typical "oops" moments that make IT nervous: no accidental deletes from a shared database, no broken relationships, no unintended orphan records. Your changes affect your file, and nothing more.

And since DuckDB files are tiny (just like Excel workbooks), versioning is simple. SharePoint or OneDrive can track every saved version of your .db file. Need to roll back to yesterday's state? Just click "Restore previous version." It's audit-ready without needing DevOps.

Separating Logic from Data: SQL's Hidden Strength

One of the most overlooked benefits of working with SQL instead of Excel is the clear separation between logic and data. In SQL, your transformation and aggregation logic lives in a separate .sql file. The data lives in a database or flat file. That makes audits much simpler. You can just send someone the SQL script and the data source.

This avoids the classic Excel scenario: "What the heck is wrong with this formula?", only to discover someone accidentally deleted a row, broke a reference, or altered cell A1. SQL removes those risks entirely.

Your entire audit trail in one file · reconciliation.sql
-- AR Reconciliation: Month End
-- Author: Maha | Last updated: 2025-06-01
-- Data source: /data/ar_export_jun2025.parquet

WITH invoiced AS (
  SELECT CustomerID, SUM(Amount) AS total_invoiced
  FROM 'invoices.parquet'
  WHERE YEAR(InvoiceDate) = YEAR(CURRENT_DATE)
  GROUP BY CustomerID
),
paid AS (
  SELECT CustomerID, SUM(Amount) AS total_paid
  FROM 'payments.parquet'
  GROUP BY CustomerID
)
SELECT i.CustomerID,
       i.total_invoiced,
       COALESCE(p.total_paid, 0) AS total_paid,
       i.total_invoiced - COALESCE(p.total_paid, 0) AS outstanding
FROM invoiced i
LEFT JOIN paid p ON i.CustomerID = p.CustomerID
ORDER BY outstanding DESC;
The bigger picture

The Rise of the Digital Accountant

Let's be clear: in 2025, digital skills are no longer a "nice-to-have" for accountants. They're essential. AI can now generate reconciliations, explain SQL code, and automate tedious processes. The differentiator isn't who can use Excel faster. It's who can work with data at scale, and who can automate tedious workflows.

DuckDB gives accountants a serious seat at the data table, without needing to become full-fledged engineers. And best of all, the skills you gain in DuckDB don't just live inside one tool. They transfer. To PostgreSQL. To Snowflake. To SQL Server. To Databricks. You're not learning in isolation. You're building a foundation for long-term growth.

If Excel is like driving a car with manual gears, DuckDB is like piloting a Tesla on autopilot. You're still in control, but now you can go further, faster, and safer.

Maha Kepakisan

So if you're an accountant tired of stretching Excel to its breaking point, give DuckDB a try. You might just fall in love with data again.