mirror of
https://github.com/Tencent/WeKnora.git
synced 2026-08-28 17:43:11 +08:00
11811f9bf8
DuckDB's st_read (spatial) only reads the first layer/sheet of a .xlsx workbook, so every sheet beyond Sheet1 was silently dropped from the DuckDB table the Data Analysis tool builds. Users trying to analyse multi-sheet workbooks could only see the first sheet. Switch to DuckDB's dedicated 'excel' extension (read_xlsx) for the actual data load, enumerate sheets via the spatial extension's st_read_meta, and UNION ALL BY NAME the rows of every sheet into one table. A synthetic __sheet_name column records the source so the LLM can still filter/aggregate per sheet; schema drift between sheets is tolerated via UNION BY NAME. If enumeration fails (older DuckDB, local filesystem errors, …) we fall back to reading the first sheet so the tool stays usable. - Install & LOAD the 'excel' extension alongside 'spatial' both at startup (internal/container) and in the offline prefetch binary (cmd/download/duckdb). - Harden sheet/path handling against single quotes. - Update the tool description so the agent knows about __sheet_name. - Add unit tests for the CREATE TABLE SQL builder covering 0 / 1 / N sheets and quote escaping. Refs: https://github.com/Tencent/WeKnora/issues/1007