1---2name: data3description: Analýza tabulkových dat (CSV, XLSX, JSON, Parquet, i gzip) přes DuckDB CLI. Na přirozený dotaz udělá nad datovým souborem agregace, přehledy, srovnání nebo hledání anomálií — data se nenačítají do kontextu, počítá DuckDB. Finální SQL ukládá vedle dat, takže opakovaná analýza = spuštění hotového skriptu. Trigger: "/data", "analyzuj data", "analyzuj soubor/CSV/excel", "udělej přehled z", "spočítej z dat", "co je v souboru", "najdi anomálie v datech", "agreguj".4---56# Data — analýza tabulkových dat přes DuckDB v1.078## Kdy použít9- Ad-hoc analýza datového souboru: agregace, přehledy po období/kategorii, top-N, anomálie, srovnání.10- Opakované spuštění dříve uložené analýzy nad novým exportem stejné struktury.11- Kdy NEpoužít:12 - Tvorba/editace sešitu jako výstupního dokumentu (formátování, vzorce, grafy) → skill na Excel/xlsx.13 - Data v datovém skladu (BigQuery apod.) → dotazuj přímo tam, DuckDB je na lokální soubory.14 - Nesourodé finanční modely (merged cells, hlavičky uprostřed listu) → openpyxl/Read, DuckDB čeká tabulku.1516## Vstup17- Cesta k souboru + co chceš zjistit. Bez souboru: `Glob` na *.csv/*.xlsx/*.json v CWD a zeptej se, který.1819## Workflow201. **Hledej uložený dotaz.** `Glob` na `analyzy/*.sql` vedle datového souboru. Pokud existuje dotaz odpovídající zadání, spusť ho (`duckdb -c ".read <file>.sql"`) a nepiš nový. Změnu chtěného výstupu řeš úpravou uloženého souboru, ne novým od nuly.212. **Inspekce před dotazem.** Nikdy nehádej názvy ani typy sloupců:22 ```bash23 duckdb -c "SUMMARIZE FROM '<soubor>'" # schéma + statistiky24 duckdb -c "FROM '<soubor>' LIMIT 5" # ukázka dat25 ```263. **Sémantika sloupců.** Když z názvů a ukázky není jednoznačné, co sloupec znamená (např. „Částka" — cena za kus, nebo součet řádku?), zeptej se přes `AskUserQuestion`. Nehádej — špatná domněnka = správně spočítaný nesmysl.274. **Dotaz piš do souboru, ne inline.** Založ `analyzy/<slug>.sql` vedle dat (hlavička: účel, zdrojový soubor, datum, jak spustit) a spusť přes `.read`. SQL vzniká rovnou reprodukovatelně, ne jako jednorázový `-c` string.285. **Sanity check výsledku.** Než výsledek odevzdáš, zkontroluj řádové nesmysly (marže přes 100 %, záporné počty, tržba nižší než kusy). Nesedí → upozorni a vrať se ke kroku 3, neodevzdávej „správně spočítaný" nesmysl.296. **Výstup.** Malý výsledek (do ~20 řádků) jako tabulku do chatu + 1–2 věty interpretace. Větší → `COPY (...) TO 'analyzy/<slug>.csv'` a do chatu jen shrnutí a cestu.3031## DuckDB kuchařka (ověřené gotchas)32- **XLSX:** extension `excel` (jednou `INSTALL excel`, pak se autoloaduje). Čtení: `FROM 'soubor.xlsx'` nebo `read_xlsx('soubor.xlsx', ...)`.33- **Chyba „Could not convert string … to DOUBLE":** typ odvozen z prvních řádků, dál v souboru je jiný obsah → `read_xlsx('...', all_varchar = true)` + explicitní `CAST` jen u sloupců, které dotaz potřebuje. Padá na to i `SUMMARIZE` z kroku 2 — pak `SUMMARIZE FROM read_xlsx('...', all_varchar = true)`.34- **Datum při `all_varchar`:** excelové sériové číslo → `DATE '1899-12-30' + CAST(sloupec AS INT)`.35- **České názvy sloupců** (diakritika, mezery): v SQL do uvozovek — `"Stav zásoby"`.36- **CSV/JSON/Parquet/gzip** čte DuckDB přímo (`FROM 'soubor.csv'`), u CSV s nestandardním oddělovačem `read_csv('...', delim=';')`.37- Syntaxe: duckdb.org/docs/stable/sql/introduction — při nejistotě ověř, nevymýšlej funkce.3839## Fixní pravidla (non-negotiables)40- **Nikdy nepočítej agregace „z hlavy"** ani Pythonem ad-hoc — vždy DuckDB. Důvod: reprodukovatelnost a konzistence.41- **Nikdy nesypej surová data do kontextu** (žádný `cat`/`Read` datového souboru) — do kontextu patří jen schéma, ukázka (LIMIT 5) a výsledky. Důvod: tokeny.42- **Nikdy nepřepisuj datový soubor.** DuckDB pouze čte; výstupy jen do `analyzy/`.43- **Nehádej sémantiku sloupců** — viz krok 3.4445## Output checklist46- [ ] Finální SQL uložené v `analyzy/<slug>.sql` s hlavičkou (účel, zdroj, datum, jak spustit)47- [ ] Výsledek prošel sanity checkem, případné podezřelosti explicitně flagnuté48- [ ] V odpovědi: výsledek (tabulka/cesta k CSV) + interpretace + cesta k .sql4950## Changelog51- **2026-07-23** — Vznik skillu (inspirace: LinkedIn post o DuckDB skillu). Oproti postu přidáno: ukládání SQL do `analyzy/` (reprodukovatelnost), sanity check výsledků a gotchas z testování na reálném XLSX exportu se smíšenými typy sloupců (all_varchar, excelová sériová data, české sloupce).