Lekce 5 - Datové formáty XML a SQL Nové
V minulé lekci, Datové formáty CSV a JSON, jsme se věnovali nejrozšířenějším formátům pro datovou analýzu – CSV a JSON.
V dnešním tutoriálu datové analýzy budeme pokračovat popisem nejčastějších formátů souborů pro datovou analýzu.
XML
XML (Extensible Markup Language – rozšiřitelný
značkovací jazyk) je textový formát pro uchovávání a přenos
strukturovaných dat. Používá takzvané tagy, což
jsou textové značky ohraničené špičatými závorkami <
a
>
. Každý tag má svůj význam a obvykle tvoří dvojici –
například <title>
a </title>
– mezi
které se zapisuje konkrétní hodnota. Díky tomu můžeme přesně popsat
význam každé části dat. XML se často používá v podnikových systémech,
datových přenosech a při výměně dokumentů mezi různými aplikacemi.
XML soubory bývají větší než například JSON a jejich zpracování může být pomalejší. Proto se XML nehodí pro práci s obrovským množstvím dat, kde je rychlost a efektivita klíčová.
Struktura XML
XML má podobu stromové struktury. Tato hierarchie umožňuje logicky a přehledně uspořádat i velmi složité datové celky. Opět si ukažme příklad s uložením dvou osob, tentokrát do XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <osoby> <osoba> <jmeno>Jan</jmeno> <prijmeni>Novák</prijmeni> <ulice>Příkrá 3</ulice> <mesto hlavni="ne">Vlašim</mesto> <psc>25801</psc> </osoba> <osoba> <jmeno>Jana</jmeno> <prijmeni>Příhodová</prijmeni> <ulice>U Hrušní 15</ulice> <mesto hlavni="ne">Benešov</mesto> <psc>25601</psc> </osoba> </osoby>
Vidíme, že XML je nejčitelnější, ale také nejupovídanější. První
řádek obvykle definuje verzi a kódování souboru. Dále následuje
jediný kořenový element. Element je obvykle definován
otevírací a zavírací značkou, které píšeme pomocí špičatých
závorek, např. <znacka>
a </znacka>
, kde
značka začínající lomítkem je zavírací. Uvnitř těchto značek se
nachází obsah elementu, což jsou buď další zanořené
elementy, nebo text. Data můžeme psát rovněž do atributů
elementu, např. město výše má atribut hlavni
.
Když má element jen málo dat, lze je všechny zapsat jen do jeho atributů. Element nemusí mít pak žádný obsah. Takový element se můžeme rozhodnout definovat jako nepárový a nemá pak zavírací značku. Jeho značka pak musí končit lomítkem:
<web url="www.itnetwork.cz" />
Ukázka XML souboru
Opět si vyzkoušíme otevřít nějaký vzorový dataset, tentokrát z výukové dokumentace Microsoftu. Vzhledem k tomu, že se opět jedná o rozsáhlejší soubor, ukážeme si jen jeho část. Soubor si nejprve zkopírujeme:

Vysvětlíme si, co jednotlivé značky znamenají:
<catalog>
– kořenový element celého dokumentu, obsahuje všechny knihy,<book>
– záznam jedné knihy, má atribut id (např. id="bk101"),<author>
– autor knihy,<title>
– název knihy,<genre>
– žánr knihy,<price>
– cena v dolarech,<publish_date>
– datum vydání,<description>
– stručný popis obsahu knihy.
Ve VS Code si otevřeme složku, kam chceme soubor vložit:

Ve složce vytvoříme nový soubor:

Soubor nazveme books.xml
:

A zkopírovaná data do něj vložíme:

Vložení a úprava dat v souboru books.xml
ve Visual Studio
Code nám umožňuje přehledně pracovat s celou strukturou dokumentu, snadno
odhalit chyby a mít kontrolu nad každým prvkem. Opět vidíme, že obsah je
přehledně obarvený.
XML entity
Jelikož XML používá ke své syntaxi znaky
<, >, &
, nemůžeme je jen tak zapsat do dat elementů.
Znaky je potřeba nahradit za tzv. entity (např. <
zapíšeme v
datech jako <
nebo jako <
). Jinak
může dojít k chybné interpretaci struktury XML.
Pokud by měla osoba v našem ukázkovém XML např. místo jména
přezdívku Joker ]:>
, museli bychom pravou špičatou závorku
zapsat takto:
<jmeno>Joker ]:></jmeno>
Entitami lze kromě speciálních znaků používaných v XML syntaxi zapsat i další znaky, které se jinak špatně píšou, např. copyright ©. Ukažme si základní entity, které v XML datech použijeme, chceme-li zapsat speciální znak:
Znak | Popis | Zástupné entity |
---|---|---|
nedělitelná mezera |   | |
< | menší než | < < |
> | větší než | > > |
& | ampersand | & & |
" | dvojitá uvozovka | " " |
' | jednoduchá uvozovka | ' ' |
¢ | cent | ¢ ¢ |
£ | libra | £ £ |
¥ | yen | ¥ ¥ |
€ | euro | € € |
© | copyright | © © |
® | registrovaná známka | ® ® |
™ | trademark | ™ ™ |
Kompletní seznam všech takových značek nalezneme např. na Wikipedii.
SQL
Strukturovaný dotazovací jazyk SQL (Structured Query
Language) se používá k práci s daty uloženými v
databázích – umožňuje vybírat, upravovat i
ukládat data pomocí přesně definovaných dotazů. Tabulky v
databázi mají sloupce a řádky, jako např. tabulky v Excelu. S tímto formátem se v kurzu seznámíme
později, až budeme pracovat právě s databázemi. Prozatím si ukažme jen
to, jak takový datový soubor vypadá. Jedná se o sérii příkazů
INSERT
, které do databáze vloží jednotlivé řádky. Pro naše
osoby by vypadal SQL soubor následovně:
INSERT INTO osoby (jmeno, prijmeni, ulice, mesto, psc) VALUES ('Jan', 'Novák', 'Příkrá 3', 'Vlašim', 25801), ('Jana', 'Příhodová', 'U Hrušní 15','Benešov', 25601);
Nad příkazy může být ještě kód pro vytvoření databázové tabulky a další nastavení, může vypadat např. takto:
CREATE TABLE IF NOT EXISTS osoby ( id SERIAL PRIMARY KEY, jmeno VARCHAR(50) NOT NULL, prijmeni VARCHAR(50) NOT NULL, ulice VARCHAR(100) NOT NULL, mesto VARCHAR(50) NOT NULL, psc INTEGER NOT NULL );
VARCHAR
a INTEGER
jsou datové typy, jedná se o
text (v závorce se definuje maximální délka) a celé číslo.
V další lekci, Databáze a tabulky, se seznámíme se základní strukturou databázových tabulek.