Budget with Dataview

Want more control over your project budget in Obsidian? This guide shows how to use the Dataview plugin to track costs, analyze spending, and build flexible budget overviews, all inside your notes. From linking invoices to querying by category or project section, budgeting in O3PM with Dataview gives you structure without switching tools.

Intro

This article is a continuation of Budgeting in O3PM.

We now explore how to achieve budgeting in Obsidian using the powerful Dataview plugin.

While Bases is an inbuilt visual tool, Dataview gives us unmatched flexibility to structure, filter, and process budget data in more advanced ways.

Budgeting with Dataview in O3PM

Dataview in a Nutshell

Dataview is a popular community plugin that turns your Obsidian vault into a queryable database. With over 3 million downloads and a thriving ecosystem, it’s a good choice for power users. That is until the release of its successor Datacore.

Unlike Bases, Dataview recognizes both frontmatter properties and inline fields. Inline fields are especially helpful when you want flexibility in formatting or annotating your data.

  • weight:: 80kg
    • Had something extra and a lot to drink. Shouldn’t take this increase too serious.

The double colons (::) tell Dataview that this is a queryable field.

Step 1: Gathering

Sources

Typical sources of budget information are estimates, offers, and invoices. Once received, we extract the relevant data and store it in our vault.

Like in Budget with Bases listed with all their pros and cons, we have two choices to document the budget information:

  1. Inside the object note
  2. In a separate “cost” note

For Dataview, I recommend a separate cost note. Why? Because in addition to Bases’ direct data-queries, Dataview offers relational data querying.

Properties

Here’s a set of properties I’ve found useful across multiple projects:

  • net — Cost amount
  • responsible — Person in charge of the entry
  • source — Origin of cost: estimate, offer, invoice
  • status — Status of the cost (e.g. planned or paid)
  • account — Financial account for booking
  • category — Cost category (e.g. external services, material)
  • section — Optional sub-cluster (e.g. building, team, phase)
  • transfer_date — When the cost is expected to hit the budget

You’re free to rename these properties, just make sure your queries reflect the changes.

Example: Cost Properties in Object Note

Step 2: Querying

In lieu to Bases, we have a bit more flexibility in Dataview.

The Query

Explanation

  • table without ID — Creates a plain table without unique row IDs.
  • cost_info.section AS Section — Grabs the section property from the nested cost_info object.
  • file.link AS "Cost Carrier" — Links to the file containing the budget entry.
  • replace(...) — Formats the amount and adds a € sign with German-style decimal commas.
  • short — An additional description or label field, if available.
  • cost_info — Displays the full cost object for reference.
  • FROM [[PRJT - Sample Project]] — Limits the query to files tagged with this project.
  • WHERE cost_info — Ensures only files with cost info are shown.

Output

The Query generates a simple table, that is ready for the Interface-Step.

Step 3: Interfacing

As noted in The Basics of Interfaces, interfaces are important. Even the cleanest cost report is useless if you can’t share it efficiently with others.

Dataview doesn’t have native fancy copy or export functions like Bases, but it does have its interface options.

Copy and paste

Dataview tables can be copied via good old Ctrl + C and pasted into your spreadsheet app.

Copy

Select the table

Copy the content

    Paste

    Paste the content into a spreadsheet.

    Ctrl + V preserves formatting

    Ctrl + Shift + V pastes plain text

        In either case, some cleanup is necessary.

        Cleanup

        Simply by copying a Dataview table over into a spreadsheet leads to list-values being put into separate cells.
        To circumvent this, we need some manual labor to clean up the tables by copying values into single cells and formating the table:

        Table to CSV Exporter

        If we want to export larger or more tables, the Obsidian community also offers here a solution: The Table to CSV Exporter plugin
        The plugin adds a new command: “Export table to CSV file”. This will only work when your currently active pane is in reading mode. When the command is executed a .csv file is written according to the settings in your vault’s main folder. This CSV file contains the data of the first table in the reading mode of the note.

        The plugin works on mobile, too.

        Note: It may have issues with signs, so some post-export cleanup or query modifications might be needed.

        Outro

        Dataview brings depth and flexibility to budgeting in O3PM.
        While it requires a bit more setup than Bases, it pays off in precision, custom views, and dynamic queries.

        By storing your budget data close to your work, and using Dataview to extract insight, you stay in control of both the big picture and the fine details — without leaving Obsidian.

        If you want to see a live setup, check out the O3PM Sample Vault on GitHub


        This article was written by:


        Comments

        Leave a Reply

        Your email address will not be published. Required fields are marked *