Last week, the Obsidian team released version 1.9 to Catalyst supporters with a long-awaited feature:
The ability to create dynamic table views using data stored in note properties.
The functionality is delivered via a new Core Plugin, Bases. While I don’t love the name, the feature is pretty great.
What is a Base and How Do I Make One?
A base in Obsidian is a database. If that sounds a little scary, don’t worry - it’s basically a way to view a set of notes based on data that is contained in the note Properties.
There are several different types of properties:
- Text - a text value
- List - multiple text values
- Number - a number value
- Checkbox - a binary value (
true
orfalse
) - Date - a value displayed as
YYYY-MM-DD
- Date & Time - a value displayed as
YYYY-MM-DDTHH-MM-SS
Properties have been around for a while, and they’ve basically been warming us up for the Bases feature, which shows a selection of notes in a Table with individual properties as columns:
You can create a new base in a couple of ways:
- You can right-click the folder you want to create the base in and select New base.
- You can open the Command Palette and select the Bases: Create new base command to create a new base in the same folder as the current note.
- You can open the Command Palette and select the Bases: Insert new base command to embed the base in the current note.
Every base is a set of views for looking at your notes. Currently there is just the Table view, though I expect new views (i.e. lists, cards, etc.) will be added shortly.
Views and Filters
For each view, you need to set a filter, which is a set of rules for which notes should be included in the view. All filters have three components:
- Property - this is where you choose what property (including implicit properties, like file path or folder) to include
- Operator - this is how you compare the conditions (i.e., is, is not, contains, greater than, etc.). This changes depending on the property you choose.
- Value - this is where you choose the value you are comparing against.
You can also create advanced filters using conjunction statements:
and
- results show only if all conditions are metor
- results show only if any conditions are metnot
- results show only if no conditions are met
Again, this is a bit simpler than it may seem. Here’s an example base of my book notes files with a simple filter of folder is Book Notes
:
The cool thing about this is that I can filter the data in the table in ascending or descending order based on any property column just by clicking on it.
Obviously, this is just scratching the surface of what Bases in Obsidian can do. Almost anything you would have previously used a Dataview query for can be converted to a Base view (with the obvious limitation of displaying tables only at this point).
It’s a great feature that many Obsidian users probably had no idea they needed.
Limitations of Bases
It’s not all puppies and rainbows, though, I’m afraid. There are some serious limitations with bases that you should be aware of.
First, it currently only supports table views. Tables are great for many use cases, but they're not ideal for everything. For example, in The Library this week, there was a discussion about recreating the On This Day feature in apps like Day One. The solution I stumbled upon listed notes from previous years in a Dataview list view, which, for that use case, is actually better (I don’t want a table in my Daily Note). I’m sure these will come in time as bases are still a beta feature, but just having table views is pretty limiting.
More importantly (to me), images are not supported. I have a workflow where I use the Book Search plugin to create a new note whenever I add book notes to my Obsidian vault, where the plugin downloads the book cover image and adds the image URL to the cover
property for the note. It doesn’t render in the note itself either, but it does in the Dataview query I’ve been using to visualize the notes in my Book Notes folder:
Sadly, in the base table view, it just shows the text that exists in the property text field.
Lastly, inline properties are not supported. This isn’t a big deal to me as I almost never use inline properties, but if you do, just know that you won’t be able to add those properties as columns in your base.
A Strong Start, But Still a Way to Go
I believe the Bases plugin is a game-changer for Obsidian users. It’s not quite fully baked yet, but that’s to be expected as it’s still in beta. There are some obvious things missing (like other view types), but you can clearly see where this is headed.
So while I’m not ready to ditch all my Dataview queries just yet, I do think I’ll be able to replace many of them quite soon.