DuckDB SQL Python Pandas Data
Během krátké doby si DuckDB dokázala získat značnou popularitu jako databáze pro analytické zpracování dat. A zároveň si kolem sebe vytvořila širokou komunitu, která nadšeně propaguje její výhody všude, kde se dá.
Co je DuckDB
DuckDB je rychlá databáze díky které můžete analyzovat data na vašem laptopu. A nejen na něm. Funguje na všech operačních systémech, můžete ji snadno propojit s programovacími jazyky a navíc je zdarma.
Další její výhodou je rychlá instalace - stačí stáhnout a spustit jediný soubor. Na rozdíl od tradičních databází, není nutné žádné nastavování.
Prostě na příkazovém řádku spustíte soubor duckdb
a můžete začít.
Rychlá analýza
DuckDB je optimalizovaná pro datovou analýzu (OLAP) a čištění a úpravu dat (ETL). Její architektura je přizpůsobená výše uvedeným potřebám a proto není vhodná pro transakční systémy (OLTP).
V porovnání např. s pythonovskou knihovnou Pandas má několik výhod:
- Zvládne větší datové sady.
- Je rychlejší.
- Umí lépe pracovat s pamětí.
- Nabízí API pro spolupráci s programovacími jazyky.
- Její přátelské SQL je pro mnoho uživatelů příjemnější než syntaxe Pythonu a Pandas.
Sami tvůrci o ní mluví jako o SQLite pro datovou analýzu.
Bezproblémový import a export
Mnoho uživatelů určitě potěší široká podpora různých datových formátů pro import a export - např.:
- CSV,
- Excel,
- JSON,
- Parquet,
- přímé napojení na databáze (RDBMS)
- a další.
Většinu těchto formátů dokáže načíst automagicky, to znamená, že stačí zadat cestu k souboru. Umí načítat i externí data, např. z cloudových úložišť nebo přes HTTPS.
Přátelské SQL
Autoři kladou důraz na tzv. friendly SQL.
DuckDB standardní SQL, které znáte z ostatním databázových systémů, rozšiřuje a přináší navíc další, uživatelsky příjemnou syntaxi.
Následující SQL jsou z pohledu DuckDB stejná:
SELECT *
FROM 'zoo.csv'
LIMIT 3;
FROM 'zoo.csv'
LIMIT 3;
Ano, opravdu v druhém příkladu chybí SELECT
!
Když ho vynecháte, DuckDB to chápe jako SELECT *
a vybere všechny sloupce.
Pokud máte pocit, že je logičtější začínat FROM
, DuckDB vám ráda vyhoví.
FROM 'zoo.csv'
SELECT *
LIMIT 3;
Data nemusíte načítat lokálně, ale rovnou z internetu:
SELECT *
FROM 'https://www.lovelydata.cz/media/files/zoo.csv'
LIMIT 3;
Funkce
Následující dvě SQL jsou z pohledu DuckDB stejné:
SELECT
nazev_cz,
lower(nazev_cz) AS "Název (malá písmena)"
FROM 'https://www.lovelydata.cz/media/files/zoo.csv'
LIMIT 3;
SELECT
nazev_cz,
(nazev_cz).lower() AS "Název (malá písmena)"
FROM 'https://www.lovelydata.cz/media/files/zoo.csv'
LIMIT 3;
Databázové funkce se dají volat a řetězit pomocí tečky. Tím se podobají syntaxi např. Pythonu.
Je na uživateli, který způsob je mu příjemnější. Někomu vyhovuje vnořování funkcí do závorek, jiný zas preferuje tečkovanou syntaxi.
Alternativa Pythonu a Pandas
Pokud analyzujete data - a ani nemusíte být datový analytik nebo datový vědec - je typickým pracovním postupem načtení dat ze souboru CSV nebo jiného zdroje dat. Následuje čištění a úprava, po kterých konečně může začít samotná analýza.
V praxi se pro tyto účely často používá Python v kombinaci s knihovnou Pandas. Data se filtrují, spojují, agregují - a to vše pomocí syntaxe v Pythonu.
Jenže pro mnoho uživatelů je příjemnější toto vše provádět pomocí SQL. Také se jim nechce na svůj počítač instalovat databázový systém, protože pak často zápasí s konfigurací serveru a klienta.
S DuckDB toto vše odpadá, protože stačí spustit jediný soubor a můžete hned začít pracovat s daty.
Rozsáhlý ekosystém
I když je DuckDB relativně mladá databáze (vývoj začal v roce 2018), začíná se její komunita rozrůstat a s tím i počet různých nástrojů a integrací.
Existuje dokonce stránka Awesome DuckDB, která se tento ekosystém snaží zmapovat.
Závěrem
DuckDB šetří váš čas, protože se snadno používá a efektivně se dotazuje na jakákoli data.
Místo toho, abyste při načítání dat a dotazování využívali klasický databázový systém RDBMS, stačí použít DuckDB.
Pokud vám standardní práce v terminálu (CLI) nevyhovuje, můžete využít JDBC konektory, které dovolí využívat DuckDB spolu se standardními SQL klienty, jako je např. SQL Workbench/J, DBeaver, apod.