|
|
|
|
|
by anentropic
856 days ago
|
|
This looks very interesting to me, I'm building a BI reporting tool in my company at the moment, but browsing the docs I felt what I was missing was a clear overview of the architecture. e.g. you say above that Evidence takes templated SQL and runs it in DuckDB WASM and then in the docs there's various https://docs.evidence.dev/core-concepts/data-sources/#suppor... like Snowflake, MySQL etc I guess I am wondering where and when the queries are happening If I set up a Snowflake data source is it doing a build-time import (like in the new Observable, from this thread) into DuckDB? or DuckDB is connecting to the sources via extensions? Where does the data live? My question is really just "how does it work?" and the "What is Evidence? > How does Evidence work?" section on the docs homepage doesn't really answer that at all, it's just a list of things that it does. |
|
That’s good feedback on the docs. The tool has evolved pretty dramatically from where it started and we should revisit those diagrams.
Evidence is a static site generator.
Queries against your sources happen at build time and save to parquet.
Queries against the built in DuckDB web assembly instance happen at runtime.
Sources (snowflake, Postgres, csv files etc.) run at build time.
Pages in evidence are defined as markdown files. You write markdown, components, and code fences.
SQL code fences in pages run in the built in duck db wasm instance which can query across the results from all of your sources. These queries run in the client. We call this feature universal SQL, and it’s quite new.
You can read about universal SQL here if it’s of interest. https://evidence.dev/blog/why-we-built-usql/
You can template those SQL queries to accept input from input components. This enables you to build extremely performant client side interactions.
Under the hood, Evidence is built on svelte and compiles to a svelte kit application, and you can extend your project with custom svelte components.
Hope that’s helpful — we’re very active in our slack if you ever want to say hi!