2022-08-16    Share on: Twitter | Facebook | HackerNews | Reddit

Reading CSV With Obsidian Dataview and Dataviewjs

The obsidian-dataview plugin allows reading data from the notes in the vault and data files such as CSV. Both dataview and dataviewjs can be used for that purpose. I'm more fluent in using dataview therefore I will dedicate more space to this solution

Reading with dataview

Assume, that you have a CSV file my_data.csv with contents:

eventDate;eventName
2022-01-02;Birthday
2022-01-07;Lake excursion
2022-01-12;River
2022-01-13;Sunrise
2022-01-13;Sunset
2022-01-16;Mountain Excursion
2022-01-21;Evening at home

Reading tabular data You can read and display the contents of that file as a table using dataview code:

 ```dataview
 TABLE WITHOUT ID eventDate, eventName
 FROM csv("my_data.csv")
 ```

In this specific case, one column contains dates and you might want to display data in a specific format. In my case - I needed dates in YYYY-MM-DD format. You can do date formatting on reading using dateformat:

 ```dataview
 TABLE WITHOUT ID dateformat(eventDate, "yyyy-MM-dd") As eventDate, eventName
 FROM csv("my_data.csv")
 ```

Reading with dataviewjs

For reading data from csv with dataviewjs you can use someting along this lines:

 ```dataviewjs
 const myData = await dv.io.csv("my_data.csv");
 dv.table(["eventDate", "eventName"], myData)
 ```

Reading CSV files with dataviewjs is also possible. From the official documentation:

Load a CSV from the given path (a link or string). Relative paths will be resolved relative to the optional origin file (defaulting to the current file if not provided). Return a dataview array, each element containing an object of the CSV values; if the file does not exist, return undefined.

await dv.io.csv("hello.csv") => [{ column1: ..., column2: ...}, ...]

References:

Credits:

up: obsidian