8 ms·
Very interesting. Seems conceptually (and implementation wise too) quite similar to https://trino.io/docs/current/connector/googlesheets.html https://trino.io/d
by hashhar 3y ago
Very interesting. Seems conceptually (and implementation wise too) quite similar to https://trino.io/docs/current/connector/googlesheets.html https://trino.io/docs/current/connector/googlesheets.html.
Where are you storing the structure of the sheet though? Is it re-evaluated on each query? I am thinking about cases where a column header is renamed or the data types in a column are changed?
- tarasyarema 3y agoOh, that's actually cool and thanks for the reference. It's using a temporary cache that re-uses the latest data from the sheet (checking if it was updated) so that's why the subsequent queries should be much faster than the initial one. Now about the headers, it's indeed an issue that I need to figure out, as there are some sheets that have weird structures and it would be nice to find an easy UXsy way to preview the sheet data and say "select from this range" or "these are the headers".
- hashhar 3y ago> it would be nice to find an easy UXsy way to preview the sheet data and say "select from this range" or "these are the headers". Indeed. Defining the UX when the only UI you have is a SQL query is a bit challenging. Very impressive project indeed and solves a real problem a lot of people and companies have. I wish you luck.
- tarasyarema 3y agoWill keep the site posted on this, but definetly is one of the things that worries me the most as of now. Thanks for the comment!!
- cldellow 3y agoGoogle Sheets has an extensibility system: you write a React app that renders as a sidebar inside the sheets UI. This exposes a few additional API endpoints vs the vanilla sheets API. For example, you can determine the selected range, when a user has edited a value, changed sheets, etc. We use this in our add-on to help people select a range. Sounds like it might help for you, too! The extensibility system also lets you show a modal dialog, which we use for previewing API calls to third party HTTP servers -- sounds like a similar thing could work well for you, too. You could also look at supporting named ranges if you don't already, so people can refer to a range as `FinanceData` instead of `Sheet 1!A3:F90`