You can use existing blocks as the source for a new block. This means you can query across databases and different source types. For example:

Here's an example with three blocks:

block1 - Google Sheets

select some_col, another_col
from {{some_sheet}}

block2 - Postgres

select some_col, post_col
from postgres.table

block3 - MySQL

select some_col, my_col
from mysql.table

block4 "Sheets / CSV / Block"

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c5426b62-2b63-481a-a774-ca420919b7a2/Untitled.png

select a.some_col, a.another_col, b.post_col, c.my_col
from
block1 as a inner join
block2 as b on a.some_col = b.some_col left join
block3 as c on a.some_col = c.some_col

<aside> 💡 We use SQLite as the database engine when querying blocks.

</aside>

Demo

https://youtu.be/x2rQoJVmOus

<aside> 💡 Please note, large datasets will slow down performance. You can speed things up by only selecting the necessary columns in the Block (e.g. list the columns you need instead of SELECT *) and by using a WHERE clause to filter for just the rows you need

</aside>